Files
discord-decomp/modules/quests/native/QuestOrbMultiplierPerkInfoActionSheet.tsx
T
2026-11-01 12:12:55 +02:00

124 lines
5.7 KiB
TypeScript

// Metro module 14190 (f14191).
import { useCallback, useMemo } from "react";
import { View } from "react-native";
import { AnalyticsPages, HelpdeskArticles, UserSettingsSections } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { openUserSettings } from "../../user_settings/core/native/openUserSettings";
import usePremiumFeatureUpsellGetNitro from "../../premium/roadblocks/native/hooks/usePremiumFeatureUpsellGetNitro";
import Linking from "../../../lib/native/Linking";
import HelpdeskUtils from "../../../utils/HelpdeskUtils";
import { Button } from "../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../intl/index.native";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import { ActionSheetHeaderBar } from "../../../design/components/Sheet/native/ActionSheetHeaderBar.native";
import { NitroQuestOrbsMultiplierRive } from "../../../_bundle/Module3901";
import { Text } from "../../../design/components/Text/native/Text";
import * as _QuestOrbMultiplierUtils from "../utils/QuestOrbMultiplierUtils";
import { QuestOrbMultiplierEligibilityType } from "../utils/QuestOrbMultiplierUtils";
import Crepe_messages from "../../croissant/crepe/Crepe.messages";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import PremiumRewardGradient from "./PremiumRewardGradient";
let contentStyles, useStyles, SheetContent;
const Footer = function Footer(props) {
let props2;
const eligibleToReceivePremiumRewards = props.eligibleToReceivePremiumRewards;
const styles = useStyles();
const callback2 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
openUserSettings({
screen: UserSettingsSections.PREMIUM
});
}, []);
const premiumFeatureUpsellGetNitro = usePremiumFeatureUpsellGetNitro(false, callback2, AnalyticsPages.QUEST_ORB_MULTIPLIER_PERK_INFO);
const { loading, onPress } = premiumFeatureUpsellGetNitro;
const callback = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
Linking.openURL(HelpdeskUtils.getArticleURL(HelpdeskArticles.VIRTUAL_CURRENCY_ORB_MULTIPLIER_LEARN_MORE));
}, []);
const callback3 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
}, []);
const r36 = {
style: styles.buttonContainer,
children: null
};
if (eligibleToReceivePremiumRewards) {
r36.children = [<Button size="lg" text={intl.string(t.hvVgAZ)} variant="primary" onPress={callback} />, <Button size="lg" variant="secondary" text={intl.string(t.cpT0Cq)} onPress={callback3} />];
props2 = r36;
} else {
r36.children = [<Button size="lg" variant="primary" text={intl.string(t.pj0XBN)} onPress={onPress} loading={loading} />, <Button size="lg" variant="secondary" text={intl.string(t.PcTCB7)} onPress={callback2} />];
props2 = r36;
}
return <View {...props2} />;
};
SheetContent = function SheetContent(props) {
const { title, body, eligibleToReceivePremiumRewards } = props;
const styles = useStyles();
return <>
<ActionSheetHeaderBar variant="floating" />
<View style={[styles.container, {
marginBottom: useSafeAreaInsets_native().bottom
}]}>
<View style={styles.contentContainer}>
<View style={styles.riveContainer}>
<NitroQuestOrbsMultiplierRive />
</View>
<Text style={[styles.text, styles.title]} variant="display-md" color="mobile-text-heading-primary" accessibilityRole="header">{title}</Text>
<Text style={styles.text} variant="text-sm/normal">{body}</Text>
<Footer eligibleToReceivePremiumRewards={eligibleToReceivePremiumRewards} />
</View>
</View>
</>;
};
contentStyles = {
marginBottom: 0
};
useStyles = createStyles({
container: {
alignItems: "center",
paddingHorizontal: Module712.space.PX_16
},
contentContainer: {
alignItems: "center",
width: "100%",
marginTop: Module712.space.PX_48
},
text: {
textAlign: "center",
paddingHorizontal: Module712.space.PX_24,
paddingBottom: Module712.space.PX_16
},
buttonContainer: {
width: "100%",
gap: Module712.space.PX_12,
marginVertical: Module712.space.PX_16
},
title: {
textTransform: "uppercase",
textAlign: "center",
lineHeight: 34,
paddingHorizontal: 0
},
riveContainer: {
width: "100%",
height: 160
}
});
export default function QuestOrbMultiplierPerkInfoActionSheet(props) {
const { multiplier, orbMultiplierEligibility } = props;
const shouldReceiveQuestOrbMultiplier = _QuestOrbMultiplierUtils.shouldReceiveQuestOrbMultiplier(orbMultiplierEligibility);
return <BottomSheet scrollable={false} handleDisabled startExpanded contentStyles={contentStyles}>
<PremiumRewardGradient visible={orbMultiplierEligibility === QuestOrbMultiplierEligibilityType.NITRO || orbMultiplierEligibility === QuestOrbMultiplierEligibilityType.UPSELL}>
<SheetContent title={useMemo(() => orbMultiplierEligibility === QuestOrbMultiplierEligibilityType.CREPE ? intl.string(Crepe_messages.c5usUr) : intl.string(t.Csf5Ol), [orbMultiplierEligibility])} body={useMemo(() => orbMultiplierEligibility === QuestOrbMultiplierEligibilityType.CREPE ? intl.format(Crepe_messages.UkrcSH, {
bonusOrbMultiplier: multiplier
}) : shouldReceiveQuestOrbMultiplier ? intl.format(t.NpUfej, {
bonusOrbMultiplier: multiplier
}) : intl.format(t["G5k+lZ"], {
bonusOrbMultiplier: multiplier
}), [shouldReceiveQuestOrbMultiplier, orbMultiplierEligibility, multiplier])} eligibleToReceivePremiumRewards={shouldReceiveQuestOrbMultiplier} />
</PremiumRewardGradient>
</BottomSheet>;
};