150 lines
7.2 KiB
TypeScript
150 lines
7.2 KiB
TypeScript
// Metro module 9700 (f9701).
|
|
import { useMemo, useCallback, useState } from "react";
|
|
import UserStore from "../../../../stores/UserStore";
|
|
import { PaymentFlowStep, getBasePurchaseFlowAnalyticsFields } from "../PremiumAnalyticsUtils";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import { useStateFromStores } from "../../../../_bundle/Module589";
|
|
import { useFetchWishlistAndProfileInfoForUser, useShouldShowWishlistInDMGifting } from "../../../wishlists/hooks/useWishlistHooks";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import { getHeaderCloseButton, getHeaderBackButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
|
|
import PremiumGiftPlanSelect from "./PremiumGiftPlanSelect";
|
|
import GiftingSKUSelectScreen from "../../gifting/native/views/promotions/GiftingSKUSelectScreen";
|
|
import PremiumGiftCustomization from "./PremiumGiftCustomization";
|
|
import PremiumGiftSuccess from "./PremiumGiftSuccess";
|
|
import GiftingBadge_messages from "../../gifting/GiftingBadge.messages";
|
|
import GiftBadgePostPurchase from "./GiftBadgePostPurchase";
|
|
import { openGiftModal } from "../utils/openGiftModal";
|
|
import AnalyticsLocation from "../../../app_analytics/AnalyticsLocation";
|
|
import useAnalyticsLocations, { AnalyticsLocationProvider } from "../../../app_analytics/useAnalyticsLocations";
|
|
import useInitialValue from "../../../../hooks/useInitialValue";
|
|
import { v4 } from "../../../../_bundle/Module514";
|
|
import ModalActionCreators from "../../../../actions/ModalActionCreators";
|
|
import { isPremiumGiftingSupported } from "../../../device/BillingPlatformUtils";
|
|
import UnsupportedFeatureModal from "../../../billing/native/UnsupportedFeatureModal";
|
|
import { NativeGiftContextProvider } from "../../../payments/native/NativeGiftContext";
|
|
import PremiumGiftAnalytics from "./PremiumGiftAnalytics";
|
|
import { Navigator } from "../../../../design/components/Navigator/native/Navigator.native";
|
|
let c6417_7 = {
|
|
PLAN_SELECT: "PremiumGiftPlanSelect",
|
|
REWARD_SELECT: "GiftingSKUSelect",
|
|
CUSTOMIZATION: "PremiumGiftCustomization",
|
|
SUCCESS: "PremiumGiftSuccess",
|
|
GIFTING_BADGE: "GiftingBadgePostPurchase"
|
|
};
|
|
const r30 = {};
|
|
r30[c6417_7.PLAN_SELECT] = PaymentFlowStep.SKU_SELECT;
|
|
r30[c6417_7.REWARD_SELECT] = PaymentFlowStep.REWARD_SKU_SELECT;
|
|
r30[c6417_7.CUSTOMIZATION] = PaymentFlowStep.PLAN_SELECT;
|
|
r30[c6417_7.SUCCESS] = PaymentFlowStep.CONFIRM;
|
|
r30[c6417_7.GIFTING_BADGE] = PaymentFlowStep.CONFIRM;
|
|
let c6417_8 = r30;
|
|
const useStyles = createStyles({
|
|
header: {
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
|
|
shadowColor: "transparent"
|
|
}
|
|
});
|
|
export default function PremiumGiftModal(props) {
|
|
let setState;
|
|
const { recipientUserId: recipientUserId2, premiumType, planInterval, analyticsLocation, analyticsLocations } = props;
|
|
let initialRoute = props.initialRoute;
|
|
const { order, onDismiss } = props;
|
|
setState = void 0;
|
|
const analyticsLocations2 = useAnalyticsLocations(analyticsLocations).analyticsLocations;
|
|
const analyticsLoadId = useInitialValue(() => v4());
|
|
const memo = useMemo(() => getBasePurchaseFlowAnalyticsFields({
|
|
isGift: true,
|
|
analyticsLoadId,
|
|
analyticsLocation,
|
|
analyticsLocations
|
|
}), [analyticsLoadId, analyticsLocation, analyticsLocations]);
|
|
if (initialRoute == null) {
|
|
initialRoute = premiumType != null ? c6417_7.CUSTOMIZATION : c6417_7.PLAN_SELECT;
|
|
}
|
|
let recipientUserId, wishlist, userProfile, wishlistId, error, shouldShowWishlistInDMGifting;
|
|
const callback = useCallback(() => {
|
|
ModalActionCreators.pop();
|
|
if (onDismiss != null) {
|
|
onDismiss();
|
|
}
|
|
}, [onDismiss]);
|
|
recipientUserId = recipientUserId2;
|
|
wishlist = void 0;
|
|
userProfile = void 0;
|
|
wishlistId = void 0;
|
|
error = void 0;
|
|
shouldShowWishlistInDMGifting = void 0;
|
|
const styles = useStyles();
|
|
const stateFromStores = useStateFromStores([UserStore], () => recipientUserId != null ? UserStore.getUser(recipientUserId) : null);
|
|
const fetchWishlistAndProfileInfoForUser = useFetchWishlistAndProfileInfoForUser(recipientUserId);
|
|
wishlist = fetchWishlistAndProfileInfoForUser.wishlist;
|
|
userProfile = fetchWishlistAndProfileInfoForUser.userProfile;
|
|
wishlistId = fetchWishlistAndProfileInfoForUser.wishlistId;
|
|
error = fetchWishlistAndProfileInfoForUser.error;
|
|
shouldShowWishlistInDMGifting = useShouldShowWishlistInDMGifting({
|
|
isGift: true,
|
|
giftRecipient: stateFromStores,
|
|
isSocialLayerStorefrontEnabled: false
|
|
});
|
|
const PLAN_SELECT = c6417_7.PLAN_SELECT;
|
|
const r65 = shouldShowWishlistInDMGifting ? {
|
|
title: intl.string(t["JCFN/y"]),
|
|
headerLeft: getHeaderCloseButton(callback),
|
|
headerStyle: styles.header,
|
|
render: () => <PremiumGiftPlanSelect shouldUseDMWishlistGiftingDesign isLoadingWishlist={false} />
|
|
} : {
|
|
title: "",
|
|
headerShown: false,
|
|
render: () => <PremiumGiftPlanSelect shouldUseDMWishlistGiftingDesign={false} isLoadingWishlist={recipientUserId != null && !shouldShowWishlistInDMGifting && error == null && (userProfile == null || wishlistId != null && wishlist == null)} />
|
|
};
|
|
const screens = {};
|
|
screens[PLAN_SELECT] = r65;
|
|
screens[c6417_7.REWARD_SELECT] = {
|
|
title: "",
|
|
headerLeft: initialRoute === c6417_7.REWARD_SELECT ? getHeaderCloseButton(callback) : getHeaderBackButton(),
|
|
headerStyle: styles.header,
|
|
render: (a0) => <GiftingSKUSelectScreen defaultHighlightedReward={a0.defaultHighlightedReward} allRewards={a0.allRewards} claimableRewards={a0.claimableRewards} onSelect={a0.onSelect} />
|
|
};
|
|
screens[c6417_7.CUSTOMIZATION] = {
|
|
title: "",
|
|
headerLeft: initialRoute === c6417_7.CUSTOMIZATION ? getHeaderCloseButton(callback) : getHeaderBackButton(),
|
|
headerStyle: styles.header,
|
|
render: () => <PremiumGiftCustomization />
|
|
};
|
|
screens[c6417_7.SUCCESS] = {
|
|
title: "",
|
|
headerLeft: getHeaderCloseButton(callback),
|
|
headerStyle: styles.header,
|
|
render: () => <PremiumGiftSuccess />
|
|
};
|
|
screens[c6417_7.GIFTING_BADGE] = {
|
|
title: intl.string(GiftingBadge_messages.roVAey),
|
|
headerLeft: getHeaderCloseButton(callback),
|
|
headerTransparent: true,
|
|
headerStyle: {
|
|
backgroundColor: "transparent",
|
|
shadowColor: "transparent"
|
|
},
|
|
render: (a0) => <GiftBadgePostPurchase currentProgress={a0.currentProgress} onSendGift={() => {
|
|
openGiftModal({
|
|
analyticsLocations: [AnalyticsLocation.GIFTING_BADGE_POST_PURCHASE]
|
|
});
|
|
}} />
|
|
};
|
|
let currentStep;
|
|
[currentStep, setState] = useState(c6417_8[initialRoute]);
|
|
return isPremiumGiftingSupported() ? <AnalyticsLocationProvider value={analyticsLocations2}>
|
|
<NativeGiftContextProvider basePurchaseAnalytics={memo} recipientUserId={recipientUserId} onClose={callback} setCurrentAnalyticsStep={setState} premiumType={premiumType} planInterval={planInterval} initialOrder={order}>
|
|
<PremiumGiftAnalytics currentStep={currentStep}>
|
|
<Navigator initialRouteName={initialRoute} screens={screens} onStateChange={(event) => {
|
|
if (event != null) {
|
|
setState(c6417_8[event.routes[event.index].name]);
|
|
}
|
|
}} />
|
|
</PremiumGiftAnalytics>
|
|
</NativeGiftContextProvider>
|
|
</AnalyticsLocationProvider> : <UnsupportedFeatureModal title={intl.string(t["JCFN/y"])} />;
|
|
};
|
|
export { c6417_7 as PremiumGiftScreens };
|