Skip to content

Commit a6df519

Browse files
authored
fix: toggle off building selection criteria (#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 cc55be8 commit a6df519

7 files changed

Lines changed: 87 additions & 56 deletions

File tree

api/prisma/seed-staging.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ export const stagingSeed = async (
158158
const angelopolisJurisdiction = await prismaClient.jurisdictions.create({
159159
data: jurisdictionFactory('Angelopolis', {
160160
featureFlags: [
161+
FeatureFlagEnum.disableBuildingSelectionCriteria,
161162
FeatureFlagEnum.enableAccessibilityFeatures,
162163
FeatureFlagEnum.enableCreditScreeningFee,
163164
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
@@ -963,11 +963,18 @@ export class ListingCsvExporterService implements CsvExporterServiceInterface {
963963
path: 'rentalAssistance',
964964
label: 'Eligibility Rules - Rental Assistance',
965965
},
966-
{
967-
path: 'buildingSelectionCriteria',
968-
label: 'Building Selection Criteria',
969-
format: this.buildingSelectionCriteria,
970-
},
966+
...(doAnyJurisdictionHaveFalsyFeatureFlagValue(
967+
user.jurisdictions,
968+
FeatureFlagEnum.disableBuildingSelectionCriteria,
969+
)
970+
? [
971+
{
972+
path: 'buildingSelectionCriteria',
973+
label: 'Building Selection Criteria',
974+
format: this.buildingSelectionCriteria,
975+
},
976+
]
977+
: []),
971978
{
972979
path: 'programRules',
973980
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
@@ -3992,7 +3992,7 @@ export interface UnitsSummary {
39923992
totalAvailable?: number
39933993

39943994
/** */
3995-
rentType?: string
3995+
rentType?: RentTypeEnum
39963996

39973997
/** */
39983998
flatRentValueFrom?: number
@@ -4698,7 +4698,7 @@ export interface UnitsSummaryCreate {
46984698
totalAvailable?: number
46994699

47004700
/** */
4701-
rentType?: string
4701+
rentType?: RentTypeEnum
47024702

47034703
/** */
47044704
flatRentValueFrom?: number
@@ -7895,6 +7895,7 @@ export enum NeighborhoodAmenitiesEnum {
78957895
}
78967896

78977897
export enum FeatureFlagEnum {
7898+
"disableBuildingSelectionCriteria" = "disableBuildingSelectionCriteria",
78987899
"disableCommonApplication" = "disableCommonApplication",
78997900
"disableJurisdictionalAdmin" = "disableJurisdictionalAdmin",
79007901
"disableListingPreferences" = "disableListingPreferences",

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

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +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 { cloudinaryUrlFromId } from "@bloom-housing/shared-helpers"
4+
import { cloudinaryUrlFromId, AuthContext } from "@bloom-housing/shared-helpers"
5+
import { FeatureFlagEnum } from "@bloom-housing/shared-helpers/src/types/backend-swagger"
56
import { ListingContext } from "../../ListingContext"
67
import { getDetailFieldString } from "./helpers"
78
import SectionWithGrid from "../../../shared/SectionWithGrid"
89

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

1219
return (
1320
<SectionWithGrid heading={t("listings.sections.additionalEligibilityTitle")} inset>
@@ -44,52 +51,53 @@ const DetailAdditionalEligibility = () => {
4451
</Grid.Row>
4552

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

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,10 @@ const ListingForm = ({
590590
listing={listing}
591591
requiredFields={requiredFields}
592592
/>
593-
<BuildingSelectionCriteria />
593+
{!doJurisdictionsHaveFeatureFlagOn(
594+
FeatureFlagEnum.disableBuildingSelectionCriteria,
595+
jurisdictionId
596+
) && <BuildingSelectionCriteria />}
594597
<AdditionalDetails
595598
existingDocuments={listing?.requiredDocumentsList}
596599
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)