Skip to content

Commit ef4bf44

Browse files
KrissDrawingludtkemorgan
authored andcommitted
fix: toggle off building selection criteria (bloom-housing#5632)
* fix: add disableBuildingSelectionCriteria flag * refactor: change seed feature flags order * fix: add disableBuildingSelectionCriteria to featureFlagMap * fix: hide csv export when all jurisdiction flags are true
1 parent 595956d commit ef4bf44

7 files changed

Lines changed: 85 additions & 53 deletions

File tree

api/prisma/seed-staging.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ export const stagingSeed = async (
270270
const angelopolisJurisdiction = await prismaClient.jurisdictions.create({
271271
data: jurisdictionFactory('Angelopolis', {
272272
featureFlags: [
273+
FeatureFlagEnum.disableBuildingSelectionCriteria,
273274
FeatureFlagEnum.enableAccessibilityFeatures,
274275
FeatureFlagEnum.enableCreditScreeningFee,
275276
FeatureFlagEnum.enableHousingDeveloperOwner,

api/src/enums/feature-flags/feature-flags-enum.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Note, these are just used to keep backend and frontend in sync. We store feature flags as strings so this list might not include every flag.
33
// Keep alphabetized for readability.
44
export enum FeatureFlagEnum {
5+
disableBuildingSelectionCriteria = 'disableBuildingSelectionCriteria',
56
disableCommonApplication = 'disableCommonApplication',
67
disableJurisdictionalAdmin = 'disableJurisdictionalAdmin',
78
disableListingPreferences = 'disableListingPreferences',
@@ -55,6 +56,11 @@ export const featureFlagMap: {
5556
name: string;
5657
description: string;
5758
}[] = [
59+
{
60+
name: FeatureFlagEnum.disableBuildingSelectionCriteria,
61+
description:
62+
'When true, building selection criteria is not displayed in the listing',
63+
},
5864
{
5965
name: FeatureFlagEnum.disableCommonApplication,
6066
description:

api/src/services/listing-csv-export.service.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -975,11 +975,18 @@ export class ListingCsvExporterService implements CsvExporterServiceInterface {
975975
path: 'rentalAssistance',
976976
label: 'Eligibility Rules - Rental Assistance',
977977
},
978-
{
979-
path: 'buildingSelectionCriteria',
980-
label: 'Building Selection Criteria',
981-
format: this.buildingSelectionCriteria,
982-
},
978+
...(doAnyJurisdictionHaveFalsyFeatureFlagValue(
979+
user.jurisdictions,
980+
FeatureFlagEnum.disableBuildingSelectionCriteria,
981+
)
982+
? [
983+
{
984+
path: 'buildingSelectionCriteria',
985+
label: 'Building Selection Criteria',
986+
format: this.buildingSelectionCriteria,
987+
},
988+
]
989+
: []),
983990
{
984991
path: 'programRules',
985992
label: 'Important Program Rules',

shared-helpers/src/types/backend-swagger.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4308,7 +4308,7 @@ export interface UnitsSummary {
43084308
totalAvailable?: number
43094309

43104310
/** */
4311-
rentType?: string
4311+
rentType?: RentTypeEnum
43124312

43134313
/** */
43144314
flatRentValueFrom?: number
@@ -5017,7 +5017,7 @@ export interface UnitsSummaryCreate {
50175017
totalAvailable?: number
50185018

50195019
/** */
5020-
rentType?: string
5020+
rentType?: RentTypeEnum
50215021

50225022
/** */
50235023
flatRentValueFrom?: number
@@ -8284,6 +8284,7 @@ export enum NeighborhoodAmenitiesEnum {
82848284
}
82858285

82868286
export enum FeatureFlagEnum {
8287+
"disableBuildingSelectionCriteria" = "disableBuildingSelectionCriteria",
82878288
"disableCommonApplication" = "disableCommonApplication",
82888289
"disableJurisdictionalAdmin" = "disableJurisdictionalAdmin",
82898290
"disableListingPreferences" = "disableListingPreferences",

sites/partners/src/components/listings/PaperListingDetails/sections/DetailAdditionalEligibility.tsx

Lines changed: 51 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import React, { useContext } from "react"
22
import { t, MinimalTable, TableThumbnail } from "@bloom-housing/ui-components"
33
import { FieldValue, Grid } from "@bloom-housing/ui-seeds"
4+
import { AuthContext } from "@bloom-housing/shared-helpers"
5+
import { FeatureFlagEnum } from "@bloom-housing/shared-helpers/src/types/backend-swagger"
46
import { ListingContext } from "../../ListingContext"
57
import { getDetailFieldString } from "./helpers"
68
import SectionWithGrid from "../../../shared/SectionWithGrid"
79

810
const DetailAdditionalEligibility = () => {
911
const listing = useContext(ListingContext)
12+
const { doJurisdictionsHaveFeatureFlagOn } = useContext(AuthContext)
13+
14+
const disableBuildingSelectionCriteria = doJurisdictionsHaveFeatureFlagOn(
15+
FeatureFlagEnum.disableBuildingSelectionCriteria,
16+
listing.jurisdictions.id
17+
)
1018

1119
return (
1220
<SectionWithGrid heading={t("listings.sections.additionalEligibilityTitle")} inset>
@@ -43,50 +51,51 @@ const DetailAdditionalEligibility = () => {
4351
</Grid.Row>
4452

4553
{(listing.buildingSelectionCriteria ||
46-
listing.listingsBuildingSelectionCriteriaFile?.fileId) && (
47-
<Grid.Row columns={1}>
48-
<Grid.Cell>
49-
<FieldValue label={t("listings.buildingSelectionCriteria")}>
50-
{listing.listingsBuildingSelectionCriteriaFile?.fileId ? (
51-
<MinimalTable
52-
id="buildingSelectionCriteriaTable"
53-
headers={{ preview: "t.preview", fileName: "t.fileName" }}
54-
data={[
55-
{
56-
preview: {
57-
content: (
58-
<TableThumbnail>
59-
<img
60-
alt="PDF preview"
61-
src={listing.listingsBuildingSelectionCriteriaFile.fileId}
62-
/>
63-
</TableThumbnail>
64-
),
54+
listing.listingsBuildingSelectionCriteriaFile?.fileId) &&
55+
!disableBuildingSelectionCriteria && (
56+
<Grid.Row columns={1}>
57+
<Grid.Cell>
58+
<FieldValue label={t("listings.buildingSelectionCriteria")}>
59+
{listing.listingsBuildingSelectionCriteriaFile?.fileId ? (
60+
<MinimalTable
61+
id="buildingSelectionCriteriaTable"
62+
headers={{ preview: "t.preview", fileName: "t.fileName" }}
63+
data={[
64+
{
65+
preview: {
66+
content: (
67+
<TableThumbnail>
68+
<img
69+
alt="PDF preview"
70+
src={listing.listingsBuildingSelectionCriteriaFile.fileId}
71+
/>
72+
</TableThumbnail>
73+
),
74+
},
75+
fileName: {
76+
content: `${listing.listingsBuildingSelectionCriteriaFile.fileId
77+
.split("/")
78+
.slice(-1)
79+
.join()}.pdf`,
80+
},
6581
},
66-
fileName: {
67-
content: `${listing.listingsBuildingSelectionCriteriaFile.fileId
68-
.split("/")
69-
.slice(-1)
70-
.join()}.pdf`,
82+
]}
83+
/>
84+
) : (
85+
<MinimalTable
86+
id="buildingSelectionCriteriaTable"
87+
headers={{ url: "t.url" }}
88+
data={[
89+
{
90+
url: { content: listing.buildingSelectionCriteria },
7191
},
72-
},
73-
]}
74-
/>
75-
) : (
76-
<MinimalTable
77-
id="buildingSelectionCriteriaTable"
78-
headers={{ url: "t.url" }}
79-
data={[
80-
{
81-
url: { content: listing.buildingSelectionCriteria },
82-
},
83-
]}
84-
/>
85-
)}
86-
</FieldValue>
87-
</Grid.Cell>
88-
</Grid.Row>
89-
)}
92+
]}
93+
/>
94+
)}
95+
</FieldValue>
96+
</Grid.Cell>
97+
</Grid.Row>
98+
)}
9099
</SectionWithGrid>
91100
)
92101
}

sites/partners/src/components/listings/PaperListingForm/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,10 @@ const ListingForm = ({
596596
listing={listing}
597597
requiredFields={requiredFields}
598598
/>
599-
<BuildingSelectionCriteria />
599+
{!doJurisdictionsHaveFeatureFlagOn(
600+
FeatureFlagEnum.disableBuildingSelectionCriteria,
601+
jurisdictionId
602+
) && <BuildingSelectionCriteria />}
600603
<AdditionalDetails
601604
existingDocuments={listing?.requiredDocumentsList}
602605
requiredFields={requiredFields}

sites/public/src/components/listing/ListingViewSeedsHelpers.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,11 @@ export const getEligibilitySections = (
399399
FeatureFlagEnum.disableListingPreferences
400400
)
401401

402+
const disableBuildingSelectionCriteria = isFeatureFlagOn(
403+
jurisdiction,
404+
FeatureFlagEnum.disableBuildingSelectionCriteria
405+
)
406+
402407
// Reserved community type
403408
if (!swapCommunityTypeWithPrograms && listing.reservedCommunityTypes) {
404409
eligibilityFeatures.push({
@@ -544,8 +549,8 @@ export const getEligibilitySections = (
544549
listing.creditHistory ||
545550
listing.rentalHistory ||
546551
listing.criminalBackground ||
547-
listing.listingsBuildingSelectionCriteriaFile ||
548-
listing.buildingSelectionCriteria
552+
((listing.listingsBuildingSelectionCriteriaFile || listing.buildingSelectionCriteria) &&
553+
!disableBuildingSelectionCriteria)
549554
) {
550555
const cardContent: ContentCardProps[] = []
551556
if (listing.creditHistory)
@@ -569,7 +574,7 @@ export const getEligibilitySections = (
569574
content: (
570575
<>
571576
<CardList cardContent={cardContent} />
572-
{getBuildingSelectionCriteria(listing)}
577+
{!disableBuildingSelectionCriteria && getBuildingSelectionCriteria(listing)}
573578
</>
574579
),
575580
})

0 commit comments

Comments
 (0)