Remove `SetExpectationsForUsers` flag
This commit is contained in:
Родитель
be0ca85232
Коммит
d0f8b45b29
|
@ -33,11 +33,6 @@ modal-heres-what-we-fixed-description-part-one = <b>Manually fixed</b> includes
|
|||
to be fixed manually, even if you’ve 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 we’ve 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 you’ll need to take manual steps to resolve each breach even if you’ve 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.
|
||||
You’ll 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 don’t 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 you’re 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 = We’ll 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] We’ve already started our auto-removal process of 1 profile — which will reduce your exposures by { $exposure_reduction_percentage }%.
|
||||
*[other] We’ve 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] We’ve already started our auto-removal process of 1 profile — which may <b>reduce your exposures up to { $exposure_reduction_percentage }%</b>.
|
||||
*[other] We’ve 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, we’ll 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 we’ll guide you through high risk data breaches that require manual steps.
|
||||
# Variables:
|
||||
|
|
|
@ -130,12 +130,6 @@ landing-premium-quote = There’s 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 people’s 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. They’ll sell what they’ve 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 people’s 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
|
||||
|
|
Загрузка…
Ссылка в новой задаче