Files
discord-decomp/actions/SKUActionCreators.tsx
T
2026-11-01 12:12:55 +02:00

664 lines
19 KiB
TypeScript

// Metro module 6499 (f6500).
import StorefrontPromotionOverrideStore from "../modules/storefront/StorefrontPromotionOverrideStore";
import SKUStore from "../stores/game_store/SKUStore";
import { Endpoints, ADYEN_PAYMENT_SOURCES } from "../Constants";
import Dispatcher from "../Dispatcher";
import { httpGetWithCountryCodeQuery } from "../utils/StoreUtils";
import { rejectWithMigratedError, HTTP, getAPIBaseURL } from "../_bundle/sendRequest";
import V6OrEarlierAPIError from "../errors/V6OrEarlierAPIError";
import * as _TestModeUtils from "../modules/game_store/TestModeUtils";
import { ShopVariantsReturnStyle } from "../_bundle/Module5847";
import { BillingError } from "../errors/index";
import { ErrorCodes } from "../errors/BillingError";
import { createGatewayCheckoutContext } from "../utils/BillingUtils";
import { createPaymentSourceToken, popupBridgeState, dispatchConfirmationError, handlePaymentConfirmation } from "../modules/billing/actions/BillingActionCreators";
import { getPurchaseToken } from "../utils/PurchaseTokenUtils";
import { isNotNullish } from "../utils/GlobalUtils";
import { HermesBuiltin } from "../_hermes/prelude";
let env4192 = {};
const c4192_13 = {
isGift: false
};
export async function fetchSKU(skuId) {
let c25898_4 = 0;
let c29783_0, c29783_1;
L13: {
try {
c29783_0 = skuId;
c29783_1 = void 0;
if (SKUStore.get(skuId) == null) {
Dispatcher.dispatch({
type: "SKU_FETCH_START",
skuId
});
c25898_4 = 1;
c29783_1 = await httpGetWithCountryCodeQuery({
url: Endpoints.STORE_SKU(skuId),
rejectWithError: rejectWithMigratedError()
});
Dispatcher.dispatch({
type: "SKU_FETCH_SUCCESS",
sku: c29783_1.body
});
c25898_4 = 0;
break L13;
}
} catch ($e) {
let r8 = $e;
if (c25898_4 !== 0) {
while (true) {
try {
c25898_4 = 0;
Dispatcher.dispatch({
type: "SKU_FETCH_FAIL",
skuId: c29783_0
});
throw new V6OrEarlierAPIError(`Failed to fetch SKU ${c29783_0}`);
} catch ($e) {
r8 = $e;
if (c25898_4 === 0) {
break;
}
}
}
}
throw r8;
}
return void 0;
}
}
export async function fetchPublishedSKU(c25899_0, skuId2, variants_return_style, c25899_3) {
let c25899_7 = 0;
let c29784_0, c29784_1, c29784_2;
L27: {
try {
c29784_0 = skuId2;
c29784_1 = void 0;
c29784_2 = void 0;
if (SKUStore.get(skuId2) == null) {
Dispatcher.dispatch({
type: "SKU_FETCH_START",
skuId: skuId2
});
c25899_7 = 1;
const isTestModeForApplication = _TestModeUtils.isTestModeForApplication(c25899_0);
c29784_1 = isTestModeForApplication;
const r53 = {
url: isTestModeForApplication ? Endpoints.STORE_SKU(skuId2) : Endpoints.STORE_PUBLISHED_LISTINGS_SKU(skuId2),
rejectWithError: rejectWithMigratedError()
};
const query = {};
if (variants_return_style === ShopVariantsReturnStyle.VARIANTS_GROUP) {
query.variants_return_style = variants_return_style;
}
if (c25899_3) {
query.include_unpublished = true;
}
if (Object.keys(query).length > 0) {
r53.query = query;
}
c29784_2 = await httpGetWithCountryCodeQuery(r53);
const r100 = c29784_1;
const body = c29784_2.body;
Dispatcher.dispatch({
type: "SKU_FETCH_SUCCESS",
sku: r100 ? body : body.sku
});
if (!c29784_1) {
Dispatcher.dispatch({
type: "STORE_LISTING_FETCH_SUCCESS",
storeListing: c29784_2.body
});
}
c25899_7 = 0;
break L27;
}
} catch ($e) {
let r8 = $e;
if (c25899_7 !== 0) {
while (true) {
try {
c25899_7 = 0;
Dispatcher.dispatch({
type: "SKU_FETCH_FAIL",
skuId: c29784_0
});
throw new V6OrEarlierAPIError(`Failed to fetch SKU ${c29784_0}`);
} catch ($e) {
r8 = $e;
if (c25899_7 === 0) {
break;
}
}
}
}
throw r8;
}
return void 0;
}
}
export async function fetchTestSKUsForApplication(c25900_0, c25900_1) {
let c29785_1, c29785_2;
c29785_1 = void 0;
let c29785_0 = c25900_0;
if (c25900_1 !== void 0) {
c29785_1 = c25900_1;
c29785_2 = void 0;
} else {
c29785_1 = true;
c29785_2 = void 0;
}
await void 0;
if (!_TestModeUtils.isTestModeForApplication(c29785_0) && c29785_1) {
throw new Error("this should only be used in test mode");
}
c29785_2 = (await httpGetWithCountryCodeQuery({
url: Endpoints.APPLICATION_SKUS(c29785_0),
rejectWithError: rejectWithMigratedError()
})).body;
Dispatcher.dispatch({
type: "SKUS_FETCH_SUCCESS",
skus: c29785_2
});
return c29785_2;
}
export async function previewPurchaseSku(c25901_0) {
let body;
let c25901_3;
let c25901_4 = 0;
let c29786_0, c29786_1, c29786_2, c29786_3, c29786_4, c29786_5, c29786_6, c29786_7, c29786_8;
try {
c29786_0 = void 0;
c29786_1 = void 0;
c29786_2 = void 0;
c29786_3 = void 0;
c29786_4 = void 0;
c29786_0 = c25901_0.applicationId;
c29786_1 = c25901_0.skuId;
c29786_2 = c25901_0.paymentSourceId;
c29786_3 = c25901_0.isGift;
c29786_4 = c25901_0.currency;
c29786_5 = void 0;
c29786_6 = void 0;
c29786_7 = void 0;
await void 0;
c29786_5 = {
payment_source_id: c29786_2,
gift: c29786_3,
currency: c29786_4
};
if (_TestModeUtils.isTestModeForApplication(c29786_0)) {
c29786_5.test_mode = true;
}
c29786_6 = StorefrontPromotionOverrideStore.getPromotionIdOverride();
if (c29786_6 != null) {
c29786_5.promotion_id_override = c29786_6;
}
c25901_4 = 1;
body = (await httpGetWithCountryCodeQuery({
url: Endpoints.STORE_SKU_PURCHASE(c29786_1),
query: c29786_5,
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
})).body;
c25901_4 = 0;
} catch ($e) {
const r32 = $e;
let r8 = r32;
c25901_3 = r32;
if (c25901_4 !== 0) {
while (true) {
L30: {
try {
const r121 = c25901_3;
c25901_4 = 0;
c29786_8 = r121;
c29786_7 = c29786_8 instanceof BillingError ? c29786_8 : new BillingError(c29786_8);
if (c29786_7.code !== ErrorCodes.BILLING_BUNDLE_ALREADY_PURCHASED) {
if (c29786_7.code !== ErrorCodes.BILLING_BUNDLE_PARTIALLY_OWNED) {
if (c29786_7.code !== ErrorCodes.INVALID_BILLING_ADDRESS) {
break L30;
}
}
}
throw c29786_7;
} catch (r117) {
r8 = r117;
c25901_3 = r117;
if (c25901_4 === 0) {
break;
}
continue;
}
}
return null;
}
}
throw r8;
}
return body;
}
export async function grantChannelBranchEntitlement(applicationId, c25902_1, skuId3) {
let body;
let c25902_5;
let c25902_6 = 0;
let c29787_0, c29787_1, c29787_2, c29787_3, c29787_4;
try {
c29787_0 = applicationId;
c29787_1 = skuId3;
c29787_2 = void 0;
c29787_3 = void 0;
Dispatcher.dispatch({
type: "SKU_PURCHASE_START",
applicationId,
skuId: skuId3
});
c25902_6 = 1;
c29787_2 = await HTTP.post({
url: Endpoints.CHANNEL_ENTITLEMENT_GRANT(c25902_1),
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
Dispatcher.dispatch({
type: "SKU_PURCHASE_SUCCESS",
skuId: c29787_1,
entitlements: c29787_2.body,
libraryApplications: []
});
body = c29787_2.body;
c25902_6 = 0;
} catch ($e) {
const r26 = $e;
let r8 = r26;
c25902_5 = r26;
if (c25902_6 !== 0) {
while (true) {
try {
const r89 = c25902_5;
c25902_6 = 0;
c29787_4 = r89;
c29787_3 = new BillingError(c29787_4);
Dispatcher.dispatch({
type: "SKU_PURCHASE_FAIL",
applicationId: c29787_0,
skuId: c29787_1,
error: c29787_3
});
throw c29787_3;
} catch (r85) {
r8 = r85;
c25902_5 = r85;
if (c25902_6 === 0) {
break;
}
}
}
}
throw r8;
}
return body;
}
export async function orderSKU(sku_id, payment_source_id, request_gateway_country_code, c25903_3, c25903_4) {
let r99;
let c25903_7;
let c25903_8 = 0;
let c29788_0, c29788_1, c29788_2;
try {
c29788_0 = void 0;
c29788_1 = void 0;
Dispatcher.dispatch({
type: "ORDER_CREATE_START"
});
c25903_8 = 1;
const body = {
order_line_items: [{
sku_id,
quantity: 1,
purchase_type: 1
}],
billing_facet: {
payment_source_id
},
location_facet: {
request_gateway_country_code
}
};
if (c25903_3) {
body.gifting_facet = {
is_gift: true,
gift_customization: {
recipient_id: c25903_4.recipient_id,
gift_style: c25903_4.gift_style,
emoji_id: c25903_4.emoji_id,
emoji_name: c25903_4.emoji_name,
sound_id: c25903_4.sound_id,
reward_sku_ids: c25903_4.reward_sku_ids,
custom_message_contents: c25903_4.custom_message
}
};
}
c29788_0 = (await HTTP.post({
url: Endpoints.ORDER_CREATE,
body,
rejectWithError: rejectWithMigratedError()
})).body;
c29788_1 = c29788_0.id;
Dispatcher.dispatch({
type: "ORDER_CREATE_SUCCESS",
orderId: c29788_1,
order: c29788_0
});
r99 = c29788_1;
c25903_8 = 0;
} catch ($e) {
const r30 = $e;
let r8 = r30;
c25903_7 = r30;
if (c25903_8 !== 0) {
while (true) {
try {
const r108 = c25903_7;
c25903_8 = 0;
c29788_2 = r108;
Dispatcher.dispatch({
type: "ORDER_CREATE_FAIL"
});
throw new BillingError(`Failed to create order: ${c29788_2}`);
} catch (r104) {
r8 = r104;
c25903_7 = r104;
if (c25903_8 === 0) {
break;
}
}
}
}
throw r8;
}
return r99;
}
export async function purchaseSKU(c25904_0, c25904_1, c25904_2) {
let r177, r235, r519;
let c25904_3, c25904_4, c25904_5, c25904_6, c25904_7, c25904_9;
let c25904_8 = 0;
const r19 = env4192;
let r17 = "payment id cannot be null on redirected confirmations.";
try {
let env29789;
c25904_7 = r19;
const r25 = env29789 = {
$parent: r19
};
c25904_6 = r25;
env29789[0] = c25904_0;
env29789[1] = c25904_1;
env29789[2] = void 0;
env29789[3] = void 0;
env29789[4] = void 0;
env29789[5] = void 0;
env29789[6] = void 0;
env29789[7] = void 0;
env29789[8] = void 0;
env29789[9] = void 0;
env29789[10] = void 0;
env29789[11] = void 0;
env29789[12] = void 0;
env29789[13] = void 0;
env29789[14] = void 0;
env29789[15] = void 0;
env29789[16] = void 0;
const r47 = {
...c4192_13,
...c25904_2
};
const paymentSource = r47.paymentSource;
env29789[2] = paymentSource;
env29789[3] = r47.expectedAmount;
env29789[4] = r47.expectedCurrency;
env29789[5] = r47.analyticsLoadId;
const isGift = r47.isGift;
env29789[6] = isGift;
env29789[7] = r47.giftInfoOptions;
const subscriptionPlanId = r47.subscriptionPlanId;
env29789[8] = r47.loadId;
env29789[9] = r47.countryCode;
env29789[10] = r47.quantity;
Dispatcher.wait(() => {
Dispatcher.dispatch({
type: "SKU_PURCHASE_START",
applicationId: env29789[0],
skuId: env29789[1]
});
});
env29789[11] = _TestModeUtils.isTestModeForApplication(c25904_0);
c25904_8 = 1;
const r71 = {};
c25904_5 = r71;
r71.gift = isGift;
r71.sku_subscription_plan_id = subscriptionPlanId;
const gatewayCheckoutContext = await createGatewayCheckoutContext(paymentSource);
r17 = "payment id cannot be null on redirected confirmations.";
const r100 = c25904_5;
r100.gateway_checkout_context = gatewayCheckoutContext;
r100.load_id = env29789[8];
r100.gift_info_options = env29789[7];
env29789[12] = r100;
env29789[13] = StorefrontPromotionOverrideStore.getPromotionIdOverride();
if (env29789[13] != null) {
env29789[12].promotion_id_override = env29789[13];
}
L23: {
if (env29789[11]) {
env29789[12].test_mode = true;
} else {
if (env29789[2] != null) {
env29789[12].payment_source_id = env29789[2].id;
c25904_4 = env29789[12];
const paymentSourceToken = await createPaymentSourceToken(env29789[2]);
r17 = "payment id cannot be null on redirected confirmations.";
c25904_4.payment_source_token = paymentSourceToken;
if (!ADYEN_PAYMENT_SOURCES.has(env29789[2].type)) {
if (env29789[9] != null) {
env29789[12].country_code = env29789[9];
}
if (env29789[3] != null) {
env29789[12].expected_amount = env29789[3];
}
if (env29789[4] != null) {
env29789[12].expected_currency = env29789[4];
}
env29789[12].purchase_token = getPurchaseToken();
if (env29789[10] != null) {
env29789[12].quantity = env29789[10];
}
r177 = HTTP.post({
url: Endpoints.STORE_SKU_PURCHASE(env29789[1]),
body: env29789[12],
context: {
load_id: env29789[5]
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
break L23;
}
const r40 = await popupBridgeState(env29789[2].type);
r17 = "payment id cannot be null on redirected confirmations.";
env29789[14] = r40;
const r309 = env29789[12];
const aPIBaseURL = getAPIBaseURL();
const type = env29789[2].type;
const r320 = env29789[14];
c25904_3 = r320;
if (r320 == null) {
c25904_3 = "";
}
r309.return_url = aPIBaseURL + Endpoints.BILLING_POPUP_BRIDGE_CALLBACK_REDIRECT_PREFIX(type, c25904_3, "success");
if (env29789[9] != null) {
env29789[12].country_code = env29789[9];
}
if (env29789[3] != null) {
env29789[12].expected_amount = env29789[3];
}
if (env29789[4] != null) {
env29789[12].expected_currency = env29789[4];
}
env29789[12].purchase_token = getPurchaseToken();
if (env29789[10] != null) {
env29789[12].quantity = env29789[10];
}
r177 = HTTP.post({
url: Endpoints.STORE_SKU_PURCHASE(env29789[1]),
body: env29789[12],
context: {
load_id: env29789[5]
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
break L23;
}
if (env29789[9] != null) {
env29789[12].country_code = env29789[9];
}
}
if (env29789[3] != null) {
env29789[12].expected_amount = env29789[3];
}
if (env29789[4] != null) {
env29789[12].expected_currency = env29789[4];
}
env29789[12].purchase_token = getPurchaseToken();
if (env29789[10] != null) {
env29789[12].quantity = env29789[10];
}
r177 = HTTP.post({
url: Endpoints.STORE_SKU_PURCHASE(env29789[1]),
body: env29789[12],
context: {
load_id: env29789[5]
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
}
const r36 = await r177;
r17 = "payment id cannot be null on redirected confirmations.";
env29789[15] = r36;
Dispatcher.dispatch({
type: "SKU_PURCHASE_SUCCESS",
skuId: env29789[1],
libraryApplications: env29789[15].body.library_applications != null ? env29789[15].body.library_applications.filter(isNotNullish) : [],
entitlements: env29789[15].body.entitlements,
giftCode: env29789[15].body.gift_code
});
r235 = {
...env29789[15].body,
appliedUserDiscounts: env29789[15].body.applied_user_discounts,
redirectConfirmation: false
};
c25904_8 = 0;
} catch ($e) {
const r44 = $e;
let r8 = r44;
c25904_9 = r44;
if (c25904_8 !== 0) {
while (true) {
try {
const r431 = c25904_9;
c25904_8 = 0;
env29789[17] = r431;
env29789[16] = env29789[17] instanceof BillingError ? env29789[17] : new BillingError(env29789[17]);
if (!(env29789[16].code !== ErrorCodes.CONFIRMATION_REQUIRED && env29789[16].code !== ErrorCodes.AUTHENTICATION_REQUIRED)) {
Dispatcher.dispatch({
type: "SKU_PURCHASE_AWAIT_CONFIRMATION",
skuId: env29789[1],
isGift: env29789[6]
});
}
Dispatcher.dispatch({
type: "SKU_PURCHASE_FAIL",
applicationId: env29789[0],
skuId: env29789[1],
error: env29789[16]
});
if (env29789[16].code !== ErrorCodes.CONFIRMATION_REQUIRED) {
throw env29789[16];
}
if (!env29789[17].body.payment_id) {
throw dispatchConfirmationError(r17);
}
r519 = handlePaymentConfirmation(env29789[17].body, env29789[2]);
} catch (r427) {
r8 = r427;
c25904_9 = r427;
if (c25904_8 === 0) {
break;
}
continue;
}
return r519;
}
}
throw r8;
}
return r235;
}
export async function resendPaymentVerificationEmail() {
let value, c25905_4;
let c25905_3 = 0;
let c29790_0;
try {
c25905_3 = 1;
const body = {
purchase_token: getPurchaseToken()
};
value = {};
HermesBuiltin.copyDataProperties(value, (await HTTP.post({
url: Endpoints.STORE_EMAIL_RESEND_PAYMENT_VERIFICATION,
body,
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
})).body);
c25905_3 = 0;
} catch ($e) {
const r26 = $e;
let r8 = r26;
c25905_4 = r26;
if (c25905_3 !== 0) {
while (true) {
try {
const r74 = c25905_4;
c25905_3 = 0;
c29790_0 = r74;
throw c29790_0 instanceof BillingError ? c29790_0 : new BillingError(c29790_0);
} catch (r70) {
r8 = r70;
c25905_4 = r70;
if (c25905_3 === 0) {
break;
}
}
}
}
throw r8;
}
return value;
}
export function clearPurchaseError() {
Dispatcher.dispatch({
type: "SKU_PURCHASE_CLEAR_ERROR"
});
}
export function showPurchaseConfirmationStep() {
Dispatcher.wait(() => Dispatcher.dispatch({
type: "SKU_PURCHASE_SHOW_CONFIRMATION_STEP"
}));
}
export function updateSKUPaymentIsGift(a0) {
Dispatcher.dispatch({
type: "SKU_PURCHASE_UPDATE_IS_GIFT",
isGift: a0
});
}