// Metro module 11902 (f11903).
import * as Module19 from "react";
import { useCallback, useEffect, useMemo, useRef } from "react";
import { AnalyticEvents, CurrencyCodes } from "../../../../Constants";
import { InternalPaymentGateways } from "../../../../_bundle/Module505";
import { useOrbCheckoutModalContext, OrbCheckoutModalContextProvider } from "../OrbCheckoutModalContext";
import { useFetchCollectiblesProduct } from "../../../collectibles/hooks/useFetchCollectiblesProduct";
import { Stack } from "../../../../design/components/Stack/native/Stack.native";
import { OrbCheckoutErrorCard, OrbCheckoutOrderSummary, OrbCheckoutPaymentSourceDetails, OrbCheckoutLegalFinePrint, OrbCheckoutPurchaseButton } from "./OrbCheckoutModalComponents";
import { get1PShopApplicationIdForSKU } from "../../VirtualCurrencyUtils";
import { trackPaymentFlowStartedAnalyticsAndCTP } from "../../../experiments/trigger_points/PaymentFlowStartedTriggerPoint";
import AnalyticsUtils from "../../../../utils/AnalyticsUtils";
import { useVirtualCurrencyBalance } from "../../hooks/useVirtualCurrencyBalance";
import ModalActionCreators from "../../../../actions/ModalActionCreators";
import { ModalScreen } from "../../../../design/components/Modal/native/ModalScreen.native";
import { ModalContent } from "../../../../design/components/Modal/native/ModalContent.native";
import { ModalFooter } from "../../../../design/components/Modal/native/ModalFooter.native";
import Module38 from "../../../../_bundle/Module38";
import { v4 } from "../../../../_bundle/Module514";
import { intl, t } from "../../../../intl/index.native";
import { getHeaderTextButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
import * as _Modal_native from "../../../../design/components/Modal/native/Modal.native";
import { HermesBuiltin } from "../../../../_hermes/prelude";
let c8157_13, OrbCheckoutModalFooter, OrbCheckoutModalScreen;
const OrbCheckoutModalContent = function OrbCheckoutModalContent(props) {
const orbBalance = props.orbBalance;
const orbCheckoutModalContext = useOrbCheckoutModalContext();
const { skuId: skuId3, orbRedemptionError: orbRedemptionError2 } = orbCheckoutModalContext;
let product = useFetchCollectiblesProduct(skuId3).product;
const r29 = [orbRedemptionError2 != null && , , ,];
if (product == null) {
product = null;
}
r29[1] = ;
r29[2] = ;
return {r29};
};
OrbCheckoutModalFooter = function OrbCheckoutModalFooter(props) {
return
;
};
c8157_13 = {
MAIN: "MAIN"
};
OrbCheckoutModalScreen = (props) => {
let callback, virtualCurrencyBalance, ref;
const startTime2 = props.startTime;
callback = void 0;
virtualCurrencyBalance = void 0;
ref = void 0;
const orbCheckoutModalContext = useOrbCheckoutModalContext();
const { onRedeemVirtualCurrency, orbRedemptionError } = orbCheckoutModalContext;
const startTime = startTime2;
const orbCheckoutModalContext2 = useOrbCheckoutModalContext();
const { skuId, loadId, analyticsLocations, orbProductContext } = orbCheckoutModalContext2;
const memo = useMemo(() => {
const r2 = {
load_id: loadId,
application_id: get1PShopApplicationIdForSKU(skuId),
location_stack: analyticsLocations,
sku_id: skuId,
currency: CurrencyCodes.DISCORD_ORB,
payment_gateway: InternalPaymentGateways.VIRTUAL_CURRENCY
};
let r21 = orbProductContext != null;
if (r21) {
let orbPriceAmount = orbProductContext.orbPriceAmount;
if (orbPriceAmount == null) {
orbPriceAmount = void 0;
}
let orbPriceAmount2 = orbProductContext.orbPriceAmount;
if (orbPriceAmount2 == null) {
orbPriceAmount2 = void 0;
}
r21 = {
price: orbPriceAmount,
regular_price: orbPriceAmount2
};
}
HermesBuiltin.copyDataProperties(r2, r21);
return r2;
}, [loadId, skuId, analyticsLocations, orbProductContext]);
callback = useCallback((a0, a1) => {
const duration_ms = Date.now() - startTime;
if (a0 === AnalyticEvents.PAYMENT_FLOW_STARTED) {
trackPaymentFlowStartedAnalyticsAndCTP({
...memo,
has_saved_payment_source: false,
continue_session_initial_step: null
});
} else if (a0 === AnalyticEvents.PAYMENT_FLOW_COMPLETED) {
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_COMPLETED, {
...memo,
duration_ms
});
} else if (a0 === AnalyticEvents.PAYMENT_FLOW_SUCCEEDED) {
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_SUCCEEDED, {
...memo,
duration_ms
});
} else if (a0 === AnalyticEvents.PAYMENT_FLOW_CANCELED) {
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_CANCELED, {
...memo,
duration_ms
});
} else {
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_FAILED, {
...memo,
duration_ms,
...a1 != null ? {
payment_error_code: a1.code,
error_message: a1.message
} : {}
});
}
}, [startTime, memo]);
virtualCurrencyBalance = useVirtualCurrencyBalance();
ref = useRef(virtualCurrencyBalance);
useEffect(() => {
callback(AnalyticEvents.PAYMENT_FLOW_STARTED);
}, [callback]);
useEffect(() => {
if (orbRedemptionError != null && ref.current !== null) {
callback(AnalyticEvents.PAYMENT_FLOW_FAILED, orbRedemptionError);
ref.current = null;
}
}, [orbRedemptionError, callback]);
let current3 = ref.current;
if (current3 == null) {
current3 = virtualCurrencyBalance;
}
return
{
callback(AnalyticEvents.PAYMENT_FLOW_COMPLETED);
ref.current = virtualCurrencyBalance;
onRedeemVirtualCurrency(() => {
callback(AnalyticEvents.PAYMENT_FLOW_SUCCEEDED);
ModalActionCreators.pop();
});
}, [callback, virtualCurrencyBalance, onRedeemVirtualCurrency])} />
;
};
export default ({ skuId: skuId2, onCheckoutSuccess, analyticsLocations: analyticsLocations2 }) => {
Module38(skuId2 != null, "SKU ID is required");
const current = Module19.useRef(v4()).current;
const current2 = Module19.useRef(Date.now()).current;
Module19.useEffect(() => {
AnalyticsUtils.track(AnalyticEvents.OPEN_MODAL, {
type: "Orb Checkout Modal",
location_stack: analyticsLocations2,
sku_id: skuId2
});
}, [analyticsLocations2, skuId2]);
const callback2 = Module19.useCallback(() => {
const r8 = Date.now();
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_CANCELED, {
load_id: current,
application_id: get1PShopApplicationIdForSKU(skuId2),
location_stack: analyticsLocations2,
payment_gateway: InternalPaymentGateways.VIRTUAL_CURRENCY,
sku_id: skuId2,
currency: CurrencyCodes.DISCORD_ORB,
duration_ms: r8 - current2
});
ModalActionCreators.pop();
}, [skuId2, current, analyticsLocations2, current2]);
const screens = {};
screens[c8157_13.MAIN] = {
title: intl.string(t.q9EGps),
headerShown: true,
headerLeft: getHeaderTextButton(intl.string(t["ETE/oC"]), callback2),
render: () =>
};
return <_Modal_native.Modal screens={screens} initialRouteName={c8157_13.MAIN} headerTitleAlign="center" />;
};