This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,2 @@
// Metro module 8395 (f8396).
export const DEFAULT_PREMIUM_BADGE_ID = "premium";
@@ -0,0 +1,17 @@
// Metro module 12490 (f12491).
import UserStore from "../../../../stores/UserStore";
import { PremiumTypes } from "../../PremiumConstants";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useIsPremiumSubscriber } from "../../useIsPremiumSubscriber";
import useMountEffect from "../../../../hooks/useMountEffect";
import maybeFetchUserProfile from "../../../user_profile/maybeFetchUserProfile";
export function useMaybeFetchTieredTenureBadgeData() {
let isPremiumSubscriber;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
isPremiumSubscriber = useIsPremiumSubscriber(PremiumTypes.TIER_2);
useMountEffect(() => {
if (stateFromStores?.id != null && isPremiumSubscriber) {
maybeFetchUserProfile(stateFromStores.id);
}
});
}
@@ -0,0 +1,15 @@
// Metro module 12471 (f12472).
import { TENURE_BADGES, TIERED_TENURE_BADGE_ORDER } from "../../PremiumConstants";
import { useTieredTenureBadgeData, TieredTenureBadgeStatus } from "./useTenureBadging";
export function useNextTenureBadge() {
const tieredTenureBadgeData = useTieredTenureBadgeData();
if (tieredTenureBadgeData == null) {
return null;
}
if (tieredTenureBadgeData.status === TieredTenureBadgeStatus.UPCOMING) {
return tieredTenureBadgeData;
}
const r18 = TIERED_TENURE_BADGE_ORDER.indexOf(tieredTenureBadgeData.id);
const r20 = TIERED_TENURE_BADGE_ORDER[r18 + 1];
return r20 == null ? null : r18 !== -1 ? TENURE_BADGES[r20] : null;
}
@@ -0,0 +1,46 @@
// Metro module 8423 (f8424).
import { TieredTenureBadge } from "../../PremiumConstants";
import { useTieredTenureBadge } from "./useTenureBadging";
import { getTieredTenureBadgeData } from "../../../user_profile/TieredTenureBadgeUtils";
import { intl, t } from "../../../../intl/index.native";
export function useTenureBadgeRequirementString() {
let r27;
const tieredTenureBadge = useTieredTenureBadge();
if (tieredTenureBadge == null) {
return null;
}
L11: {
const tieredTenureBadgeData = getTieredTenureBadgeData(tieredTenureBadge);
const { id, tenureReqNumMonths } = tieredTenureBadgeData;
if (TieredTenureBadge.PREMIUM_TENURE_1_MONTH !== id && (TieredTenureBadge.PREMIUM_TENURE_3_MONTH !== id && TieredTenureBadge.PREMIUM_TENURE_6_MONTH !== id)) {
if (TieredTenureBadge.PREMIUM_TENURE_12_MONTH !== id && TieredTenureBadge.PREMIUM_TENURE_24_MONTH !== id && TieredTenureBadge.PREMIUM_TENURE_36_MONTH !== id && TieredTenureBadge.PREMIUM_TENURE_60_MONTH !== id) {
const PREMIUM_TENURE_72_MONTH = TieredTenureBadge.PREMIUM_TENURE_72_MONTH;
r27 = null;
if (PREMIUM_TENURE_72_MONTH !== id) {
break L11;
}
}
r27 = intl.formatToPlainString(t.qOdyDe, {
years: tenureReqNumMonths / 12
});
} else {
r27 = intl.formatToPlainString(t.erUSmA, {
months: tenureReqNumMonths
});
}
}
return r27;
}
export function getTenureBadgeRequirementString(a0, a1) {
if (TieredTenureBadge.PREMIUM_TENURE_1_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_3_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_6_MONTH !== a0) {
if (TieredTenureBadge.PREMIUM_TENURE_12_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_24_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_36_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_60_MONTH !== a0 && TieredTenureBadge.PREMIUM_TENURE_72_MONTH !== a0) {
return null;
}
return intl.formatToPlainString(t.qOdyDe, {
years: a1 / 12
});
}
return intl.formatToPlainString(t.erUSmA, {
months: a1
});
}
@@ -0,0 +1,113 @@
// Metro module 8424 (f8425).
import UserProfileStore from "../../../user_profile/UserProfileStore";
import UserStore from "../../../../stores/UserStore";
import SubscriptionStore from "../../../../stores/billing/SubscriptionStore";
import { PremiumTypes, TENURE_BADGES } from "../../PremiumConstants";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useTieredTenureBadgeForUser } from "./useTieredTenureBadgeForUser";
import * as _PremiumTypeUtils from "../../../../utils/PremiumTypeUtils";
import Module3771 from "../../../../_bundle/Module3771";
import { getEarnedOnDate } from "../../../user_profile/TieredTenureBadgeUtils";
function $mk80599($env) {
return () => {
const r4 = $env[0];
if (r4 == null) {
return null;
}
return $env.$parent[3].getUserProfile(r4)?.premiumSince;
};
}
let c5390_8;
let $mk80598 = function() {
return () => UserStore.getCurrentUser();
}, $mk80602 = function() {
return () => SubscriptionStore.getPremiumTypeSubscription();
};
let env5390 = {};
export function usePremiumSince() {
let isPremiumExactly;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
isPremiumExactly = _PremiumTypeUtils.isPremiumExactly(stateFromStores, PremiumTypes.TIER_2);
let r27 = useStateFromStores([SubscriptionStore], () => {
const premiumSubscription = SubscriptionStore.getPremiumSubscription();
return premiumSubscription != null ? isPremiumExactly ? premiumSubscription.premiumSince : null : null;
}, [isPremiumExactly]);
const id = stateFromStores?.id;
let env16558;
const r29 = env16558 = {
$parent: env5390
};
env16558[0] = id;
const stateFromStores2 = useStateFromStores([UserProfileStore], $mk80599(r29));
if (r27 == null) {
r27 = stateFromStores2;
}
return r27;
}
c5390_8 = {
UPCOMING: "upcoming",
EARNED: "earned"
};
export { c5390_8 as TieredTenureBadgeStatus };
export function useTieredTenureBadge() {
let r17 = useTieredTenureBadgeForUser(useStateFromStores([UserStore], $mk80598())?.id);
if (r17 == null) {
r17 = null;
}
return r17;
}
export function usePremiumSinceForUser(a0) {
let env16556;
const r1 = env16556 = {
$parent: env5390
};
env16556[0] = a0;
return useStateFromStores([UserProfileStore], $mk80599(r1));
}
export function useTieredTenureBadgesFromSubscriptionData() {
const r13 = Object.values(TENURE_BADGES);
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const stateFromStores2 = useStateFromStores([SubscriptionStore], () => SubscriptionStore.getPremiumTypeSubscription());
if (_PremiumTypeUtils.isPremiumExactly(stateFromStores, PremiumTypes.TIER_2) && stateFromStores2 != null && stateFromStores2.premiumSince != null) {
let c16559_0 = Module3771().diff(Module3771(stateFromStores2.premiumSince).add(1, "day"), "months");
return r13.reduce((r0, item) => {
const id = item.id;
if (c16559_0 >= item.tenureReqNumMonths) {
r0 = id;
}
return r0;
}, null);
}
return null;
}
export function useTieredTenureEarnedOnDate() {
let r18 = useTieredTenureBadgeForUser(useStateFromStores([UserStore], $mk80598())?.id);
if (r18 == null) {
r18 = null;
}
const stateFromStores = useStateFromStores([SubscriptionStore], $mk80602());
return r18 == null ? null : stateFromStores == null ? null : stateFromStores.premiumSince == null ? null : getEarnedOnDate(r18, stateFromStores.premiumSince);
}
export function useTieredTenureBadgeData() {
const tieredTenureBadgeForUser = useTieredTenureBadgeForUser(useStateFromStores([UserStore], () => UserStore.getCurrentUser())?.id);
const r23 = tieredTenureBadgeForUser == null ? null : TENURE_BADGES[tieredTenureBadgeForUser];
let r35 = useTieredTenureBadgeForUser(useStateFromStores([UserStore], $mk80598())?.id);
if (r35 == null) {
r35 = null;
}
const stateFromStores = useStateFromStores([SubscriptionStore], $mk80602());
const earnedOnDate = r35 == null ? null : stateFromStores == null ? null : stateFromStores.premiumSince == null ? null : getEarnedOnDate(r35, stateFromStores.premiumSince);
const premiumSince = usePremiumSince();
return r23 != null ? {
...r23,
earnedOnDate,
status: c5390_8.EARNED
} : premiumSince != null ? {
...Object.values(TENURE_BADGES)[0],
status: c5390_8.UPCOMING
} : null;
}
export function useTieredTenureBadgeDataForUser(a0) {
const tieredTenureBadgeForUser = useTieredTenureBadgeForUser(a0);
return tieredTenureBadgeForUser != null ? TENURE_BADGES[tieredTenureBadgeForUser] : null;
}
@@ -0,0 +1,32 @@
// Metro module 8425 (f8426).
import UserProfileStore from "../../../user_profile/UserProfileStore";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { getTieredTenureBadge } from "../../../user_profile/TieredTenureBadgeUtils";
export function useTieredTenureBadgeForUser(c16560_0) {
return useStateFromStores([UserProfileStore], () => {
const r4 = c16560_0 != null ? UserProfileStore.getUserProfile(c16560_0) : null;
const premiumSince = r4?.premiumSince;
const r10 = r4 == null;
let r11 = null;
if (!r10) {
const r12 = premiumSince == null;
r11 = null;
if (!r12) {
let tieredTenureBadge;
if (r4 != null) {
const badges = r4.badges;
if (badges != null) {
badges.forEach((badge) => {
const tieredTenureBadge2 = getTieredTenureBadge(badge.id);
if (tieredTenureBadge2 != null) {
tieredTenureBadge = tieredTenureBadge2;
}
});
}
}
r11 = tieredTenureBadge;
}
}
return r11;
});
}
@@ -0,0 +1,23 @@
// Metro module 12470 (f12471).
import { useMemo } from "react";
import Module3771 from "../../../../_bundle/Module3771";
import { useNextTenureBadge } from "./useNextTenureBadge";
import { usePremiumSince } from "./useTenureBadging";
export function computeDaysUntilNextBadgeDate(a0, a1) {
return Math.max(0, Module3771(a0).add(a1, "months").add(1, "day").diff(Module3771(), "days"));
}
export function useTimeUntilNextBadge() {
const nextTenureBadge = useNextTenureBadge();
const premiumSince = usePremiumSince();
return useMemo(() => {
if (nextTenureBadge != null && premiumSince != null) {
const tenureReqNumMonths = nextTenureBadge.tenureReqNumMonths;
const r10 = Module3771(premiumSince).add(tenureReqNumMonths, "months").add(1, "day");
return {
days: Math.max(0, Module3771(premiumSince).add(tenureReqNumMonths, "months").add(1, "day").diff(Module3771(), "days")),
months: Math.max(0, Math.round(r10.diff(Module3771(), "months", true)))
};
}
return null;
}, [nextTenureBadge, premiumSince]);
}
@@ -0,0 +1,202 @@
// Metro module 8397 (f8398).
import { useCallback, useMemo } from "react";
import { View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { PremiumTypes, TieredTenureBadge } from "../../PremiumConstants";
import { AnalyticsPages, UserSettingsSections } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useMobileTenureBadgeImages } from "./hooks/useMobileTenureBadgeImages";
import { getTieredTenureBadgeData } from "../../../user_profile/TieredTenureBadgeUtils";
import { getTenureBadgeRequirementString } from "../hooks/useTenureBadgeRequirementString";
import FastImage from "../../../../components_native/common/FastImage";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { useTieredTenureBadgeDataForUser, usePremiumSinceForUser } from "../hooks/useTenureBadging";
import { useStateFromStores } from "../../../../_bundle/Module589";
import * as _PremiumTypeUtils from "../../../../utils/PremiumTypeUtils";
import useTrackImpression from "../../../app_analytics/useTrackImpression";
import { ImpressionTypes, ImpressionNames } from "../../../../_bundle/Module503";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import { openUserSettings } from "../../../user_settings/core/native/openUserSettings";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { getUserProfileActionSheetKey } from "../../../user_profile/native/showUserProfileActionSheet";
import usePremiumFeatureUpsellGetNitro from "../../roadblocks/native/hooks/usePremiumFeatureUpsellGetNitro";
import NitroUpsellButton from "../../components/native/NitroUpsellButton";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetScrollView } from "../../../../_bundle/Module5245";
let c5387_12, useStyles;
const TieredTenureBadgeItem = function TieredTenureBadgeItem(props) {
const badge = props.badge;
let isUsersBadge = props.isUsersBadge;
const premiumSince = props.premiumSince;
const styles2 = useStyles();
const small = useMobileTenureBadgeImages(badge)?.small;
const tieredTenureBadgeData = getTieredTenureBadgeData(badge);
const tenureBadgeRequirementString = getTenureBadgeRequirementString(badge, tieredTenureBadgeData?.tenureReqNumMonths);
const r34 = tieredTenureBadgeData == null;
let r35 = null;
if (!r34) {
const style = [styles2.badgeContainer, isUsersBadge ? styles2.usersBadgeContainer : isUsersBadge];
const r46 = [<FastImage resizeMode="contain" source={small} />, <Text style={styles2.badgeName} variant="heading-md/semibold" color="mobile-text-heading-primary">
{intl.string(tieredTenureBadgeData.nameUnformatted)}
</Text>, <Text style={styles2.badgeRequirement} variant="text-xs/normal" color="mobile-text-heading-primary">{tenureBadgeRequirementString}</Text>, ,];
if (isUsersBadge) {
isUsersBadge = premiumSince != null;
}
if (isUsersBadge) {
isUsersBadge = <Text style={styles2.badgePremiumSince} variant="text-xs/normal" color="text-muted">
{intl.formatToPlainString(t.Hu4jfi, {
date: new Date(premiumSince)
})}
</Text>;
}
r46[3] = isUsersBadge;
r35 = <View style={style}>{r46}</View>;
}
return r35;
};
c5387_12 = "TIERED_TENURE_BADGE_ACTION_SHEET";
useStyles = createStyles({
headerContainer: {
paddingHorizontal: 24,
alignItems: "center"
},
title: {
marginTop: 8,
paddingHorizontal: 12,
textAlign: "center"
},
subtitle: {
marginTop: 8,
textAlign: "center"
},
container: {
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "center",
paddingHorizontal: 24,
marginTop: 16
},
rowContainer: {
flexDirection: "row",
width: "100%",
height: 160,
gap: 8,
justifyContent: "center",
alignItems: "center",
marginTop: 24
},
rowContainerWithUsersBadge: {
height: 186
},
badgeContainer: {
minWidth: 110,
height: "100%",
paddingTop: 16,
alignItems: "center",
paddingHorizontal: 8
},
usersBadgeContainer: {
backgroundColor: Module712.colors.BACKGROUND_MOD_MUTED,
borderWidth: 1.2,
borderColor: Module712.colors.BACKGROUND_MOD_STRONG,
borderRadius: Module712.radii.sm
},
badgeName: {
marginTop: 8
},
badgeRequirement: {
marginTop: 4
},
badgePremiumSince: {
width: 90,
marginTop: 4,
textAlign: "center"
},
footer: {
marginHorizontal: 24
}
});
export default function TieredTenureBadgeActionSheet(props) {
let props2;
const { userId, shouldShowCTA = true } = props;
const styles = useStyles();
const tieredTenureBadgeDataForUser = useTieredTenureBadgeDataForUser(userId);
const premiumSinceForUser = usePremiumSinceForUser(userId);
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const isPremium = _PremiumTypeUtils.isPremium(stateFromStores, PremiumTypes.TIER_2);
const isPremiumAtLeast = _PremiumTypeUtils.isPremiumAtLeast(stateFromStores?.premiumType, PremiumTypes.TIER_0);
useTrackImpression({
type: ImpressionTypes.HALFSHEET,
name: ImpressionNames.TIERED_TENURE_BADGE_MODAL,
properties: {
badge: tieredTenureBadgeDataForUser?.id,
premium_type: isPremium,
viewed_user_id: userId
}
}, {
disableTrack: tieredTenureBadgeDataForUser?.id == null
}, [tieredTenureBadgeDataForUser?.id]);
const bottom = useSafeAreaInsets_native().bottom;
const callback = useCallback(() => {
openUserSettings({
screen: UserSettingsSections.PREMIUM
});
ActionSheetActionCreators.hideActionSheet(c5387_12);
ActionSheetActionCreators.hideActionSheet(getUserProfileActionSheetKey(userId));
}, [userId]);
const premiumFeatureUpsellGetNitro = usePremiumFeatureUpsellGetNitro(false, callback, AnalyticsPages.TIERED_TENURE_BADGES_ACTION_SHEET, "replaceTopSheet");
const { loading, onPress } = premiumFeatureUpsellGetNitro;
const memo = useMemo(() => {
let length2;
const r10 = Object.values(TieredTenureBadge);
const r11 = [];
const length = r10.length;
let r0 = 0;
if (0 < length) {
do {
const r1 = r0 + 3;
r11.push(r10.slice(r0, r1));
length2 = r10.length;
r0 = r1;
} while (r0 < length2);
}
return r11;
}, []);
const r130 = <View style={styles.headerContainer}>
<Text variant="heading-xl/bold" color="mobile-text-heading-primary" style={styles.title}>
{isPremium ? intl.string(t.Og62j7) : intl.string(t.RtGeFS)}
</Text>
<Text variant="text-md/medium" color="text-default" style={styles.subtitle}>
{isPremium ? intl.string(t.IdAP91) : intl.format(t["bF+q7R"], {
learnMoreHook: callback
})}
</Text>
</View>;
const r134 = {
style: [styles.footer, {
paddingBottom: bottom
}],
children: null
};
if (isPremium) {
r134.children = <NitroUpsellButton shiny={false} text={intl.string(t.hvVgAZ)} onPress={callback} />;
props2 = r134;
} else {
r134.children = <NitroUpsellButton loading={loading} text={isPremiumAtLeast ? intl.string(t.IJI7yk) : intl.string(t.pj0XBN)} onPress={onPress} />;
props2 = r134;
}
const r161 = <View {...props2} />;
return <BottomSheet scrollable startExpanded footer={shouldShowCTA ? r161 : void 0}>
<BottomSheetScrollView contentContainerStyle={[styles.container, {
paddingBottom: bottom + 64
}]}>
{r130}
{memo.map((a0, a1) => <View key={a1} style={[styles.rowContainer, a0.some((item) => item === tieredTenureBadgeDataForUser?.id) && styles.rowContainerWithUsersBadge]}>
{a0.map((item, index) => <TieredTenureBadgeItem key={index} badge={item} isUsersBadge={item === tieredTenureBadgeDataForUser?.id} premiumSince={premiumSinceForUser} />)}
</View>)}
</BottomSheetScrollView>
</BottomSheet>;
};
export const TIERED_TENURE_BADGE_ACTION_SHEET_KEY = "TIERED_TENURE_BADGE_ACTION_SHEET";
@@ -0,0 +1,63 @@
// Metro module 8440 (f8441).
import { useMemo } from "react";
import { View } from "react-native";
import { UserSettingsSections } from "../../../../Constants";
import { ContentDismissActionType } from "../../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useMobileTenureBadgeImages } from "./hooks/useMobileTenureBadgeImages";
import FastImage from "../../../../components_native/common/FastImage";
import { getTieredTenureBadge, getTieredTenureBadgeData } from "../../../user_profile/TieredTenureBadgeUtils";
import { DismissibleContent } from "../../../../_bundle/Module1358";
import { useSelectedDismissibleContent } from "../../../dismissible_content/hooks/useSelectedDismissibleContent";
import { intl, t } from "../../../../intl/index.native";
import { openUserSettings } from "../../../user_settings/core/native/openUserSettings";
import { useCoachmark } from "../../../../design/components/Coachmark/native/useCoachmark.native";
let useStyles;
const CoachmarkImg = function CoachmarkImg(props) {
const badge = props.badge;
const styles = useStyles();
const medium = useMobileTenureBadgeImages(badge?.id)?.medium;
return badge == null ? null : <View style={styles.imageContainer}>
<FastImage resizeMode="contain" style={styles.image} source={{
uri: medium
}} />
</View>;
};
useStyles = createStyles({
image: {
width: "100%",
height: "100%"
},
imageContainer: {
width: 110,
height: 72,
marginTop: 16
}
});
export default function TieredTenureBadgeCoachmark({ targetRef, badgeId }) {
const tieredTenureBadge = getTieredTenureBadge(badgeId);
const tieredTenureBadgeData = tieredTenureBadge != null ? getTieredTenureBadgeData(tieredTenureBadge) : null;
const [r32, r13] = useSelectedDismissibleContent(tieredTenureBadgeData != null ? [DismissibleContent.TIERED_TENURE_BADGE_COACHMARK] : []);
let c16576_1 = r32;
let c16576_2 = r13;
useCoachmark(targetRef, useMemo(() => ({
offsetY: 12,
title: intl.string(t.Ajj8iG),
description: intl.string(t["WUNqD/"]),
position: "bottom",
visible: c16576_1 === DismissibleContent.TIERED_TENURE_BADGE_COACHMARK,
onDismiss: () => {
c16576_2(ContentDismissActionType.USER_DISMISS);
},
renderImgComponent: () => <CoachmarkImg badge={tieredTenureBadgeData} />,
onButtonPress: () => {
c16576_2(ContentDismissActionType.TAKE_ACTION);
openUserSettings({
screen: UserSettingsSections.PREMIUM
});
},
buttonLabel: intl.string(t.RzWDqY),
buttonVariant: "experimental_premium-primary"
}), [r13, r32, tieredTenureBadgeData]));
return null;
};
@@ -0,0 +1,112 @@
// Metro module 12469 (f12470).
import { useCallback } from "react";
import { View } from "react-native";
import UserStore from "../../../../stores/UserStore";
import { AnalyticEvents } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useTieredTenureBadgeData, usePremiumSince, TieredTenureBadgeStatus } from "../hooks/useTenureBadging";
import { useTimeUntilNextBadge } from "../hooks/useTimeUntilNextBadge";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useMobileTenureBadgeImages } from "./hooks/useMobileTenureBadgeImages";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { TIERED_TENURE_BADGE_ACTION_SHEET_KEY } from "./TieredTenureBadgeActionSheet";
import { intl, t } from "../../../../intl/index.native";
import Module12472 from "../../../../_bundle/Module12472";
import { Text } from "../../../../design/components/Text/native/Text";
import { getTenureBadgeRequirementString } from "../hooks/useTenureBadgeRequirementString";
import PremiumPerkCard from "../../native/PremiumPerkCard";
import FastImage from "../../../../components_native/common/FastImage";
const useStyles = createStyles({
badgeNameContainer: {
flexDirection: "row"
},
tenureRequirements: {
marginStart: 4
},
image: {
width: "100%",
height: "100%"
},
imageContainer: {
height: 238,
paddingVertical: 32
},
upcomingBadge: {
opacity: 0.4
},
title: {
marginTop: 0
}
});
export function TieredTenureBadgePerkCard() {
const tieredTenureBadgeData = useTieredTenureBadgeData();
const premiumSince = usePremiumSince();
const timeUntilNextBadge = useTimeUntilNextBadge();
const styles = useStyles();
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
const large = useMobileTenureBadgeImages(tieredTenureBadgeData?.id)?.large;
const callback = useCallback(() => {
if (stateFromStores != null) {
if (tieredTenureBadgeData?.id != null) {
AnalyticsUtils.track(AnalyticEvents.TIERED_TENURE_BADGE_PERK_CARD_CLICKED, {
badge: tieredTenureBadgeData?.id
});
}
ActionSheetActionCreators.openLazy(import("./TieredTenureBadgeActionSheet"), TIERED_TENURE_BADGE_ACTION_SHEET_KEY, {
userId: stateFromStores.id,
shouldShowCTA: false
});
}
}, [stateFromStores, tieredTenureBadgeData?.id]);
if (tieredTenureBadgeData == null) {
return null;
}
const pillText = tieredTenureBadgeData.status === TieredTenureBadgeStatus.UPCOMING ? intl.string(t.O9TBwQ) : intl.string(t["jyYgZ+"]);
const r74 = premiumSince != null;
let r18 = null;
let uri = large;
if (r74) {
const status = tieredTenureBadgeData.status;
if (TieredTenureBadgeStatus.EARNED === status) {
r18 = intl.format(t.Hu4jfi, {
date: new Date(premiumSince)
});
uri = large;
} else {
const UPCOMING = TieredTenureBadgeStatus.UPCOMING;
r18 = null;
uri = large;
if (UPCOMING === status) {
const r84 = timeUntilNextBadge != null;
r18 = null;
uri = large;
if (r84) {
r18 = intl.format(t.vwLvec, {
timeFrame: intl.formatToPlainString(t["k2UNz+"], {
days: timeUntilNextBadge.days
}),
date: new Date(premiumSince)
});
uri = Module12472;
}
}
}
}
const bodyComponent = <View>
<View style={styles.badgeNameContainer}>
<Text variant="heading-md/medium" color="text-default">
{intl.string(tieredTenureBadgeData.nameUnformatted)}
</Text>
<Text variant="heading-md/medium" color="text-muted" style={styles.tenureRequirements}>
{getTenureBadgeRequirementString(tieredTenureBadgeData.id, tieredTenureBadgeData.tenureReqNumMonths)}
</Text>
</View>
{r18 != null && <Text variant="heading-sm/normal" color="text-muted">{r18}</Text>}
</View>;
return <PremiumPerkCard title={intl.string(t.rnsqpa)} titleStyle={styles.title} bodyComponent={bodyComponent} cta={intl.string(t.VsY8ZW)} buttonOnPress={callback} headerComponent={<View style={styles.imageContainer}>
<FastImage resizeMode="contain" style={[styles.image, tieredTenureBadgeData.status === TieredTenureBadgeStatus.UPCOMING && styles.upcomingBadge]} source={{
uri
}} />
</View>} pillText={pillText} />;
}
@@ -0,0 +1,74 @@
// Metro module 8398 (f8399).
import { TieredTenureBadge } from "../../../PremiumConstants";
import Module8399 from "../../../../../_bundle/Module8399";
import Module8400 from "../../../../../_bundle/Module8400";
import Module8401 from "../../../../../_bundle/Module8401";
import Module8402 from "../../../../../_bundle/Module8402";
import Module8403 from "../../../../../_bundle/Module8403";
import Module8404 from "../../../../../_bundle/Module8404";
import Module8405 from "../../../../../_bundle/Module8405";
import Module8406 from "../../../../../_bundle/Module8406";
import Module8407 from "../../../../../_bundle/Module8407";
import Module8408 from "../../../../../_bundle/Module8408";
import Module8409 from "../../../../../_bundle/Module8409";
import Module8410 from "../../../../../_bundle/Module8410";
import Module8411 from "../../../../../_bundle/Module8411";
import Module8412 from "../../../../../_bundle/Module8412";
import Module8413 from "../../../../../_bundle/Module8413";
import Module8414 from "../../../../../_bundle/Module8414";
import Module8415 from "../../../../../_bundle/Module8415";
import Module8416 from "../../../../../_bundle/Module8416";
import Module8417 from "../../../../../_bundle/Module8417";
import Module8418 from "../../../../../_bundle/Module8418";
import Module8419 from "../../../../../_bundle/Module8419";
import Module8420 from "../../../../../_bundle/Module8420";
import Module8421 from "../../../../../_bundle/Module8421";
import Module8422 from "../../../../../_bundle/Module8422";
const r16 = {};
r16[TieredTenureBadge.PREMIUM_TENURE_1_MONTH] = {
small: Module8399,
medium: Module8400,
large: Module8401
};
r16[TieredTenureBadge.PREMIUM_TENURE_3_MONTH] = {
small: Module8402,
medium: Module8403,
large: Module8404
};
r16[TieredTenureBadge.PREMIUM_TENURE_6_MONTH] = {
small: Module8405,
medium: Module8406,
large: Module8407
};
r16[TieredTenureBadge.PREMIUM_TENURE_12_MONTH] = {
small: Module8408,
medium: Module8409,
large: Module8410
};
r16[TieredTenureBadge.PREMIUM_TENURE_24_MONTH] = {
small: Module8411,
medium: Module8412,
large: Module8413
};
r16[TieredTenureBadge.PREMIUM_TENURE_36_MONTH] = {
small: Module8414,
medium: Module8415,
large: Module8416
};
r16[TieredTenureBadge.PREMIUM_TENURE_60_MONTH] = {
small: Module8417,
medium: Module8418,
large: Module8419
};
r16[TieredTenureBadge.PREMIUM_TENURE_72_MONTH] = {
small: Module8420,
medium: Module8421,
large: Module8422
};
let c5388_0 = r16;
export function useMobileTenureBadgeImages(a0) {
return a0 != null ? c5388_0[a0] : null;
}
export function getMobileTenureBadgeImages(a0) {
return c5388_0[a0];
}
@@ -0,0 +1,45 @@
// Metro module 8394 (f8395).
import { useCallback } from "react";
import UserStore from "../../../../../stores/UserStore";
import { PremiumTypes } from "../../../PremiumConstants";
import { DEFAULT_PREMIUM_BADGE_ID } from "../../Constants";
import { AnalyticEvents, UserSettingsSections } from "../../../../../Constants";
import { UserProfileThemeTypes } from "../../../../user_profile/native/Constants";
import { useIsPremiumSubscriber } from "../../../useIsPremiumSubscriber";
import { getTieredTenureBadge } from "../../../../user_profile/TieredTenureBadgeUtils";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import { openUserSettings } from "../../../../user_settings/core/native/openUserSettings";
import ActionSheetActionCreators from "../../../../action_sheet/native/ActionSheetActionCreators";
import { TIERED_TENURE_BADGE_ACTION_SHEET_KEY } from "../TieredTenureBadgeActionSheet";
import AnalyticsUtils from "../../../../../utils/AnalyticsUtils";
export function useTieredTenureBadgeClickHandler(a0, a1, a2) {
let isPremiumSubscriber2;
const badge = a0;
const userId = a1;
const isPremiumSubscriber = useIsPremiumSubscriber(PremiumTypes.TIER_2);
let r16 = typeof a0 === "string" ? getTieredTenureBadge(a0) != null : typeof a0 === "string";
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
if (!r16) {
r16 = a0 === DEFAULT_PREMIUM_BADGE_ID && a1 === stateFromStores?.id && isPremiumSubscriber;
}
isPremiumSubscriber2 = r16;
const callback = useCallback(() => {
if (a2 === UserProfileThemeTypes.YOU_SCREEN) {
openUserSettings({
screen: UserSettingsSections.PREMIUM
});
} else {
ActionSheetActionCreators.openLazy(import("../TieredTenureBadgeActionSheet"), TIERED_TENURE_BADGE_ACTION_SHEET_KEY, {
userId
}, "stack");
}
if (isPremiumSubscriber2) {
AnalyticsUtils.track(AnalyticEvents.TIERED_TENURE_BADGE_CLICKED, {
badge,
viewed_user_id: userId,
premium_type: isPremiumSubscriber
});
}
}, [a2, a1, isPremiumSubscriber2, a0, isPremiumSubscriber]);
return isPremiumSubscriber2 ? callback : null;
}