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

431 lines
16 KiB
TypeScript

// Metro module 6251 (f6252).
import _objectWithoutProperties from "../../../_bundle/_objectWithoutProperties";
import { useCallback } from "react";
import { setGPlayAnalytics } from "../../gplay/native/GPlayAnalyticsStore";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import SubscriptionStore from "../../../stores/billing/SubscriptionStore";
import IAPStore_android from "../../../stores/native/IAPStore.android";
import { Endpoints, AnalyticEvents } from "../../../Constants";
import { PaymentGateways } from "../../../_bundle/Module505";
import { HTTP } from "../../../_bundle/sendRequest";
import InvalidGooglePlayPurchase from "../../billing/errors/InvalidGooglePlayPurchase";
import { BillingError } from "../../../errors/index";
import { isSpendingLimitError, showSpendingLimitReachedAlert } from "../../parent_tools/native/showSpendingLimitReachedAlert";
import { intl, t } from "../../../intl/index.native";
import { ErrorCodes } from "../../../errors/BillingError";
import AlertActionCreators from "../../../actions/AlertActionCreators";
import { TrialIdToProductOfferId, DiscountIdToProductOfferId, ProductIds, BOGO_OFFER_ID } from "./ProductIds.android";
import { useStateFromStores } from "../../../_bundle/Module589";
import { usePremiumTrialOffer } from "../hooks/usePremiumTrialOffer.android";
import { usePremiumDiscountOffer } from "../hooks/usePremiumDiscountOffer.native";
import { useIsEligibleForBogoOffer } from "./hooks/useIsEligibleForBogoOffer.android";
import { getBasePurchaseFlowAnalyticsFields } from "./PremiumAnalyticsUtils";
import { trackPaymentFlowStartedAnalyticsAndCTP } from "../../experiments/trigger_points/PaymentFlowStartedTriggerPoint";
import GPlayManager_android from "../../gplay/native/GPlayManager.android";
import { convertToMinorCurrencyUnits } from "../../../_bundle/convertToMajorCurrencyUnits";
import { captureBillingException } from "../../../utils/BillingUtils";
import { updatePendingDowngrade, subscribe, purchase } from "../../../actions/native/GPlayActionCreators";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import { HermesBuiltin } from "../../../_hermes/prelude";
function $mk117979($env) {
return function getOfferId(a0, a1, a2, a3, a4) {
const offerIds = a4?.offerIds;
if (offerIds != null) {
if (a2 != null) {
const r34 = TrialIdToProductOfferId[a2.trial_id];
return r34 == null ? void 0 : r34[a0];
}
if (a3 != null) {
const r25 = DiscountIdToProductOfferId[a3.discountId];
return r25 == null ? void 0 : r25[a0];
}
}
return a1 ? a0 === ProductIds.PREMIUM_TIER_2_MONTHLY ? BOGO_OFFER_ID : null : null;
};
}
function $mk117980($env) {
return function showPurchaseErrorModal(a0) {
const r17 = a0 instanceof BillingError ? a0 : new BillingError(a0);
if (isSpendingLimitError(r17)) {
showSpendingLimitReachedAlert();
} else {
const r33 = intl.string(t.LFFx5G);
const body = r17.code !== ErrorCodes.UNKNOWN && r17.code !== -1 && r17.message != null ? r17.message : r33;
AlertActionCreators.show({
title: intl.string(t["U+H+kd"]),
body,
isDismissable: true
});
}
};
}
let _excluded;
let env3969 = {};
const validatePurchase = async function validatePurchase(c25765_0) {
let c25765_3;
let c25765_4 = 0;
let c29706_0, c29706_1, c29706_2, c29706_3, c29706_4, c29706_5, c29706_6;
try {
c29706_0 = void 0;
c29706_1 = void 0;
c29706_2 = void 0;
c29706_3 = void 0;
c29706_4 = void 0;
c29706_5 = void 0;
c29706_0 = c25765_0.productId;
c29706_1 = c25765_0.premiumSubscription;
c29706_2 = c25765_0.offerId;
c29706_3 = c25765_0.currency;
c29706_4 = c25765_0.price;
c29706_5 = c25765_0.isGift;
await void 0;
c25765_4 = 1;
await HTTP.post({
url: Endpoints.GOOGLE_PLAY_VALIDATE_PURCHASE,
body: {
product_id: c29706_0,
offer_id: c29706_2,
subscription_id: c29706_1?.id,
currency: c29706_3,
price: c29706_4,
is_gift: c29706_5
},
rejectWithError: false
});
c25765_4 = 0;
} catch ($e) {
const r30 = $e;
let r8 = r30;
c25765_3 = r30;
if (c25765_4 !== 0) {
while (true) {
try {
const r96 = c25765_3;
c25765_4 = 0;
c29706_6 = r96;
throw new InvalidGooglePlayPurchase(c29706_6);
} catch (r92) {
r8 = r92;
c25765_3 = r92;
if (c25765_4 === 0) {
break;
}
}
}
}
throw r8;
}
};
_excluded = ["succeededOnlyFields"];
export function useHandlePremiumPurchase() {
let env15616 = {
$parent: env3969
};
const stateFromStores = useStateFromStores([SubscriptionStore], () => SubscriptionStore.getPremiumTypeSubscription());
env15616[0] = stateFromStores;
const premiumTrialOffer = usePremiumTrialOffer();
env15616[1] = premiumTrialOffer;
const premiumDiscountOffer = usePremiumDiscountOffer();
env15616[2] = premiumDiscountOffer;
const isEligibleForBogoOffer = useIsEligibleForBogoOffer();
env15616[3] = isEligibleForBogoOffer;
const r3 = stateFromStores != null;
env15616[4] = r3;
const id = stateFromStores?.id;
env15616[5] = id;
const paymentGatewayPlanId = stateFromStores?.paymentGatewayPlanId;
env15616[6] = paymentGatewayPlanId;
const paymentGatewaySubscriptionId = stateFromStores?.paymentGatewaySubscriptionId;
env15616[7] = paymentGatewaySubscriptionId;
let c15617_0 = async (c29707_0) => {
let r22, allowPlanChange, isOneTimePurchase;
let c29707_1, c29707_2, c29707_3, c29707_4;
let c29707_5 = 0;
const r16 = void 0;
const r15 = env3969;
L45: {
try {
let env31411;
L16: {
L13: {
L14: {
L10: {
c29707_3 = r16;
const r54 = env31411 = {
$parent: r15
};
c29707_2 = r54;
env31411[0] = void 0;
env31411[1] = void 0;
env31411[2] = void 0;
env31411[3] = void 0;
env31411[4] = void 0;
env31411[5] = void 0;
env31411[6] = void 0;
env31411[7] = void 0;
env31411[8] = void 0;
env31411[9] = void 0;
env31411[10] = void 0;
env31411[11] = void 0;
env31411[12] = void 0;
r22 = c29707_0;
env31411[0] = r22.productId;
env31411[1] = r22.skuId;
env31411[2] = r22.analyticsLoadId;
env31411[3] = r22.analyticsLocation;
env31411[4] = r22.analyticsLocations;
env31411[5] = r22.analyticsData;
const isGift = r22.isGift;
if (isGift !== void 0) {
env31411[6] = isGift;
isOneTimePurchase = r22.isOneTimePurchase;
if (isOneTimePurchase !== void 0) {
break L10;
}
} else {
env31411[6] = false;
isOneTimePurchase = r22.isOneTimePurchase;
if (isOneTimePurchase !== void 0) {
break L10;
}
}
env31411[7] = false;
allowPlanChange = r22.allowPlanChange;
if (allowPlanChange !== void 0) {
break L13;
}
break L14;
}
env31411[7] = isOneTimePurchase;
allowPlanChange = r22.allowPlanChange;
if (allowPlanChange !== void 0) {
break L13;
}
}
env31411[8] = true;
env31411[9] = r22.applicationId;
env31411[10] = r22.giftInfoOptions;
env31411[11] = r22.onPurchaseComplete;
env31411[12] = r22.onPurchaseError;
env31411[13] = void 0;
env31411[14] = void 0;
env31411[15] = void 0;
env31411[16] = void 0;
env31411[17] = void 0;
env31411[18] = void 0;
env31411[19] = void 0;
env31411[20] = void 0;
env31411[21] = void 0;
break L16;
}
env31411[8] = allowPlanChange;
env31411[9] = r22.applicationId;
env31411[10] = r22.giftInfoOptions;
env31411[11] = r22.onPurchaseComplete;
env31411[12] = r22.onPurchaseError;
env31411[13] = void 0;
env31411[14] = void 0;
env31411[15] = void 0;
env31411[16] = void 0;
env31411[17] = void 0;
env31411[18] = void 0;
env31411[19] = void 0;
env31411[20] = void 0;
env31411[21] = void 0;
}
await void 0;
env31411[13] = AuthenticationStore.getId();
env31411[14] = IAPStore_android.getProduct(env31411[0]);
env31411[15] = getBasePurchaseFlowAnalyticsFields({
isGift: env31411[6],
analyticsLoadId: env31411[2],
analyticsLocation: env31411[3],
analyticsLocations: env31411[4]
});
const r116 = env31411[5];
c29707_1 = r116;
if (r116 == null) {
c29707_1 = {};
}
env31411[16] = c29707_1;
env31411[17] = env31411[16].succeededOnlyFields;
env31411[18] = (0, _objectWithoutProperties)(env31411[16], _excluded);
const r127 = {
...env31411[15],
subscription_plan_gateway_plan_id: env31411[0],
sku_id: env31411[1],
price: env31411[14]?.price,
regular_price: env31411[14]?.price
};
const r140 = env31411[14];
const currency = r140 == null ? void 0 : r140.currencyCode.toLowerCase();
L31: {
const r144 = c29707_3;
r127.currency = currency;
r127.application_id = env31411[9];
HermesBuiltin.copyDataProperties(r127, env31411[18]);
env31411[19] = r127;
setGPlayAnalytics(env31411[0], {
...env31411[19],
succeededOnlyFields: env31411[17]
});
const r156 = env31411[0];
const r157 = r144.$parent;
const r158 = r157[3];
const r31 = r157[1];
const r30 = r157[2];
const r29 = env31411[14];
env31411[20] = $mk117979(env3969)(r156, r158, r31, r30, r29);
trackPaymentFlowStartedAnalyticsAndCTP({
...env31411[19],
payment_gateway: PaymentGateways.GOOGLE
});
c29707_5 = 1;
if (!env31411[6] && !env31411[7]) {
if (c29707_3.$parent[4] && !env31411[8]) {
break L31;
}
if (c29707_3.$parent[6] != null && c29707_3.$parent[7] != null && c29707_3.$parent[5] != null) {
const r208 = c29707_3;
const r215 = env31411[0];
const r216 = r208.$parent;
updatePendingDowngrade(r215, r216[6], r216[7], r216[5]);
}
await (0, validatePurchase)({
productId: env31411[0],
premiumSubscription: c29707_3.$parent[0],
offerId: env31411[20]
});
const r244 = c29707_3;
const r251 = env31411[0];
const r252 = env31411[13];
const r253 = r244.$parent;
await subscribe(r251, r252, r253[6], r253[7], env31411[20]);
} else {
if (env31411[6] && env31411[10] != null) {
if (GPlayManager_android.giftInfoOptionsCache != null && GPlayManager_android.giftInfoOptionsCache[env31411[0]] != null) {
delete GPlayManager_android.giftInfoOptionsCache[env31411[0]];
}
GPlayManager_android.giftInfoOptionsCache[env31411[0]] = {
...env31411[10]
};
}
env31411[21] = null;
if (env31411[14] != null) {
c29707_5 = 2;
env31411[21] = convertToMinorCurrencyUnits(env31411[14].price / 100, env31411[14].currencyCode);
c29707_5 = 1;
}
const r333 = c29707_3;
const r340 = env31411[14];
const r341 = r340 == null;
let currency2 = void 0;
if (!r341) {
const currencyCode = r340.currencyCode;
currency2 = currencyCode == null ? void 0 : currencyCode.toLowerCase();
}
await validatePurchase({
productId: env31411[0],
premiumSubscription: r333.$parent[0],
offerId: null,
currency: currency2,
price: env31411[21],
isGift: env31411[6]
});
await purchase(env31411[0], env31411[13]);
}
}
const r185 = env31411[11];
if (r185 != null) {
r185({
paymentGateway: PaymentGateways.GOOGLE
});
}
c29707_5 = 0;
} catch ($e) {
const r52 = $e;
let r7 = r52;
c29707_4 = r52;
let r53 = c29707_5;
if (r53 !== 0) {
while (true) {
if (r53 === 1) {
try {
const r522 = c29707_4;
c29707_5 = 0;
env31411[23] = r522;
AnalyticsUtils.track(AnalyticEvents.PAYMENT_FLOW_FAILED, {
...env31411[19],
payment_gateway: PaymentGateways.GOOGLE,
error_message: env31411[23].message
});
const r541 = env31411[12];
if (r541 != null) {
r541();
}
captureBillingException(env31411[23]);
const r552 = env31411[23];
$mk117980(env3969)(r552);
if (!(env31411[23] instanceof InvalidGooglePlayPurchase)) {
break L45;
}
throw env31411[23];
} catch (r519) {
r7 = r519;
c29707_4 = r519;
r53 = c29707_5;
if (r53 === 0) {
break;
}
}
} else {
try {
const r425 = c29707_4;
c29707_5 = 1;
env31411[22] = r425;
captureBillingException(env31411[22]);
const r436 = c29707_3;
const r443 = env31411[14];
const r444 = r443 == null;
let currency3 = void 0;
if (!r444) {
const currencyCode2 = r443.currencyCode;
currency3 = currencyCode2 == null ? void 0 : currencyCode2.toLowerCase();
}
await validatePurchase({
productId: env31411[0],
premiumSubscription: r436.$parent[0],
offerId: null,
currency: currency3,
price: env31411[21],
isGift: env31411[6]
});
await purchase(env31411[0], env31411[13]);
const r509 = env31411[11];
if (r509 != null) {
r509({
paymentGateway: PaymentGateways.GOOGLE
});
}
c29707_5 = 0;
break L45;
} catch (r422) {
r7 = r422;
c29707_4 = r422;
r53 = c29707_5;
if (r53 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
};
return useCallback(function() {
return c15617_0.apply(this, arguments);
}, [r3, paymentGatewayPlanId, paymentGatewaySubscriptionId, id, premiumTrialOffer, premiumDiscountOffer, stateFromStores, isEligibleForBogoOffer]);
}