148 lines
8.1 KiB
TypeScript
148 lines
8.1 KiB
TypeScript
// Metro module 14012 (f14013).
|
|
import { View } from "react-native";
|
|
import SubscriptionStore from "../../../stores/billing/SubscriptionStore";
|
|
import { PREMIUM_TIER_2_REFERRAL_TRIAL_ID } from "../PremiumConstants";
|
|
import { Gradients } from "../../colors/native/ColorConstants";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import * as _shared from "../../../design/shared";
|
|
import useTheme from "../../../hooks/useTheme";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import useTrackImpression from "../../app_analytics/useTrackImpression";
|
|
import { ImpressionTypes, ImpressionNames } from "../../../_bundle/Module503";
|
|
import { MarketingComponentType } from "../../../_bundle/Module6567";
|
|
import { Icon } from "../../../design/void/native";
|
|
import Module14013 from "../../../_bundle/Module14013";
|
|
import { usePremiumTrialOffer } from "../hooks/usePremiumTrialOffer.android";
|
|
import { usePremiumDiscountOffer } from "../hooks/usePremiumDiscountOffer.android";
|
|
import { useHasTier2Premium } from "../../../utils/PremiumUtils";
|
|
import { useIsDismissibleContentDismissed_UNSAFE } from "../../dismissible_content/DismissibleContentUnsafeUtils";
|
|
import { DismissibleContent } from "../../../_bundle/Module1358";
|
|
import { useStateFromStores } from "../../../_bundle/Module589";
|
|
import { useSelectedDismissibleContent, useSelectedSnowflakeBoundDismissibleContent } from "../../dismissible_content/hooks/useSelectedDismissibleContent";
|
|
import { useIsEligibleSenderForReferralProgram } from "../referral_program/hooks/useIsEligibleSenderForReferralProgram";
|
|
import { useIsReferralProgramEntrypointBadgeAcknowledged } from "../referral_program/ReferralProgramUtils";
|
|
import { usePromotionMarketingComponent } from "../hooks/usePromotionMarketingComponent";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import Module4611 from "../../../_bundle/Module4611";
|
|
import { HorizontalGradient } from "../../../ConstantsIOS";
|
|
import { isAndroid } from "../../../utils/PlatformUtils";
|
|
let useStyles, OfferBadge;
|
|
const ThemedTabBadge = function ThemedTabBadge(props) {
|
|
const label = props.label;
|
|
const styles = useStyles();
|
|
const isThemeDark = _shared.isThemeDark(useTheme());
|
|
return <View style={[styles.badge, isThemeDark ? styles.badgeBackgroundDarkTheme : styles.badgeBackgroundLightTheme]}>
|
|
<Text variant="eyebrow" color={isThemeDark ? "text-overlay-dark" : "text-overlay-light"} style={styles.text}>{label}</Text>
|
|
</View>;
|
|
};
|
|
OfferBadge = function OfferBadge(props) {
|
|
const { acked, badgeCopy, ackedBadgeCopy, componentId } = props;
|
|
const styles = useStyles();
|
|
useTrackImpression({
|
|
type: ImpressionTypes.VIEW,
|
|
name: ImpressionNames.PREMIUM_MARKETING_COMPONENT,
|
|
properties: {
|
|
component_type: MarketingComponentType.PREMIUM_TAB,
|
|
component_id: componentId
|
|
}
|
|
}, {
|
|
disableTrack: componentId == null
|
|
});
|
|
return acked ? <View style={styles.acked}>
|
|
<Icon source={Module14013} size={Icon.Sizes.EXTRA_SMALL} color={styles.icon.color} style={styles.icon} />
|
|
<Text variant="eyebrow" color="interactive-text-default" style={styles.text}>{ackedBadgeCopy}</Text>
|
|
</View> : <ThemedTabBadge label={badgeCopy} />;
|
|
};
|
|
useStyles = createStyles({
|
|
tag: {
|
|
paddingVertical: 4,
|
|
paddingHorizontal: 8,
|
|
borderRadius: Module712.radii.round
|
|
},
|
|
badge: {
|
|
display: "flex",
|
|
minWidth: 16,
|
|
minHeight: 16,
|
|
paddingHorizontal: 8,
|
|
justifyContent: "center",
|
|
alignItems: "center",
|
|
gap: 4,
|
|
borderRadius: Module712.radii.round
|
|
},
|
|
badgeBackgroundLightTheme: {
|
|
backgroundColor: Module712.colors.BACKGROUND_BRAND
|
|
},
|
|
badgeBackgroundDarkTheme: {
|
|
backgroundColor: Module712.colors.WHITE
|
|
},
|
|
acked: {
|
|
paddingVertical: 2,
|
|
paddingHorizontal: 12,
|
|
borderRadius: Module712.radii.round,
|
|
backgroundColor: Module712.colors.BORDER_SUBTLE,
|
|
display: "flex",
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
textAlignVertical: "center"
|
|
},
|
|
ackedBadge: {
|
|
backgroundColor: Module712.colors.BORDER_SUBTLE
|
|
},
|
|
icon: {
|
|
color: Module712.colors.INTERACTIVE_TEXT_DEFAULT,
|
|
marginRight: 2
|
|
},
|
|
text: {
|
|
paddingBottom: 2
|
|
},
|
|
premiumDiscountBadge: {
|
|
paddingVertical: 2,
|
|
paddingHorizontal: 12,
|
|
borderRadius: Module712.radii.round,
|
|
display: "flex",
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
textAlignVertical: "center"
|
|
}
|
|
});
|
|
export default function PremiumTabBadge() {
|
|
const styles = useStyles();
|
|
const premiumTrialOffer = usePremiumTrialOffer();
|
|
const premiumDiscountOffer = usePremiumDiscountOffer();
|
|
const hasTier2Premium = useHasTier2Premium();
|
|
const isDismissibleContentDismissed_UNSAFE = useIsDismissibleContentDismissed_UNSAFE(DismissibleContent.MOBILE_NITRO_HOME_SETTINGS_BADGE);
|
|
const r45 = isDismissibleContentDismissed_UNSAFE ? !isDismissibleContentDismissed_UNSAFE : hasTier2Premium;
|
|
const [r18, ] = useSelectedDismissibleContent(useStateFromStores([SubscriptionStore], () => SubscriptionStore.getPremiumTypeSubscription())?.trialId === PREMIUM_TIER_2_REFERRAL_TRIAL_ID && !r45 ? [DismissibleContent.REFERRAL_TRIAL_MOBILE_NITRO_HOME_BADGE] : [], void 0, true);
|
|
const [r17, ] = useSelectedDismissibleContent(!r45 && hasTier2Premium ? [DismissibleContent.WHATS_NEW_TENURE_BADGE_REWARD] : [], void 0, true);
|
|
const isEligibleSenderForReferralProgram = useIsEligibleSenderForReferralProgram();
|
|
const isReferralProgramEntrypointBadgeAcknowledged = useIsReferralProgramEntrypointBadgeAcknowledged();
|
|
const promotionMarketingComponent = usePromotionMarketingComponent(MarketingComponentType.PREMIUM_TAB);
|
|
const r93 = promotionMarketingComponent != null ? promotionMarketingComponent.properties.properties.oneofKind === "premiumTab" ? DismissibleContent.PREMIUM_TAB_MARKETING_MOMENT_OFFER_BADGE : null : null;
|
|
let r101 = promotionMarketingComponent?.promotionId;
|
|
if (r101 == null) {
|
|
r101 = "";
|
|
}
|
|
const [r104, ] = useSelectedSnowflakeBoundDismissibleContent(r93, r101, void 0, true);
|
|
if (promotionMarketingComponent != null && promotionMarketingComponent.properties.properties.oneofKind === "premiumTab") {
|
|
return <OfferBadge acked={r104 !== DismissibleContent.PREMIUM_TAB_MARKETING_MOMENT_OFFER_BADGE} badgeCopy={promotionMarketingComponent.properties.properties.premiumTab.badgeLabel} ackedBadgeCopy={promotionMarketingComponent.properties.properties.premiumTab.acknowledgedBadgeLabel} componentId={promotionMarketingComponent.id} />;
|
|
}
|
|
const r118 = r18 === DismissibleContent.REFERRAL_TRIAL_MOBILE_NITRO_HOME_BADGE ? intl.string(t.uO4bXn) : r17 === DismissibleContent.WHATS_NEW_TENURE_BADGE_REWARD ? intl.string(t["jyYgZ+"]) : null;
|
|
return isEligibleSenderForReferralProgram && !isReferralProgramEntrypointBadgeAcknowledged ? <ThemedTabBadge label={intl.string(t.RDE0Sc)} /> : r45 ? <Module4611 style={styles.tag} colors={Gradients.PREMIUM_TIER_2} start={HorizontalGradient.START} end={HorizontalGradient.END}>
|
|
<Text variant="eyebrow" color="text-overlay-light" style={isAndroid() ? styles.text : void 0}>
|
|
{intl.string(t.y2b7CA)}
|
|
</Text>
|
|
</Module4611> : premiumTrialOffer != null ? <OfferBadge acked={premiumTrialOffer?.expires_at != null} badgeCopy={intl.string(t.OS9KPu)} ackedBadgeCopy={intl.string(t.OS9KPu)} /> : premiumDiscountOffer != null ? premiumDiscountOffer.hasAcknowledged() ? <View style={[styles.premiumDiscountBadge, styles.ackedBadge]}>
|
|
<Icon source={Module14013} size={Icon.Sizes.EXTRA_SMALL} color={styles.icon.color} style={styles.icon} />
|
|
<Text variant="eyebrow" color="interactive-text-default" style={styles.text}>
|
|
{intl.string(t["/DTtr6"])}
|
|
</Text>
|
|
</View> : <Module4611 style={styles.premiumDiscountBadge} colors={["#db00a4", "#5968f0"]} start={HorizontalGradient.START} end={HorizontalGradient.END}>
|
|
<Text variant="eyebrow" color="text-overlay-light" style={styles.text}>
|
|
{intl.string(t["/DTtr6"])}
|
|
</Text>
|
|
</Module4611> : r118 != null ? <Module4611 style={styles.tag} colors={Gradients.PREMIUM_TIER_2} start={HorizontalGradient.START} end={HorizontalGradient.END}>
|
|
<Text variant="eyebrow" color="text-overlay-light" style={isAndroid() ? styles.text : void 0}>{r118}</Text>
|
|
</Module4611> : null;
|
|
};
|