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,85 @@
// Metro module 15758 (f15759).
import { useCallback } from "react";
import { View } from "react-native";
import { PremiumTypes } from "../../PremiumConstants";
import { AnalyticsObjectTypes, AnalyticsObjects, AnalyticsPages, AnalyticsSections, HelpdeskArticles } from "../../../../Constants";
import { ContentDismissActionType } from "../../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations";
import openPremiumPlanSelectionActionSheet from "../../native/openPremiumPlanSelectionActionSheet";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import FastImage from "../../../../components_native/common/FastImage";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import HelpdeskUtils from "../../../../utils/HelpdeskUtils";
import NitroUpsellButton from "../../components/native/NitroUpsellButton";
const useStyles = createStyles({
container: {
dipslay: "flex",
flexDirection: "column",
justifyContent: "center",
alignItems: "center",
padding: Module712.space.PX_16,
borderRadius: Module712.radii.lg,
marginBottom: Module712.space.PX_24
},
buttonContainer: {
marginTop: Module712.space.PX_24,
width: 335,
height: 48
},
header: {
marginBottom: 12,
textAlign: "center"
},
subheader: {
textAlign: "center"
},
image: {
alignSelf: "center",
paddingBottom: Module712.space.PX_16,
height: 213,
width: 335,
borderRadius: Module712.radii.lg,
marginBottom: 12
}
});
export default function BogoPromotionActionSheet(props) {
const markAsDismissed = props.markAsDismissed;
const styles = useStyles();
const analyticsLocations = useAnalyticsLocations().analyticsLocations;
const callback = useCallback(() => {
markAsDismissed(ContentDismissActionType.PRIMARY);
openPremiumPlanSelectionActionSheet({
analyticsLocation: {
page: AnalyticsPages.BOGO_PROMOTION_ACTION_SHEET,
section: AnalyticsSections.FOOTER,
object: AnalyticsObjects.BUTTON_CTA,
objectType: AnalyticsObjectTypes.BUY
},
analyticsLocations,
premiumType: PremiumTypes.TIER_2
});
}, [analyticsLocations, markAsDismissed]);
return <BottomSheet onDismiss={useCallback(() => {
markAsDismissed(ContentDismissActionType.USER_DISMISS);
}, [markAsDismissed])}>
<View style={[styles.container]}>
<FastImage source={{
uri: "https://cdn.discordapp.com/assets/content/a59aed2e0e61a955dc3e0f4f6f7ab295e39f89a93c4f01e4bd84ed7fb418ec63.png"
}} style={styles.image} />
<Text style={[styles.header]} color="mobile-text-heading-primary" variant="heading-xl/bold">
{intl.string(t["6Jjfk8"])}
</Text>
<Text style={[styles.subheader]} color="text-subtle" variant="text-md/medium">
{intl.format(t.y7lJK6, {
helpCenterLink: HelpdeskUtils.getArticleURL(HelpdeskArticles.SUMMER_BOGO_2025)
})}
</Text>
<View style={[styles.buttonContainer]}>
<NitroUpsellButton text={intl.string(t.J61px0)} onPress={callback} />
</View>
</View>
</BottomSheet>;
};
@@ -0,0 +1,84 @@
// Metro module 6685 (f6686).
import { Image as Image2, View } from "react-native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations";
import { getButtonActionHandler } from "../../premium_marketing/native/PremiumMarketingButtonActions";
import useTrackImpression from "../../../app_analytics/useTrackImpression";
import { ImpressionTypes, ImpressionNames } from "../../../../_bundle/Module503";
import { MarketingComponentType } from "../../../../_bundle/Module6567";
import { useFormatStringWithCommonPremiumParams, getHelpArticleLinkProps } from "../PromotionStringUtils";
import { Text } from "../../../../design/components/Text/native/Text";
import Linking from "../../../../lib/native/Linking";
import NitroUpsellButton from "../../components/native/NitroUpsellButton";
const useStyles = createStyles({
container: {
width: "100%"
},
card: {
display: "flex",
width: "100%",
flexDirection: "column",
justifyContent: "flex-start",
padding: Module712.space.PX_16,
borderRadius: Module712.radii.lg,
backgroundColor: Module712.colors.BACKGROUND_SECONDARY_ALT,
overflow: "hidden"
},
image: {
width: "100%",
maxWidth: 317,
height: 144,
borderRadius: Module712.radii.md,
marginBottom: Module712.space.PX_16,
padding: Module712.space.PX_8,
alignSelf: "center"
},
bodyText: {
marginTop: Module712.space.PX_4
},
ctaButton: {
marginTop: Module712.space.PX_16
}
});
export default function MarketingPageBannerTile(props) {
const { style, cardStyle, componentId, bannerFields, analyticsPage, onPaymentSuccess, onPaymentDismiss } = props;
const styles = useStyles();
const analyticsLocations = useAnalyticsLocations().analyticsLocations;
const buttonAction = bannerFields.button?.buttonAction;
const button = bannerFields.button;
const buttonActionHandler = getButtonActionHandler({
buttonAction,
applicationId: button == null ? void 0 : button.navigableStorefrontApplicationId?.value,
analyticsLocations,
analyticsPage,
onPaymentSuccess,
onPaymentDismiss
});
useTrackImpression({
type: ImpressionTypes.VIEW,
name: ImpressionNames.PREMIUM_MARKETING_COMPONENT,
properties: {
component_type: MarketingComponentType.MARKETING_PAGE_BANNER,
component_id: componentId
}
});
const formatStringWithCommonPremiumParams = useFormatStringWithCommonPremiumParams(bannerFields.body);
const helpArticleLinkProps = getHelpArticleLinkProps(bannerFields.helpArticle, bannerFields.helpArticleId);
return <View style={[styles.container, style]}>
<View style={[styles.card, cardStyle]}>
{bannerFields.assetUrl !== "" && <Image2 source={{
uri: bannerFields.assetUrl
}} style={styles.image} resizeMode="contain" />}
<Text color="mobile-text-heading-primary" variant="text-lg/bold">{bannerFields.header}</Text>
<Text color="mobile-text-heading-primary" variant="text-sm/medium" style={styles.bodyText}>
{formatStringWithCommonPremiumParams}
{" "}
{helpArticleLinkProps != null && <Text color="text-link" variant="text-sm/medium" accessibilityRole="link" onPress={() => Linking.openURL(helpArticleLinkProps.url)}>{helpArticleLinkProps.linkText}</Text>}
</Text>
{bannerFields.button != null && <View style={styles.ctaButton}>
<NitroUpsellButton text={bannerFields.button.copy} onPress={buttonActionHandler} />
</View>}
</View>
</View>;
};
@@ -0,0 +1,126 @@
// Metro module 15761 (f15762).
import { useCallback } from "react";
import { View } from "react-native";
import AccessibilityStore from "../../../a11y/AccessibilityStore";
import { AnalyticsPages } from "../../../../Constants";
import { ContentDismissActionType } from "../../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import useAnalyticsLocations from "../../../app_analytics/useAnalyticsLocations";
import Dispatcher from "../../../../Dispatcher";
import { getButtonActionHandler } from "../../premium_marketing/native/PremiumMarketingButtonActions";
import useTrackImpression from "../../../app_analytics/useTrackImpression";
import { ImpressionTypes, ImpressionNames } from "../../../../_bundle/Module503";
import { MarketingComponentType } from "../../../../_bundle/Module6567";
import { getHelpArticleLinkProps } from "../PromotionStringUtils";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { getFile } from "../../../../utils/UploadUtils";
import Video from "../../../../components_native/common/Video";
import FastImage from "../../../../components_native/common/FastImage";
import { Text } from "../../../../design/components/Text/native/Text";
import Linking from "../../../../lib/native/Linking";
import NitroUpsellButton from "../../components/native/NitroUpsellButton";
import { intl, t } from "../../../../intl/index.native";
const useStyles = createStyles({
container: {
display: "flex",
flexDirection: "column",
alignItems: "center",
paddingVertical: 12,
paddingHorizontal: 20,
borderRadius: Module712.radii.lg
},
buttonContainer: {
marginTop: Module712.space.PX_24,
width: 335,
height: 48
},
header: {
marginBottom: Module712.space.PX_8,
textAlign: "center"
},
body: {
textAlign: "center"
},
image: {
height: 188,
width: 335,
borderRadius: Module712.radii.md,
marginBottom: Module712.space.PX_24
},
video: {
borderRadius: Module712.radii.md,
marginBottom: Module712.space.PX_24
}
});
export default function PremiumMarketingMomentActionSheet(props) {
let analyticsLocations, callback, helpArticleLinkProps;
const { markAsDismissed, bottomSheetData, componentId, promotionId } = props;
analyticsLocations = void 0;
callback = void 0;
helpArticleLinkProps = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
analyticsLocations = useAnalyticsLocations().analyticsLocations;
callback = useCallback((a0) => {
markAsDismissed(a0);
Dispatcher.dispatch({
type: "PREMIUM_MARKETING_ANNOUNCEMENT_MODAL_DISMISSED",
promotionId
});
}, [markAsDismissed, promotionId]);
const r40 = [bottomSheetData.button?.buttonAction, , , ,];
const button = bottomSheetData.button;
const r13 = button == null ? void 0 : button.navigableStorefrontApplicationId?.value;
const r45 = () => {
callback(ContentDismissActionType.PRIMARY);
const buttonAction = bottomSheetData.button?.buttonAction;
const button = bottomSheetData.button;
getButtonActionHandler({
buttonAction,
applicationId: button == null ? void 0 : button.navigableStorefrontApplicationId?.value,
analyticsLocations,
analyticsPage: AnalyticsPages.PREMIUM_MARKETING_MOMENT_ACTION_SHEET
})();
};
r40[1] = r13;
r40[2] = callback;
r40[3] = analyticsLocations;
const callback2 = useCallback(r45, r40);
const callback3 = useCallback(() => {
callback(ContentDismissActionType.USER_DISMISS);
}, [callback]);
useTrackImpression({
type: ImpressionTypes.HALFSHEET,
name: ImpressionNames.PREMIUM_MARKETING_COMPONENT,
properties: {
component_type: MarketingComponentType.MOBILE_BOTTOM_SHEET,
component_id: componentId,
dismissible_content: bottomSheetData.dismissibleContent
}
});
helpArticleLinkProps = getHelpArticleLinkProps(bottomSheetData.helpArticle, bottomSheetData.helpArticleId);
const r102 = [getFile({
uri: bottomSheetData.assetUrl
}).isVideo ? <Video src={{
videoURI: bottomSheetData.assetUrl,
uri: bottomSheetData.assetUrl
}} style={styles.video} muted height={188} width={335} paused={stateFromStores} resizeMode="contain" /> : <FastImage source={{
uri: bottomSheetData.assetUrl
}} style={styles.image} resizeMode="contain" />, <Text style={[styles.header]} color="mobile-text-heading-primary" variant="heading-lg/extrabold">{bottomSheetData.header}</Text>, <Text style={[styles.body]} color="text-default" variant="text-sm/normal">
{bottomSheetData.body}
{" "}
{helpArticleLinkProps != null && <Text color="text-link" variant="text-sm/normal" accessibilityRole="link" onPress={() => Linking.openURL(helpArticleLinkProps.url)}>{helpArticleLinkProps.linkText}</Text>}
</Text>, ,];
let text = bottomSheetData.button?.copy;
if (text == null) {
text = intl.string(t.J61px0);
}
r102[3] = <View style={[styles.buttonContainer]}>
<NitroUpsellButton text={text} onPress={callback2} />
</View>;
return <BottomSheet onDismiss={callback3}>
<View style={[styles.container]}>{r102}</View>
</BottomSheet>;
};