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,54 @@
// Metro module 14788 (f14789).
import { useEffect, useCallback } from "react";
import { PremiumTypes } from "../../PremiumConstants";
import { AnalyticEvents } from "../../../../Constants";
import { ContentDismissActionType } from "../../../dismissible_content/DismissibleContentConstants";
import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations";
import AnalyticsLocation from "../../../app_analytics/AnalyticsLocation";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import UserTrialActionCreators_android from "../../UserTrialActionCreators.android";
import openPremiumModal from "../../../../components_native/premium/openPremiumModal";
import { formatIntervalDuration } from "../../../../utils/PremiumUtils";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import PremiumTrialOfferActionSheetContent from "./PremiumTrialOfferActionSheetContent";
export default ({ markAsDismissed, userTrialOffer, fallbackPremiumType = PremiumTypes.TIER_2 }) => {
const analyticsLocations = useAnalyticsLocations(AnalyticsLocation.PREMIUM_TRIAL_OFFER_ACTION_SHEET).analyticsLocations;
useEffect(() => {
if (userTrialOffer != null) {
AnalyticsUtils.track(AnalyticEvents.PREMIUM_TRIAL_OFFER_ACTION_SHEET_VIEWED, {
location: analyticsLocations,
trial_id: userTrialOffer.trial_id
});
UserTrialActionCreators_android.acknowledgeUserTrialOffer(userTrialOffer);
}
}, []);
useEffect(() => {
if (userTrialOffer == null) {
markAsDismissed(ContentDismissActionType.AUTO_DISMISS);
}
}, [userTrialOffer, markAsDismissed]);
const callback = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.PREMIUM_TRIAL_OFFER_ACTION_SHEET_DISMISSED, {
location: analyticsLocations,
trial_id: userTrialOffer?.trial_id
});
markAsDismissed(ContentDismissActionType.USER_DISMISS);
}, [analyticsLocations, markAsDismissed, userTrialOffer]);
const callback2 = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.PREMIUM_TRIAL_OFFER_ACTION_SHEET_CTA_CLICKED, {
location: analyticsLocations,
trial_id: userTrialOffer?.trial_id
});
markAsDismissed(ContentDismissActionType.TAKE_ACTION);
openPremiumModal({
analyticsLocations
});
}, [analyticsLocations, markAsDismissed, userTrialOffer]);
const intervalDuration = formatIntervalDuration({
intervalType: userTrialOffer == null ? void 0 : userTrialOffer.subscription_trial?.interval,
intervalCount: userTrialOffer == null ? void 0 : userTrialOffer.subscription_trial?.interval_count
});
return userTrialOffer == null ? null : <BottomSheet key={userTrialOffer.id} startExpanded onDismiss={callback}>
<PremiumTrialOfferActionSheetContent intervalDuration={intervalDuration} trialOffer={userTrialOffer} onConfirm={callback2} fallbackPremiumType={fallbackPremiumType} />
</BottomSheet>;
};
@@ -0,0 +1,79 @@
// Metro module 14789 (f14790).
import { memo } from "react";
import { View } from "react-native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { UserIcon } from "../../../../design/components/Icon/native/redesign/generated/UserIcon";
import { intl, t } from "../../../../intl/index.native";
import { ChatSmileIcon } from "../../../../design/components/Icon/native/redesign/generated/ChatSmileIcon";
import { FolderIcon } from "../../../../design/components/Icon/native/redesign/generated/FolderIcon";
import { NitroWumpusFlightRight3dIllustration } from "../../../../design/assets/native";
import { Text } from "../../../../design/components/Text/native/Text";
import { getDisplayNameFromSku } from "../../../../utils/PremiumUtils";
import PremiumPerksList from "../../../../components_native/premium/PremiumPerksList";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { NitroWheelIcon } from "../../../../design/components/Icon/native/redesign/generated/NitroWheelIcon";
const useStyles = createStyles({
contentContainer: {
paddingHorizontal: 36,
paddingTop: 18,
paddingBottom: 36,
width: "100%",
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
alignItems: "flex-start",
display: "flex",
flexDirection: "column",
gap: 0
},
buttonContainer: {
marginVertical: 6,
width: "100%",
height: 48
},
title: {
width: "100%",
textAlign: "center"
},
heroIllustrationContainer: {
alignItems: "center",
justifyContent: "center",
height: 188,
width: "100%"
}
});
const r37 = memo(function PremiumTrialOfferActionSheetContent(props) {
const { trialOffer, intervalDuration, onConfirm } = props;
const styles = useStyles();
const subscription_trial = trialOffer?.subscription_trial;
const perks = [{
IconComponent: UserIcon,
label: intl.string(t.kpMomJ),
description: intl.string(t.uVUtPw)
}, {
IconComponent: ChatSmileIcon,
label: intl.string(t["R2IV/Q"]),
description: intl.string(t["3SUJLd"])
}, {
IconComponent: FolderIcon,
label: intl.string(t["u/NJKc"]),
description: intl.string(t.i1UuMk)
}];
return <View style={styles.contentContainer}>
<View style={styles.heroIllustrationContainer}>
<NitroWumpusFlightRight3dIllustration width={180} height={180} />
</View>
<Text variant="heading-xl/bold" color="mobile-text-heading-primary" style={styles.title}>
{intl.formatToPlainString(t.q8eMc0, {
displayName: subscription_trial?.sku_id != null ? getDisplayNameFromSku(subscription_trial?.sku_id) : null,
duration: intervalDuration
})}
</Text>
<PremiumPerksList perks={perks} />
<View style={styles.buttonContainer}>
<Button size="lg" text={intl.formatToPlainString(t.xASjq5, {
duration: intervalDuration
})} onPress={onConfirm} grow icon={<NitroWheelIcon size="md" color={Module712.unsafe_rawColors.WHITE} />} />
</View>
</View>;
});
export default r37;