// Metro module 10964 (f10965). import { useEffect, useMemo, useCallback } from "react"; import { ActivityIndicator, View } from "react-native"; import QuestStore from "../QuestStore"; import { REWARD_CODE_PLACEHOLDER } from "../QuestConstants"; import { createStyles } from "../../../design/components/Styles/native/createStyles"; import Module712 from "../../../_bundle/Module712"; import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native"; import { useStateFromStoresObject, useStateFromStores } from "../../../_bundle/Module589"; import { useClaimOrFetchRewardCode, useClaimRewardCodePrimaryCtaClickHandler } from "../hooks/RewardCodeClaimHooks"; import ToastActionCreators from "../../toast/native/ToastActionCreators"; import { intl, t } from "../../../intl/index.native"; import Module9172 from "../../../_bundle/Module9172"; import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators"; import * as _QuestRewardUtils from "../utils/QuestRewardUtils"; import { getRewardCodeQuestReward } from "../utils/QuestRewardUtils"; import { copy } from "../../../utils/ClipboardUtils.native"; import { CopyIcon } from "../../../design/components/Icon/native/redesign/generated/CopyIcon"; import { getRewardCodeRedemptionInstructions } from "../hooks/QuestCopyHooks"; import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native"; import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native"; import { Text } from "../../../design/components/Text/native/Text"; import MarkupUtils from "../../markup/MarkupUtils"; import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native"; import { TableRow } from "../../../design/components/TableRow/native/TableRow.native"; import { Button } from "../../../design/components/Button/native/Button.native"; import { QuestContentImpressionTrackerNative } from "./QuestContentImpressionTracker.native"; let useStyles; const QuestRewardCodeClaimBottomSheet = function QuestRewardCodeClaimBottomSheet(props) { let rewardCode, hasError, isTieredRewardCodeQuest, memo; const { quest, questContent: questContent2, questContentPosition: questContentPosition2, sourceQuestContent: sourceQuestContent2 } = props; rewardCode = void 0; hasError = void 0; isTieredRewardCodeQuest = void 0; memo = void 0; const styles = useStyles(useSafeAreaInsets_native().bottom); const stateFromStoresObject = useStateFromStoresObject([QuestStore], () => ({ rewardCode: QuestStore.getRewardCode(quest.id), isFetchingRewardCode: QuestStore.isFetchingRewardCode(quest.id), isClaimingReward: QuestStore.isClaimingReward(quest.id) })); rewardCode = stateFromStoresObject.rewardCode; let isFetchingRewardCode = stateFromStoresObject.isFetchingRewardCode; const isClaimingReward = stateFromStoresObject.isClaimingReward; const claimOrFetchRewardCode = useClaimOrFetchRewardCode({ isClaimingReward, isFetchingRewardCode, quest, questContent: questContent2, rewardCode }); const { claimCode, fetchCode } = claimOrFetchRewardCode; hasError = claimOrFetchRewardCode.hasError; useEffect(() => { if (hasError) { ToastActionCreators.open({ key: "CLAIM_QUEST_REWARD_ERROR", content: intl.string(t.CKsXk3), icon: Module9172 }); ActionSheetActionCreators.hideActionSheet(); } }, [hasError]); isTieredRewardCodeQuest = _QuestRewardUtils.isTieredRewardCodeQuest({ quest }); memo = useMemo(() => isTieredRewardCodeQuest ? getRewardCodeQuestReward({ quest, idx: rewardCode?.tier }) : getRewardCodeQuestReward({ quest, idx: 0 }), [isTieredRewardCodeQuest, quest, rewardCode?.tier]); const memo2 = useMemo(() => { if (memo?.redemptionLink != null && memo.redemptionLink !== "") { return rewardCode?.code != null && rewardCode.code !== "" ? memo.redemptionLink.replace(REWARD_CODE_PLACEHOLDER, encodeURIComponent(rewardCode.code)) : memo.redemptionLink; } }, [memo, rewardCode]); const claimRewardCodePrimaryCtaClickHandler = useClaimRewardCodePrimaryCtaClickHandler({ claimCode, fetchCode, hasError, onDismiss: ActionSheetActionCreators.hideActionSheet, quest, questContent: questContent2, questContentPosition: questContentPosition2, redemptionLink: memo2, sourceQuestContent: sourceQuestContent2 }); const callback = useCallback(() => { if (rewardCode != null) { copy(rewardCode.code, () => ToastActionCreators.open({ key: "TOAST_QUEST_REWARD_CODE_COPIED", content: intl.string(t.MSaeTe), icon: () => })); } }, [rewardCode]); const rewardCodeRedemptionInstructions = getRewardCodeRedemptionInstructions({ quest, rewardCode }); if (!isFetchingRewardCode) { isFetchingRewardCode = isClaimingReward; } if (!isFetchingRewardCode) { isFetchingRewardCode = rewardCode?.code == null; } const props2 = { header: , startExpanded: true, children: {rewardCode != null && rewardCodeRedemptionInstructions != null && {MarkupUtils.parse(rewardCodeRedemptionInstructions, true, { allowLinks: true })} } } onPress={rewardCode?.code != null ? callback : void 0} /> {rewardCode?.code == null && }