Remove `SetExpectationsForUsers` flag

This commit is contained in:
Vincent 2024-08-21 15:52:40 +02:00 коммит произвёл Vincent
Родитель be0ca85232
Коммит d0f8b45b29
30 изменённых файлов: 40 добавлений и 213 удалений

Просмотреть файл

@ -33,11 +33,6 @@ modal-heres-what-we-fixed-description-part-one = <b>Manually fixed</b> includes
to be fixed manually, even if youve subscribed to { -brand-monitor-plus }.
modal-heres-what-we-fixed-description-part-two = <b>Auto-removed</b> includes any exposures from data broker profiles that weve removed for you. This is available only for
{ -brand-monitor-plus } subscribers.
# Deprecated (once feature flag `SetExpectationsForUsers` is enabled):
modal-heres-what-we-fixed-description-part-three-deprecated = <b>In Progress</b> includes anything that we are currently
working on fixing. Removals typically take 7–14 days but the most
difficult sites could take longer. You may also start to see removals
happening within the same day.
modal-heres-what-we-fixed-description-part-three = <b>In Progress</b> includes anything that we are currently working on fixing.
dashboard-exposures-filter-exposure-type = Exposure type
@ -57,9 +52,6 @@ modal-exposure-type-data-breach = <b>Data breach</b> means your information has
Resolving these typically requires accessing your accounts, so youll need to take manual steps to resolve each breach even if youve subscribed to { -brand-monitor-plus }.
modal-exposure-type-data-broker-part-one = <b>Info for sale</b> means a data broker site is publicly publishing and selling your personal info.
Youll need to manually request removal from each site.
# Deprecated (once feature flag `SetExpectationsForUsers` is enabled):
modal-exposure-type-data-broker-part-two-deprecated = For { -brand-monitor-plus } subscribers, we auto-remove these profiles on your behalf and make sure they dont re-add you.
In both cases, removals typically take 7–14 days. Some can take longer, while others can happen within the hour.
modal-exposure-type-data-broker-part-two = But if youre a { -brand-monitor-plus } subscriber, we auto-remove the profiles for you.
# About Exposure Statuses Modal

Просмотреть файл

@ -110,21 +110,10 @@ data-broker-profiles-exposure-reduction = Exposure reduction: { $exposure_reduct
# Variables:
# $nr (number) - % of exposures reduced for the user
exposure-reduction-chart-heading = <nr>{ $nr }</nr><percent>%</percent>
# Deprecated (once feature flag `SetExpectationsForUsers` is enabled):
exposure-reduction-chart-explanation-deprecated = <label_line_1>exposures will</label_line_1><label_line_2>be reduced</label_line_2>
exposure-reduction-chart-explanation = <label_line_1>exposures may</label_line_1><label_line_2>be reduced</label_line_2>
welcome-to-premium-data-broker-profiles-title-part-one = Welcome to { -brand-monitor-plus }.
welcome-to-premium-data-broker-profiles-title-part-two = Well remove those profiles ASAP.
# Deprecated (once feature flag `SetExpectationsForUsers` is enabled):
# Variables:
# $profile_total_num is the number of exposures came back from user data broker scans.
# $exposure_reduction_percentage is the percent by which exposures are reduced
welcome-to-premium-data-broker-profiles-description-part-one-deprecated =
{ $profile_total_num ->
[one] Weve already started our auto-removal process of 1 profile — which will reduce your exposures by { $exposure_reduction_percentage }%.
*[other] Weve already started our auto-removal process of { $profile_total_num } profiles — which will reduce your exposures by { $exposure_reduction_percentage }%.
}
# Variables:
# $profile_total_num is the number of exposures came back from user data broker scans.
# $exposure_reduction_percentage is the percent by which exposures are reduced
@ -133,8 +122,6 @@ welcome-to-premium-data-broker-profiles-description-part-one =
[one] Weve already started our auto-removal process of 1 profile — which may <b>reduce your exposures up to { $exposure_reduction_percentage }%</b>.
*[other] Weve already started our auto-removal process of { $profile_total_num } profiles — which may <b>reduce your exposures up to { $exposure_reduction_percentage }%</b>.
}
# Deprecated
welcome-to-premium-data-broker-profiles-description-part-two = <how_it_works_link>Removals typically take 7-14 days</how_it_works_link>, but some may happen within the hour. No matter how long it takes, well keep working on it.
# There used to be a "part two", but we removed that
welcome-to-premium-data-broker-profiles-description-part-three = Next well guide you through high risk data breaches that require manual steps.
# Variables:

