Files
discord-decomp/stores/billing/SubscriptionPlanStore.tsx
T
2026-11-01 12:12:55 +02:00

192 lines
6.6 KiB
TypeScript

// Metro module 3840 (f3841).
import SubscriptionPlanRecord from "../../records/SubscriptionPlanRecord";
import { CurrencyCodes, PriceSetAssignmentPurchaseTypes } from "../../Constants";
import * as _PremiumConstants from "../../modules/premium/PremiumConstants";
import { ACTIVE_PREMIUM_SKUS, PremiumSubscriptionSKUs } from "../../modules/premium/PremiumConstants";
import { clearObject } from "../../utils/FunctionUtils";
import Module589 from "../../_bundle/Module589";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
import Dispatcher from "../../Dispatcher";
function $mk72848($env) {
return (a0) => {
(0, addSubscriptionPlan)(SubscriptionPlanRecord.createFromServer({
id: a0.id,
name: a0.name,
interval: a0.interval,
interval_count: a0.intervalCount,
tax_inclusive: true,
sku_id: a0.skuId,
currency: CurrencyCodes.USD,
price: 0,
price_tier: 0
}));
};
}
let addSubscriptionPlanFromServer, c2174_10, c2174_11, c2174_12, c2174_13, c2174_14, c2174_15, c2174_18, c2174_19;
let env2174;
const r9 = env2174 = {};
const addSubscriptionPlan = function addSubscriptionPlan(a0) {
const skuId = a0.skuId;
c2174_10[a0.id] = a0;
const r20 = a0.prices[PriceSetAssignmentPurchaseTypes.DEFAULT];
if (r20 != null) {
const set = new Set(Object.keys(r20.paymentSourcePrices));
c2174_14[a0.id] = set;
const r27 = Array;
let r31 = c2174_15[a0.skuId];
if (r31 == null) {
r31 = new Set();
}
c2174_15[a0.skuId] = new Set([...r27.from(r31), ...Array.from(set)]);
}
const r49 = c2174_11[skuId];
if (r49 != null) {
r49.add(a0.id);
} else {
c2174_11[skuId] = new Set([a0.id]);
}
};
addSubscriptionPlanFromServer = function addSubscriptionPlanFromServer(a0) {
addSubscriptionPlan(SubscriptionPlanRecord.createFromServer(a0));
};
const reset = function reset() {
const r1 = env2174;
clearObject(c2174_10);
clearObject(c2174_11);
c2174_12.clear();
c2174_13.clear();
clearObject(c2174_14);
clearObject(c2174_15);
[_PremiumConstants.SubscriptionPlanInfo[_PremiumConstants.SubscriptionPlans.NONE_MONTH], _PremiumConstants.SubscriptionPlanInfo[_PremiumConstants.SubscriptionPlans.NONE_YEAR], _PremiumConstants.SubscriptionPlanInfo[_PremiumConstants.SubscriptionPlans.NONE_3_MONTH], _PremiumConstants.SubscriptionPlanInfo[_PremiumConstants.SubscriptionPlans.NONE_6_MONTH]].forEach($mk72848(r1));
};
const { SubscriptionIntervalTypes, SubscriptionPlanInfo: SubscriptionPlanInfo2, SubscriptionPlans: SubscriptionPlans2 } = _PremiumConstants;
c2174_10 = {};
c2174_11 = {};
const set = new Set();
c2174_12 = set;
c2174_13 = new Set();
c2174_14 = {};
c2174_15 = {};
[SubscriptionPlanInfo2[SubscriptionPlans2.NONE_MONTH], SubscriptionPlanInfo2[SubscriptionPlans2.NONE_YEAR], SubscriptionPlanInfo2[SubscriptionPlans2.NONE_3_MONTH], SubscriptionPlanInfo2[SubscriptionPlans2.NONE_6_MONTH]].forEach($mk72848(r9));
c2174_18 = [SubscriptionIntervalTypes.DAY, SubscriptionIntervalTypes.MONTH, SubscriptionIntervalTypes.YEAR];
class SubscriptionPlanStore extends Module589.Store {
static displayName = "SubscriptionPlanStore";
constructor() {
super(...arguments);
}
getPlanIdsForSkus(a0) {
const r0 = [];
for (const item of a0) {
const r10 = Array;
let r29 = c2174_11[item];
if (r29 == null) {
r29 = new Set();
}
const r32 = r10.from(r29);
r32.sort((a, b) => {
const r2 = c2174_10[a];
const r7 = c2174_10[b];
return c2174_18.indexOf(r2.interval) - c2174_18.indexOf(r7.interval) || r2.intervalCount - r7.intervalCount;
});
r0.push.apply(r0, [...r32]);
}
return r0;
}
getFetchedSKUIDs() {
return SnowflakeUtils.keys(c2174_11);
}
getForSKU(a0) {
const r4 = Array;
let r7 = c2174_11[a0];
if (r7 == null) {
r7 = [];
}
return r4.from(r7).map((item) => c2174_10[item]);
}
getForSkuAndInterval(a0, c13664_0, r6 = 1) {
let c13664_1 = r6;
return this.getForSKU(a0).find((item) => item.id !== _PremiumConstants.SubscriptionPlans.PREMIUM_GROUP_MONTH && item.interval === c13664_0 && item.intervalCount === c13664_1);
}
get(a0) {
return c2174_10[a0];
}
isFetchingForSKU(a0) {
return c2174_12.has(a0);
}
isFetchingForSKUs(a0) {
return a0.some((item) => this.isFetchingForSKU(item));
}
isLoadedForSKU(a0) {
let r8 = !!c2174_13.has(a0);
if (!r8) {
const r11 = c2174_12.has(a0);
r8 = r11 ? !r11 : c2174_11[a0] != null;
}
return r8;
}
isLoadedForSKUs(a0) {
return a0.every((item) => this.isLoadedForSKU(item));
}
isFetchingForPremiumSKUs() {
return ACTIVE_PREMIUM_SKUS.some((item) => this.isFetchingForSKU(item));
}
isLoadedForPremiumSKUs() {
return ACTIVE_PREMIUM_SKUS.every((item) => this.isLoadedForSKU(item));
}
ignoreSKUFetch(a0) {
c2174_13.add(a0);
}
getPaymentSourcesForPlanId(a0) {
return c2174_14.hasOwnProperty(a0) ? c2174_14[a0] : null;
}
getPaymentSourceIds() {
const set = new Set();
let c13669_0 = set;
Object.values(c2174_14).forEach((a0) => a0.forEach((item) => c13669_0.add(item)));
return set;
}
hasPaymentSourceForSKUId(a0, a1) {
let r7 = PremiumSubscriptionSKUs.NONE === a1;
if (!r7) {
r7 = c2174_15[a1] != null && c2174_15[a1].has(a0);
}
return r7;
}
hasPaymentSourceForSKUIds(c13670_0, a1) {
return a1.every((item) => this.hasPaymentSourceForSKUId(c13670_0, item));
}
}
c2174_19 = SubscriptionPlanStore;
const r108 = new SubscriptionPlanStore(Dispatcher, {
SUBSCRIPTION_PLANS_FETCH: function handleSubscriptionPlansFetch(a0) {
c2174_12.add(a0.skuId);
},
SUBSCRIPTION_PLANS_FETCH_SUCCESS: function handleSubscriptionPlansFetchSuccess({ skuId, subscriptionPlans }) {
c2174_11[skuId] = new Set();
c2174_15[skuId] = new Set();
subscriptionPlans.forEach(addSubscriptionPlanFromServer);
c2174_12.delete(skuId);
c2174_13.delete(skuId);
},
SUBSCRIPTION_PLANS_FETCH_FAILURE: function handleSubscriptionPlansFetchFailure({ skuId }) {
c2174_12.delete(skuId);
c2174_13.delete(skuId);
},
SUBSCRIPTION_PLANS_RESET: reset,
GIFT_CODE_RESOLVE_SUCCESS: function handleGiftCodeResolveSuccess({ giftCode }) {
if (giftCode.subscription_plan != null) {
addSubscriptionPlan(SubscriptionPlanRecord.createFromServer(giftCode.subscription_plan));
}
},
ENTITLEMENTS_GIFTABLE_FETCH_SUCCESS: function handleEntitlementGiftsFetchSuccess(a0) {
for (const entitlement of a0.entitlements) {
if (entitlement.subscription_plan != null) {
addSubscriptionPlanFromServer(entitlement.subscription_plan);
}
}
},
LOGOUT: reset
});
export default r108;
export { set as subscriptionPlansFetchingForSKU };