Skip to content

Commit 833a9be

Browse files
authored
MNTOR-3887- Add EnableRemovalUnderMaintenanceStep flag to manual removal feature (#5427)
* add enabledfeatureflags prop to components * add more unit tests * ignore tests * ignore tests * ignore test * remove ignore comments * iteration to prevent c8 ignore for useglean and usetelemetry
1 parent 2bd45be commit 833a9be

38 files changed

+730
-222
lines changed

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/DashboardTopBanner/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { DoughnutChart as Chart } from "../../../../../../../components/client/C
99
import { DashboardSummary } from "../../../../../../../functions/server/dashboard";
1010
import { StepDeterminationData } from "../../../../../../../functions/server/getRelevantGuidedSteps";
1111
import { DashboardTopBannerContent } from "./DashboardTopBannerContent";
12+
import { FeatureFlagName } from "../../../../../../../../db/tables/featureFlags";
1213

1314
export type DashboardTopBannerProps = {
1415
bannerData: DashboardSummary;
@@ -29,6 +30,7 @@ export type DashboardTopBannerProps = {
2930
monthly: number;
3031
};
3132
totalNumberOfPerformedScans?: number;
33+
enabledFeatureFlags: FeatureFlagName[];
3234
};
3335

3436
export const DashboardTopBanner = (props: DashboardTopBannerProps) => {

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/View.tsx

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,8 @@ export const View = (props: Props) => {
178178
arraySortedByDate.filter((exposure: Exposure) => {
179179
const exposureStatus = getExposureStatus(
180180
exposure,
181-
props.enabledFeatureFlags.includes("AdditionalRemovalStatuses"),
182-
// TODO: Waiting for criteria for data brokers under maintenance to be determined
183-
// isDataBrokerUnderMaintenance(exposure),
181+
isDataBrokerUnderMaintenance(exposure),
182+
props.enabledFeatureFlags,
184183
);
185184

186185
return (
@@ -232,12 +231,15 @@ export const View = (props: Props) => {
232231
variant="primary"
233232
wide
234233
href={
235-
getNextGuidedStep({
236-
user: props.user,
237-
countryCode,
238-
latestScanData: adjustedScanData,
239-
subscriberBreaches: props.userBreaches,
240-
}).href
234+
getNextGuidedStep(
235+
{
236+
user: props.user,
237+
countryCode,
238+
latestScanData: adjustedScanData,
239+
subscriberBreaches: props.userBreaches,
240+
},
241+
props.enabledFeatureFlags,
242+
).href
241243
}
242244
>
243245
{l10n.getString("exposure-card-resolve-exposures-cta")}
@@ -531,6 +533,7 @@ export const View = (props: Props) => {
531533
yearlySubscriptionUrl={props.yearlySubscriptionUrl}
532534
subscriptionBillingAmount={props.subscriptionBillingAmount}
533535
totalNumberOfPerformedScans={props.totalNumberOfPerformedScans}
536+
enabledFeatureFlags={props.enabledFeatureFlags}
534537
/>
535538
<section className={styles.exposuresArea}>
536539
{activeTab === "action-needed" ? (
@@ -562,12 +565,12 @@ export const View = (props: Props) => {
562565
);
563566
};
564567

565-
// TODO: Waiting for criteria for data brokers under maintenace to be determined
566-
// export function isDataBrokerUnderMaintenance(
567-
// exposure: Exposure | OnerepScanResultDataBrokerRow,
568-
// ): boolean {
569-
// return (
570-
// isScanResult(exposure) &&
571-
// exposure.broker_status === "removal_under_maintenance"
572-
// );
573-
// }
568+
export function isDataBrokerUnderMaintenance(
569+
exposure: Exposure | OnerepScanResultDataBrokerRow,
570+
): boolean {
571+
return (
572+
isScanResult(exposure) &&
573+
exposure.broker_status === "removal_under_maintenance" &&
574+
exposure.status !== "removed"
575+
);
576+
}

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/FixView.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
} from "../../../../../../../functions/server/getRelevantGuidedSteps";
2020
import { useTelemetry } from "../../../../../../../hooks/useTelemetry";
2121
import { TelemetryButton } from "../../../../../../../components/client/TelemetryButton";
22+
import { FeatureFlagName } from "../../../../../../../../db/tables/featureFlags";
2223

2324
export type FixViewProps = {
2425
children: ReactNode;
@@ -34,6 +35,7 @@ export type FixViewProps = {
3435
hideNavClose?: boolean;
3536
hideNextNavigationRightArrow?: boolean;
3637
showConfetti?: boolean;
38+
enabledFeatureFlags: FeatureFlagName[];
3739
};
3840

3941
export const FixView = (props: FixViewProps) => {
@@ -91,6 +93,7 @@ export const FixView = (props: FixViewProps) => {
9193
label={l10n.getString(
9294
"guided-resolution-flow-step-navigation-label",
9395
)}
96+
enabledFeatureFlags={props.enabledFeatureFlags}
9497
/>
9598
)}
9699
{!props.hideNavClose && navigationClose()}

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/automatic-remove/AutomaticRemove.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export const AutomaticRemoveViewStory: Story = {
7676
yearly: 13.37,
7777
monthly: 42.42,
7878
}}
79+
enabledFeatureFlags={[]}
7980
/>
8081
</Shell>
8182
);

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/automatic-remove/AutomaticRemoveView.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
useRadioGroup,
3333
} from "react-aria";
3434
import { VisuallyHidden } from "../../../../../../../../../components/server/VisuallyHidden";
35+
import { FeatureFlagName } from "../../../../../../../../../../db/tables/featureFlags";
3536

3637
export type Props = Omit<ComponentProps<typeof FixView>, "children"> & {
3738
monthlySubscriptionUrl: string;
@@ -40,6 +41,7 @@ export type Props = Omit<ComponentProps<typeof FixView>, "children"> & {
4041
yearly: number;
4142
monthly: number;
4243
};
44+
enabledFeatureFlags: FeatureFlagName[];
4345
};
4446

4547
const RadioContext = createContext<RadioGroupState | null>(null);

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/automatic-remove/page.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
} from "../../../../../../../../../functions/server/getPremiumSubscriptionInfo";
2323
import { getAttributionsFromCookiesOrDb } from "../../../../../../../../../functions/server/attributions";
2424
import { hasPremium } from "../../../../../../../../../functions/universal/user";
25+
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
2526

2627
const monthlySubscriptionUrl = getPremiumSubscriptionUrl({ type: "monthly" });
2728
const yearlySubscriptionUrl = getPremiumSubscriptionUrl({ type: "yearly" });
@@ -37,6 +38,10 @@ export default async function AutomaticRemovePage() {
3738
session.user.subscriber.id,
3839
);
3940

41+
const enabledFeatureFlags = await getEnabledFeatureFlags({
42+
email: session.user.email,
43+
});
44+
4045
const countryCode = getCountryCode(headers());
4146
const profileId = await getOnerepProfileId(session.user.subscriber.id);
4247
const scanData = await getScanResultsWithBroker(
@@ -60,11 +65,12 @@ export default async function AutomaticRemovePage() {
6065
<AutomaticRemoveView
6166
data={data}
6267
subscriberEmails={subscriberEmails}
63-
nextStep={getNextGuidedStep(data, "Scan")}
68+
nextStep={getNextGuidedStep(data, enabledFeatureFlags, "Scan")}
6469
currentSection="data-broker-profiles"
6570
monthlySubscriptionUrl={`${monthlySubscriptionUrl}&${additionalSubplatParams.toString()}`}
6671
yearlySubscriptionUrl={`${yearlySubscriptionUrl}&${additionalSubplatParams.toString()}`}
6772
subscriptionBillingAmount={getSubscriptionBillingAmount()}
73+
enabledFeatureFlags={enabledFeatureFlags}
6874
/>
6975
);
7076
}

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemove.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const ManualRemoveViewStory: Story = {
6666
subscriberEmails={[]}
6767
isPremiumUser={hasPremium(user)}
6868
isEligibleForPremium={true}
69+
enabledFeatureFlags={[]}
6970
/>
7071
</Shell>
7172
);

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/ManualRemoveView.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
import { FixView } from "../../FixView";
2727
import { TelemetryLink } from "../../../../../../../../../components/client/TelemetryLink";
2828
import { TelemetryButton } from "../../../../../../../../../components/client/TelemetryButton";
29+
import { FeatureFlagName } from "../../../../../../../../../../db/tables/featureFlags";
2930

3031
export type Props = {
3132
scanData: LatestOnerepScanData;
@@ -35,6 +36,7 @@ export type Props = {
3536
user: Session["user"];
3637
countryCode: string;
3738
subscriberEmails: string[];
39+
enabledFeatureFlags: FeatureFlagName[];
3840
};
3941

4042
export function ManualRemoveView(props: Props) {
@@ -54,14 +56,19 @@ export function ManualRemoveView(props: Props) {
5456
user: props.user,
5557
};
5658

57-
const stepAfterSkip = getNextGuidedStep(data, "Scan");
59+
const stepAfterSkip = getNextGuidedStep(
60+
data,
61+
props.enabledFeatureFlags,
62+
"Scan",
63+
);
5864

5965
return (
6066
<FixView
6167
data={data}
6268
subscriberEmails={props.subscriberEmails}
6369
nextStep={stepAfterSkip}
6470
currentSection="data-broker-profiles"
71+
enabledFeatureFlags={props.enabledFeatureFlags}
6572
>
6673
<div className={styles.main}>
6774
<div className={styles.content}>

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/manual-remove/page.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { hasPremium } from "../../../../../../../../../functions/universal/user"
1313
import { getCountryCode } from "../../../../../../../../../functions/server/getCountryCode";
1414
import { getSubscriberEmails } from "../../../../../../../../../functions/server/getSubscriberEmails";
1515
import { isEligibleForPremium } from "../../../../../../../../../functions/universal/premium";
16+
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
1617

1718
export default async function ManualRemovePage() {
1819
const session = await getServerSession();
@@ -21,6 +22,10 @@ export default async function ManualRemovePage() {
2122
redirect("/user/dashboard");
2223
}
2324

25+
const enabledFeatureFlags = await getEnabledFeatureFlags({
26+
email: session.user.email,
27+
});
28+
2429
const countryCode = getCountryCode(headers());
2530
const profileId = await getOnerepProfileId(session.user.subscriber.id);
2631
const scanData = await getScanResultsWithBroker(
@@ -42,6 +47,7 @@ export default async function ManualRemovePage() {
4247
user={session.user}
4348
countryCode={countryCode}
4449
subscriberEmails={subscriberEmails}
50+
enabledFeatureFlags={enabledFeatureFlags}
4551
/>
4652
);
4753
}

src/app/(proper_react)/(redesign)/(authenticated)/user/(dashboard)/dashboard/fix/data-broker-profiles/removal-under-maintenance/RemovalUnderMaintenanceView.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export const RemovalUnderMaintenanceViewStory: Story = {
6464
user: mockedSession.user,
6565
}}
6666
subscriberEmails={[]}
67+
enabledFeatureFlags={[]}
6768
/>
6869
</Shell>
6970
);

0 commit comments

Comments
 (0)