Просмотреть файл

@ -130,12 +130,6 @@ landing-premium-quote = Theres a $240 billion industry of <data_brokers>data
landing-premium-what-websites-sell-info-qn = What kinds of websites sell my personal information?
landing-premium-what-websites-sell-info-ans = Certain websites are in the business of collecting and selling peoples personal information without their consent, which is unfortunately legal in the US. These sites are called data brokers and they make up a $240 billion dollar industry. They use sophisticated methods to collect personal, financial, location, and even health information, often without your consent or even your knowledge. Theyll sell what theyve collected to third parties, profiting from your information and leaving you open to violations of your privacy and security.
landing-premium-continuous-data-removal-qn = How does continuous data removal work?
# Deprecated (once feature flag `SetExpectationsForUsers` is enabled):
# Variables:
# $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be plural.
landing-premium-continuous-data-removal-ans-deprecated = { $data_broker_sites_total_num ->
*[other] Every month, we use the information you provided about yourself (name, location and birthdate) to search across { $data_broker_sites_total_num } data broker sites that sell peoples private information. If we find your data on any of these sites, we initiate the request for removal. Data removal can take anywhere from a day to a month. This feature is available for { -brand-monitor-plus } users only. <learn_more_link>Learn more here.</learn_more_link>
}
# Variables:
# $data_broker_sites_total_num is the total number of data broker sites available to scan. It will always be plural.
landing-premium-continuous-data-removal-ans = { $data_broker_sites_total_num ->

Просмотреть файл

@ -211,10 +211,7 @@ const DashboardWrapper = (props: DashboardWrapperProps) => {
elapsedTimeInDaysSinceInitialScan={
props.elapsedTimeInDaysSinceInitialScan
}
enabledFeatureFlags={[
...(props.enabledFeatureFlags ?? []),
"SetExpectationsForUsers",
]}
enabledFeatureFlags={props.enabledFeatureFlags ?? []}
experimentData={
props.experimentData ?? {
...defaultExperimentData,

Просмотреть файл

@ -57,7 +57,6 @@ export const DashboardTopBannerContent = (props: DashboardTopBannerProps) => {
monthlySubscriptionUrl,
yearlySubscriptionUrl,
subscriptionBillingAmount,
enabledFeatureFlags,
} = props;
const waitlistDialogState = useOverlayTriggerState({});
@ -77,7 +76,6 @@ export const DashboardTopBannerContent = (props: DashboardTopBannerProps) => {
}
autoRemoved={bannerData.dataBrokerAutoFixedDataPointsNum}
inProgress={bannerData.dataBrokerInProgressDataPointsNum}
enabledFeatureFlags={enabledFeatureFlags}
/>
);
}

Просмотреть файл

@ -9,7 +9,6 @@ import { DoughnutChart as Chart } from "../../../../../../../components/client/C
import { DashboardSummary } from "../../../../../../../functions/server/dashboard";
import { StepDeterminationData } from "../../../../../../../functions/server/getRelevantGuidedSteps";
import { DashboardTopBannerContent } from "./DashboardTopBannerContent";
import { FeatureFlagName } from "../../../../../../../../db/tables/featureFlags";
export type DashboardTopBannerProps = {
bannerData: DashboardSummary;
@ -30,7 +29,6 @@ export type DashboardTopBannerProps = {
monthly: number;
};
totalNumberOfPerformedScans?: number;
enabledFeatureFlags: FeatureFlagName[];
};
export const DashboardTopBanner = (props: DashboardTopBannerProps) => {

Просмотреть файл

@ -515,7 +515,6 @@ export const View = (props: Props) => {
yearlySubscriptionUrl={props.yearlySubscriptionUrl}
subscriptionBillingAmount={props.subscriptionBillingAmount}
totalNumberOfPerformedScans={props.totalNumberOfPerformedScans}
enabledFeatureFlags={props.enabledFeatureFlags}
/>
<section className={styles.exposuresArea}>
{activeTab === "action-needed" ? (

Просмотреть файл

@ -12,7 +12,6 @@ import styles from "./ResolutionContainer.module.scss";
import { ProgressCard } from "../../../../../../../components/client/ProgressCard";
import { StepDeterminationData } from "../../../../../../../functions/server/getRelevantGuidedSteps";
import { getDashboardSummary } from "../../../../../../../functions/server/dashboard";
import { FeatureFlagName } from "../../../../../../../../db/tables/featureFlags";
type ResolutionContainerProps = {
type: "highRisk" | "leakedPasswords" | "securityRecommendations";
@ -24,7 +23,6 @@ type ResolutionContainerProps = {
isEligibleForPremium: boolean;
isStepDone: boolean;
data: StepDeterminationData;
enabledFeatureFlags: FeatureFlagName[];
label?: string;
cta?: ReactNode;
};
@ -66,7 +64,6 @@ export const ResolutionContainer = (props: ResolutionContainerProps) => {
}
autoRemoved={resolutionSummary.dataBrokerAutoFixedDataPointsNum}
inProgress={resolutionSummary.dataBrokerInProgressDataPointsNum}
enabledFeatureFlags={props.enabledFeatureFlags}
/>
</div>
) : (

Просмотреть файл

@ -71,7 +71,6 @@ const WelcomeToPlusViewWrapper = (props: { brokerScanCount: number }) => {
}}
l10n={l10n}
subscriberEmails={[]}
enabledFeatureFlags={["SetExpectationsForUsers"]}
/>
</Shell>
);

Просмотреть файл

@ -18,14 +18,11 @@ import { ExtendedReactLocalization } from "../../../../../../../../../functions/
import noBreachesIllustration from "../../images/high-risk-breaches-none.svg";
import { CONST_ONEREP_DATA_BROKER_COUNT } from "../../../../../../../../../../constants";
import { TelemetryButton } from "../../../../../../../../../components/client/TelemetryButton";
import { TelemetryLink } from "../../../../../../../../../components/client/TelemetryLink";
import { FeatureFlagName } from "../../../../../../../../../../db/tables/featureFlags";
export type Props = {
data: StepDeterminationData;
subscriberEmails: string[];
l10n: ExtendedReactLocalization;
enabledFeatureFlags: FeatureFlagName[];
};
export function WelcomeToPlusView(props: Props) {
@ -67,13 +64,8 @@ export function WelcomeToPlusView(props: Props) {
</h3>
<p>
{hasRelevantScanResults
? /* c8 ignore next 14 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
l10n.getFragment(
props.enabledFeatureFlags.includes("SetExpectationsForUsers")
? "welcome-to-premium-data-broker-profiles-description-part-one"
: "welcome-to-premium-data-broker-profiles-description-part-one-deprecated",
? l10n.getFragment(
"welcome-to-premium-data-broker-profiles-description-part-one",
{
vars: {
profile_total_num: scanResultsInProgressCount,
@ -89,35 +81,13 @@ export function WelcomeToPlusView(props: Props) {
},
)}
</p>
<p>
{hasRelevantScanResults
? /* c8 ignore next 23 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
!props.enabledFeatureFlags.includes(
"SetExpectationsForUsers",
) &&
l10n.getFragment(
"welcome-to-premium-data-broker-profiles-description-part-two",
{
elems: {
how_it_works_link: (
<TelemetryLink
href="/how-it-works"
className={styles.howItWorksLink}
target="_blank"
eventData={{
link_id: "explanation_of_removal_time",
}}
/>
),
},
},
)
: l10n.getString(
"welcome-to-premium-data-broker-profiles-zero-state-description-part-two",
)}
</p>
{!hasRelevantScanResults && (
<p>
{l10n.getString(
"welcome-to-premium-data-broker-profiles-zero-state-description-part-two",
)}
</p>
)}
<p>
{hasRelevantScanResults
? l10n.getString(
@ -148,10 +118,7 @@ export function WelcomeToPlusView(props: Props) {
</div>
{hasRelevantScanResults ? (
<div className={styles.chart}>
<PercentageChart
exposureReduction={dataPointReduction}
enabledFeatureFlags={props.enabledFeatureFlags}
/>
<PercentageChart exposureReduction={dataPointReduction} />
</div>
) : (
<div

Просмотреть файл

@ -17,7 +17,6 @@ import { logger } from "../../../../../../../../../functions/server/logging";
import { getL10n } from "../../../../../../../../../functions/l10n/serverComponents";
import { refreshStoredScanResults } from "../../../../../../../../../functions/server/refreshStoredScanResults";
import { checkSession } from "../../../../../../../../../functions/server/checkSession";
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
export default async function WelcomeToPlusPage() {
const session = await getServerSession();
@ -55,11 +54,6 @@ export default async function WelcomeToPlusPage() {
user: session.user,
};
const enabledFeatureFlags = await getEnabledFeatureFlags({
isSignedOut: false,
email: session.user.email,
});
// If the current user is a subscriber and their OneRep profile is not
// activated: Most likely we were not able or failed to kick-off the
// auto-removal process.
@ -78,7 +72,6 @@ export default async function WelcomeToPlusPage() {
data={data}
subscriberEmails={subscriberEmails}
l10n={getL10n()}
enabledFeatureFlags={enabledFeatureFlags}
/>
);
}

Просмотреть файл

@ -28,14 +28,12 @@ import {
} from "../../../../../../../../functions/universal/breach";
import { TelemetryButton } from "../../../../../../../../components/client/TelemetryButton";
import { TelemetryLink } from "../../../../../../../../components/client/TelemetryLink";
import { FeatureFlagName } from "../../../../../../../../../db/tables/featureFlags";
export type HighRiskBreachLayoutProps = {
type: HighRiskBreachTypes;
subscriberEmails: string[];
data: StepDeterminationData;
isEligibleForPremium: boolean;
enabledFeatureFlags: FeatureFlagName[];
};
export function HighRiskBreachLayout(props: HighRiskBreachLayoutProps) {
@ -166,7 +164,6 @@ export function HighRiskBreachLayout(props: HighRiskBreachLayoutProps) {
illustration={illustration}
isPremiumUser={hasPremium(props.data.user)}
isEligibleForPremium={props.isEligibleForPremium}
enabledFeatureFlags={props.enabledFeatureFlags}
cta={
!isStepDone && (
<>

Просмотреть файл

@ -113,7 +113,6 @@ const HighRiskBreachWrapper = (props: {
type={props.type}
data={data}
isEligibleForPremium={true}
enabledFeatureFlags={["SetExpectationsForUsers"]}
/>
</Shell>
);

Просмотреть файл

@ -16,7 +16,6 @@ import { getCountryCode } from "../../../../../../../../../functions/server/getC
import { getLatestOnerepScanResults } from "../../../../../../../../../../db/tables/onerep_scans";
import { getOnerepProfileId } from "../../../../../../../../../../db/tables/subscribers";
import { isEligibleForPremium } from "../../../../../../../../../functions/server/onerep";
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
interface SecurityRecommendationsProps {
params: {
@ -57,10 +56,6 @@ export default async function SecurityRecommendations({
latestScanData: scanData,
}}
isEligibleForPremium={isEligibleForPremium(countryCode)}
enabledFeatureFlags={await getEnabledFeatureFlags({
isSignedOut: false,
email: session.user.email,
})}
/>
);
}

Просмотреть файл

@ -12,7 +12,6 @@ import { getOnerepProfileId } from "../../../../../../../../../db/tables/subscri
import { getLatestOnerepScanResults } from "../../../../../../../../../db/tables/onerep_scans";
import { getCountryCode } from "../../../../../../../../functions/server/getCountryCode";
import { isEligibleForPremium } from "../../../../../../../../functions/server/onerep";
import { getEnabledFeatureFlags } from "../../../../../../../../../db/tables/featureFlags";
export default async function HighRiskDataBreaches() {
const session = await getServerSession();
@ -42,10 +41,6 @@ export default async function HighRiskDataBreaches() {
latestScanData: scanData,
}}
isEligibleForPremium={isEligibleForPremium(countryCode)}
enabledFeatureFlags={await getEnabledFeatureFlags({
isSignedOut: false,
email: session.user.email,
})}
/>
</div>
);

Просмотреть файл

@ -29,14 +29,12 @@ import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import { LeakedPasswordsDataTypes } from "../../../../../../../../functions/universal/breach";
import { useTelemetry } from "../../../../../../../../hooks/useTelemetry";
import { FeatureFlagName } from "../../../../../../../../../db/tables/featureFlags";
export interface LeakedPasswordsLayoutProps {
type: LeakedPasswordsTypes;
subscriberEmails: string[];
data: StepDeterminationData;
isEligibleForPremium: boolean;
enabledFeatureFlags: FeatureFlagName[];
}
export function LeakedPasswordsLayout(props: LeakedPasswordsLayoutProps) {
@ -193,7 +191,6 @@ export function LeakedPasswordsLayout(props: LeakedPasswordsLayoutProps) {
title={title}
illustration={illustration}
isPremiumUser={hasPremium(props.data.user)}
enabledFeatureFlags={props.enabledFeatureFlags}
cta={
!isStepDone && (
<>

Просмотреть файл

@ -75,7 +75,6 @@ const LeakedPasswordsWrapper = (props: {
user: mockedSession.user,
}}
isEligibleForPremium={true}
enabledFeatureFlags={["SetExpectationsForUsers"]}
/>
</Shell>
);

Просмотреть файл

@ -17,7 +17,6 @@ import { getOnerepProfileId } from "../../../../../../../../../../db/tables/subs
import { getLatestOnerepScanResults } from "../../../../../../../../../../db/tables/onerep_scans";
import { isEligibleForPremium } from "../../../../../../../../../functions/server/onerep";
import { logger } from "../../../../../../../../../functions/server/logging";
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
interface LeakedPasswordsProps {
params: {
@ -61,10 +60,6 @@ export default async function LeakedPasswords({
latestScanData: scanData,
}}
isEligibleForPremium={isEligibleForPremium(countryCode)}
enabledFeatureFlags={await getEnabledFeatureFlags({
isSignedOut: false,
email: session.user.email,
})}
/>
);
}

Просмотреть файл

@ -27,14 +27,12 @@ import {
BreachBulkResolutionRequest,
SecurityRecommendationDataTypes,
} from "../../../../../../../../functions/universal/breach";
import { FeatureFlagName } from "../../../../../../../../../db/tables/featureFlags";
export interface SecurityRecommendationsLayoutProps {
type: SecurityRecommendationTypes;
subscriberEmails: string[];
data: StepDeterminationData;
isEligibleForPremium: boolean;
enabledFeatureFlags: FeatureFlagName[];
}
export function SecurityRecommendationsLayout(
@ -159,7 +157,6 @@ export function SecurityRecommendationsLayout(
title={title}
illustration={illustration}
isPremiumUser={hasPremium(props.data.user)}
enabledFeatureFlags={props.enabledFeatureFlags}
cta={
!isStepDone && (
<Button

Просмотреть файл

@ -53,7 +53,6 @@ const SecurityRecommendationsWrapper = (props: {
user: mockedSession.user,
}}
isEligibleForPremium={true}
enabledFeatureFlags={["SetExpectationsForUsers"]}
/>
</Shell>
);

Просмотреть файл

@ -16,7 +16,6 @@ import { getCountryCode } from "../../../../../../../../../functions/server/getC
import { getOnerepProfileId } from "../../../../../../../../../../db/tables/subscribers";
import { getLatestOnerepScanResults } from "../../../../../../../../../../db/tables/onerep_scans";
import { isEligibleForPremium } from "../../../../../../../../../functions/server/onerep";
import { getEnabledFeatureFlags } from "../../../../../../../../../../db/tables/featureFlags";
interface SecurityRecommendationsProps {
params: {
@ -57,10 +56,6 @@ export default async function SecurityRecommendations({
latestScanData: scanData,
}}
isEligibleForPremium={isEligibleForPremium(countryCode)}
enabledFeatureFlags={await getEnabledFeatureFlags({
isSignedOut: false,
email: session.user.email,
})}
/>
);
}

Просмотреть файл

@ -15,7 +15,6 @@ import {
CONST_ONEREP_DATA_BROKER_COUNT,
CONST_URL_SUMO_MONITOR_PLUS,
} from "../../../../constants";
import { FeatureFlagName } from "../../../../db/tables/featureFlags";
export type FaqItemProps = {
question: string;
@ -66,10 +65,8 @@ const FaqItem = (props: FaqItemProps) => {
export const FaqSection = ({
isEligibleForPremium,
enabledFeatureFlags,
}: {
isEligibleForPremium: boolean;
enabledFeatureFlags: FeatureFlagName[];
}) => {
const l10n = useL10n();
const recordTelemetry = useTelemetry();
@ -126,12 +123,7 @@ export const FaqSection = ({
"landing-premium-continuous-data-removal-qn",
)}
answer={l10n.getFragment(
/* c8 ignore next 5 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
enabledFeatureFlags.includes("SetExpectationsForUsers")
? "landing-premium-continuous-data-removal-ans"
: "landing-premium-continuous-data-removal-ans-deprecated",
"landing-premium-continuous-data-removal-ans",
{
vars: {
data_broker_sites_total_num: CONST_ONEREP_DATA_BROKER_COUNT,

Просмотреть файл

@ -50,7 +50,6 @@ export const LandingUs: Story = {
eligibleForPremium: true,
countryCode: "us",
scanLimitReached: false,
enabledFlags: ["SetExpectationsForUsers"],
},
};
@ -60,7 +59,6 @@ export const LandingUsScanLimit: Story = {
eligibleForPremium: true,
countryCode: "us",
scanLimitReached: true,
enabledFlags: ["SetExpectationsForUsers"],
},
};
@ -69,7 +67,6 @@ export const LandingNonUs: Story = {
args: {
eligibleForPremium: false,
countryCode: "nz",
enabledFlags: ["SetExpectationsForUsers"],
},
};
@ -78,7 +75,6 @@ export const LandingNonUsDe: Story = {
args: {
eligibleForPremium: false,
countryCode: "de",
enabledFlags: ["SetExpectationsForUsers"],
l10n: getL10n("de"),
},
};
@ -88,7 +84,6 @@ export const LandingNonUsFr: Story = {
args: {
eligibleForPremium: false,
countryCode: "fr",
enabledFlags: ["SetExpectationsForUsers"],
l10n: getL10n("fr"),
},
};

Просмотреть файл

@ -26,7 +26,6 @@ import { TelemetryLink } from "../../../components/client/TelemetryLink";
import { HeresHowWeHelp } from "./HeresHowWeHelp";
import { ScanLimit } from "./ScanLimit";
import { FaqSection } from "./Faq";
import { FeatureFlagName } from "../../../../db/tables/featureFlags";
import { AccountDeletionNotification } from "./AccountDeletionNotification";
import { ExperimentData } from "../../../../telemetry/generated/nimbus/experiments";
import { FreeScanCta } from "./FreeScanCta";
@ -36,7 +35,6 @@ export type Props = {
l10n: ExtendedReactLocalization;
countryCode: string;
scanLimitReached: boolean;
enabledFlags: FeatureFlagName[];
experimentData: ExperimentData;
};
@ -238,10 +236,7 @@ export const View = (props: Props) => {
{!props.eligibleForPremium && <HeresHowWeHelp />}
<Plans {...props} />
<FaqSection
isEligibleForPremium={props.eligibleForPremium}
enabledFeatureFlags={props.enabledFlags}
/>
<FaqSection isEligibleForPremium={props.eligibleForPremium} />
<div className={styles.signUpEncouragementWrapper}>
<p className={styles.title}>

Просмотреть файл

@ -11,7 +11,6 @@ import {
getProfilesStats,
monthlySubscribersQuota,
} from "../../../functions/server/onerep";
import { getEnabledFeatureFlags } from "../../../../db/tables/featureFlags";
import { getL10n } from "../../../functions/l10n/serverComponents";
import { View } from "./LandingView";
import {
@ -34,7 +33,6 @@ export default async function Page({ searchParams }: Props) {
if (typeof session?.user.subscriber?.fxa_uid === "string") {
return redirect("/user/dashboard");
}
const enabledFlags = await getEnabledFeatureFlags({ isSignedOut: true });
const countryCode = getCountryCode(headers());
const eligibleForPremium = isEligibleForPremium(countryCode);
@ -75,7 +73,6 @@ export default async function Page({ searchParams }: Props) {
l10n={getL10n()}
countryCode={countryCode}
scanLimitReached={scanLimitReached}
enabledFlags={enabledFlags}
experimentData={experimentData}
/>
</AccountsMetricsFlowProvider>

Просмотреть файл

@ -56,23 +56,7 @@ export const ExposuresFilterTypeExplainer = (
{l10n.getFragment("modal-exposure-type-data-broker-part-one", {
elems: { b: <strong /> },
})}{" "}
{
/* c8 ignore next 7 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
props.enabledFeatureFlags.includes(
"SetExpectationsForUsers",
) ? (
l10n.getString("modal-exposure-type-data-broker-part-two")
) : (
<>
<br />
{l10n.getString(
"modal-exposure-type-data-broker-part-two-deprecated",
)}
</>
)
}
{l10n.getString("modal-exposure-type-data-broker-part-two")}
</li>
</ol>
<Button

Просмотреть файл

@ -4,13 +4,11 @@
"use client";
import { FeatureFlagName } from "../../../db/tables/featureFlags";
import { useL10n } from "../../hooks/l10n";
import styles from "./PercentageChart.module.scss";
export type Props = {
exposureReduction: number;
enabledFeatureFlags: FeatureFlagName[];
};
export const PercentageChart = (props: Props) => {
const l10n = useL10n();
@ -95,37 +93,29 @@ export const PercentageChart = (props: Props) => {
},
})}
</text>
{l10n.getFragment(
/* c8 ignore next 5 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
props.enabledFeatureFlags.includes("SetExpectationsForUsers")
? "exposure-reduction-chart-explanation"
: "exposure-reduction-chart-explanation-deprecated",
{
elems: {
label_line_1: (
<text
className={styles.headingLabel}
fontSize={headingLabelSize}
x={diameter / 2}
y={diameter / 2 + headingLabelSize + headingGap / 2}
textAnchor="middle"
/>
),
label_line_2: (
<text
className={styles.headingLabel}
fontSize={headingLabelSize}
x={diameter / 2}
y={diameter / 2 + (headingLabelSize + headingGap / 2) * 2}
textAnchor="middle"
/>
),
},
vars: { nr: props.exposureReduction },
{l10n.getFragment("exposure-reduction-chart-explanation", {
elems: {
label_line_1: (
<text
className={styles.headingLabel}
fontSize={headingLabelSize}
x={diameter / 2}
y={diameter / 2 + headingLabelSize + headingGap / 2}
textAnchor="middle"
/>
),
label_line_2: (
<text
className={styles.headingLabel}
fontSize={headingLabelSize}
x={diameter / 2}
y={diameter / 2 + (headingLabelSize + headingGap / 2) * 2}
textAnchor="middle"
/>
),
},
)}
vars: { nr: props.exposureReduction },
})}
</svg>
</div>
</figure>

Просмотреть файл

@ -19,7 +19,6 @@ import ExploringLaptopInProgress from "./assets/exploring-laptop-in-progress.svg
import { LockIcon, QuestionMarkCircle } from "../server/Icons";
import ModalImage from "../client/assets/modal-default-img.svg";
import { VisuallyHidden } from "../server/VisuallyHidden";
import { FeatureFlagName } from "../../../db/tables/featureFlags";
export type Props = {
resolvedByYou: number;
@ -27,7 +26,6 @@ export type Props = {
inProgress: number;
isPremiumUser: boolean;
isEligibleForPremium: boolean;
enabledFeatureFlags: FeatureFlagName[];
};
export const ProgressCard = (props: Props) => {
@ -51,17 +49,9 @@ export const ProgressCard = (props: Props) => {
})}
</p>
<p>
{l10n.getFragment(
/* c8 ignore next 5 */
// As the `SetExpectationsForUsers` feature flag is removed, the
// branch will be covered again:
props.enabledFeatureFlags.includes("SetExpectationsForUsers")
? "modal-heres-what-we-fixed-description-part-three"
: "modal-heres-what-we-fixed-description-part-three-deprecated",
{
elems: { b: <strong /> },
},
)}
{l10n.getFragment("modal-heres-what-we-fixed-description-part-three", {
elems: { b: <strong /> },
})}
</p>
<div className={styles.confirmButtonWrapper}>
<Button

Просмотреть файл

@ -22,7 +22,6 @@ export const ProgressCardItemUsPremium: Story = {
autoRemoved: 5,
isPremiumUser: true,
isEligibleForPremium: true,
enabledFeatureFlags: ["SetExpectationsForUsers"],
},
};
@ -33,7 +32,6 @@ export const ProgressCardItemUsNonPremium: Story = {
autoRemoved: 5,
isEligibleForPremium: true,
isPremiumUser: false,
enabledFeatureFlags: ["SetExpectationsForUsers"],
},
};
@ -43,6 +41,5 @@ export const ProgressCardItemNonUs: Story = {
resolvedByYou: 3,
autoRemoved: 0,
isEligibleForPremium: false,
enabledFeatureFlags: ["SetExpectationsForUsers"],
},
};

Просмотреть файл

@ -47,9 +47,7 @@ export type FeatureFlagName =
| "LatestScanDateCsatSurvey"
| "AutomaticRemovalCsatSurvey"
| "AdditionalRemovalStatuses"
| "PetitionBannerCsatSurvey"
/** Set clear expectations about auto-removal finishing in time for *most*, not *all* data brokers: */
| "SetExpectationsForUsers";
| "PetitionBannerCsatSurvey";
/**
* @param options