Files
discord-decomp/modules/premium/promotions/native/BogoPromotionActionSheet.tsx
T
2026-11-01 12:12:55 +02:00

86 lines
3.3 KiB
TypeScript

// 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>;
};