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

314 lines
13 KiB
TypeScript

// Metro module 6211 (f6212).
import ReferralTrialStore from "../../modules/premium/ReferralTrialStore";
import UserDiscountOfferRecord from "../../modules/user_offers/records/UserDiscountOfferRecord";
import UserStore from "../UserStore";
import EntitlementStore from "../game_store/EntitlementStore";
import SubscriptionStore from "./SubscriptionStore";
import { ANNUAL_DISCOUNT_IDS, DISCOUNT_OFFERS_REQUIRES_REMINDER_ROLLOUT, PREMIUM_TIER_2_CHURN_1_MONTH_DISCOUNT_ID, PREMIUM_TIER_2_CHURN_3_MONTH_DISCOUNT_ID, SubscriptionPlanInfo, SubscriptionTrials, TRIAL_OFFERS_REQUIRES_REMINDER_ROLLOUT } from "../../modules/premium/PremiumConstants";
import Module589 from "../../_bundle/Module589";
import { isPremiumOfferReminderExperimentEnabled } from "../../modules/premium/experiments/PremiumOfferReminderExperiment";
import { isPremium, getOfferNoticeThreshold } from "../../utils/PremiumUtils";
import Dispatcher from "../../Dispatcher";
let c3939_14, c3939_15, handleSubscriptionStoreUpdate, handleReferralTrialStoreUpdate;
const emitChanges = function emitChanges() {
return true;
};
handleSubscriptionStoreUpdate = function handleSubscriptionStoreUpdate() {
let r0 = SubscriptionStore.getPremiumTypeSubscription() != null;
if (r0) {
if (c3939_15.userDiscountOffers[PREMIUM_TIER_2_CHURN_1_MONTH_DISCOUNT_ID] != null) {
const userDiscountOffers2 = {};
userDiscountOffers2[PREMIUM_TIER_2_CHURN_1_MONTH_DISCOUNT_ID] = c3939_15.userDiscountOffers[PREMIUM_TIER_2_CHURN_1_MONTH_DISCOUNT_ID];
c3939_15.userDiscountOffers = userDiscountOffers2;
} else if (c3939_15.userDiscountOffers[PREMIUM_TIER_2_CHURN_3_MONTH_DISCOUNT_ID] != null) {
const userDiscountOffers = {};
userDiscountOffers[PREMIUM_TIER_2_CHURN_3_MONTH_DISCOUNT_ID] = c3939_15.userDiscountOffers[PREMIUM_TIER_2_CHURN_3_MONTH_DISCOUNT_ID];
c3939_15.userDiscountOffers = userDiscountOffers;
} else {
c3939_15.userDiscountOffers = {};
}
c3939_15.userTrialOffers = {};
r0 = true;
}
return r0;
};
const handlePaymentSourceChange = function handlePaymentSourceChange() {
UserStore.getCurrentUser();
};
handleReferralTrialStoreUpdate = function handleReferralTrialStoreUpdate() {
return false;
};
c3939_14 = {
userOffersLastFetchedAtDate: void 0,
userTrialOffers: {},
userDiscountOffers: {},
userDiscounts: void 0,
isFetching: false,
lastFetchSuccessful: false
};
c3939_15 = c3939_14;
class UserOfferStore extends Module589.PersistedStore {
static displayName = "UserOfferStore";
static persistKey = "UserOfferStore";
static migrations = [(a0) => {
const userDiscounts = a0?.userDiscounts;
if (userDiscounts != null) {
return {
...a0,
userDiscountOffers: userDiscounts
};
}
}, (a0) => {
if (a0 != null) {
if (Object.hasOwn(a0, "userAnnualOfferLastFetchedAtDate")) {
delete a0["userAnnualOfferLastFetchedAtDate"];
}
return a0;
}
}, (a0) => {
if (a0 != null) {
return a0?.isFetching == null ? {
...a0,
isFetching: false
} : a0;
}
}, (a0) => {
if (a0?.userDiscountOffers != null) {
return {
...a0,
userDiscountOffers: Object.fromEntries(Object.entries(a0.userDiscountOffers).map((item) => {
const [r28, r8] = item;
return [r28, r8 instanceof UserDiscountOfferRecord ? r8 : "discount_id" in r8 ? UserDiscountOfferRecord.createFromServer(r8) : new UserDiscountOfferRecord({
...r8,
appliedAt: r8.appliedAt != null ? new Date(r8.appliedAt) : null,
deletedAt: r8.deletedAt != null ? new Date(r8.deletedAt) : null,
expiresAt: r8.expiresAt != null ? new Date(r8.expiresAt) : null
})];
}))
};
}
}];
initialize(a0) {
let r2;
if (a0 != null) {
const r6 = Object;
const r8 = Object;
let userDiscountOffers = a0.userDiscountOffers;
if (userDiscountOffers == null) {
userDiscountOffers = {};
}
r2 = {
...a0,
userDiscountOffers: r6.fromEntries(r8.entries(userDiscountOffers).map((item) => {
const [r28, r8] = item;
return [r28, r8 instanceof UserDiscountOfferRecord ? r8 : "discount_id" in r8 ? UserDiscountOfferRecord.createFromServer(r8) : new UserDiscountOfferRecord({
...r8,
appliedAt: r8.appliedAt != null ? new Date(r8.appliedAt) : null,
deletedAt: r8.deletedAt != null ? new Date(r8.deletedAt) : null,
expiresAt: r8.expiresAt != null ? new Date(r8.expiresAt) : null
})];
}))
};
} else {
r2 = c3939_14;
}
c3939_15 = r2;
this.waitFor(EntitlementStore, ReferralTrialStore, SubscriptionStore, UserStore);
this.syncWith([UserStore], emitChanges);
this.syncWith([SubscriptionStore], handleSubscriptionStoreUpdate);
this.syncWith([ReferralTrialStore], handleReferralTrialStoreUpdate);
}
getUserTrialOffer(a0) {
if (a0 !== null) {
return c3939_15.userTrialOffers[a0];
}
}
getUserDiscountOffer(a0) {
if (a0 !== null) {
return c3939_15.userDiscountOffers[a0];
}
}
getAnyOfUserTrialOfferId(a0) {
for (const item of a0) {
if (c3939_15.userTrialOffers[item] == null) {
continue;
}
return item;
}
return null;
}
isFetchingOffer() {
let isFetching = c3939_15.isFetching;
if (isFetching == null) {
isFetching = false;
}
return isFetching;
}
hasFetchedOffer() {
return c3939_15.userOffersLastFetchedAtDate != null;
}
shouldFetchReferralOffer(a0) {
const userOffersLastFetchedAtDate = c3939_15.userOffersLastFetchedAtDate;
let isFetching = c3939_15.isFetching;
if (isFetching == null) {
isFetching = false;
}
if (userOffersLastFetchedAtDate == null) {
return !isFetching;
}
let r2 = Date.now() - 600000 > userOffersLastFetchedAtDate;
let r1 = !isFetching;
if (!isFetching) {
if (!r2) {
r2 = (a0 == null ? 0 : a0) > userOffersLastFetchedAtDate;
}
r1 = r2;
}
return r1;
}
shouldShowTrialOfferReminder(a0) {
const r6 = TRIAL_OFFERS_REQUIRES_REMINDER_ROLLOUT.includes(a0.trial_id);
return r6 ? isPremiumOfferReminderExperimentEnabled({
location: "user_offer_store"
}) : !r6;
}
getAlmostExpiringTrialOffersForReminder(c15579_1) {
let c15579_0 = Object.values(SubscriptionTrials).map((item) => item.id);
return isPremium(UserStore.getCurrentUser()) && !this.canFractionalPremiumUserUseOffer() ? [] : Object.values(c3939_15.userTrialOffers).filter((item) => c15579_0.includes(item.trial_id) && item.expires_at != null && item.subscription_trial != null && c15579_1.includes(item.subscription_trial.sku_id) && Date.parse(item.expires_at) < Date.now() + getOfferNoticeThreshold(item) && this.shouldShowTrialOfferReminder(item));
}
shouldShowDiscountOfferReminder(a0) {
const r6 = DISCOUNT_OFFERS_REQUIRES_REMINDER_ROLLOUT.includes(a0.discountId);
return r6 ? isPremiumOfferReminderExperimentEnabled({
location: "user_offer_store"
}) : !r6;
}
getAlmostExpiringDiscountOffersForReminder(c15580_0) {
return isPremium(UserStore.getCurrentUser()) && !this.canFractionalPremiumUserUseOffer() ? [] : Object.values(c3939_15.userDiscountOffers).filter((item) => item.expiresAt != null && item.discount != null && item.discount.planIds.some((planId) => c15580_0.includes(SubscriptionPlanInfo[planId].skuId)) && item.expiresAt.getTime() < Date.now() + getOfferNoticeThreshold(item) && this.shouldShowDiscountOfferReminder(item));
}
getAcknowledgedOffers(c15581_0) {
return isPremium(UserStore.getCurrentUser()) && !this.canFractionalPremiumUserUseOffer() ? [] : Object.values(c3939_15.userTrialOffers).filter((item) => c15581_0.includes(item.trial_id) && item.expires_at != null);
}
getUnacknowledgedDiscountOffers() {
let r15;
if (isPremium(UserStore.getCurrentUser()) && !this.canFractionalPremiumUserUseOffer()) {
r15 = [];
} else {
const r5 = Object;
let userDiscountOffers = c3939_15.userDiscountOffers;
if (userDiscountOffers == null) {
userDiscountOffers = {};
}
r15 = r5.values(userDiscountOffers).filter((item) => {
const hasAcknowledged = item.hasAcknowledged();
return hasAcknowledged ? !hasAcknowledged : !ANNUAL_DISCOUNT_IDS.includes(item.discountId);
});
}
return r15;
}
getUnacknowledgedOffers(c15582_0) {
return isPremium(UserStore.getCurrentUser()) && !this.canFractionalPremiumUserUseOffer() ? [] : Object.values(c3939_15.userTrialOffers).filter((item) => c15582_0.includes(item.trial_id) && item.expires_at == null);
}
hasAnyUnexpiredOffer() {
return Object.values(c3939_15.userTrialOffers).some((item) => item.expires_at == null || Date.parse(item.expires_at) > Date.now());
}
hasAnyUnexpiredDiscountOffer() {
return Object.values(c3939_15.userDiscountOffers).some((item) => !item.hasExpired());
}
canFractionalPremiumUserUseOffer() {
return EntitlementStore.isFractionalPremiumActive({
excludeReverseTrial: true
}) && SubscriptionStore.getPremiumTypeSubscription() == null;
}
getReferrer(a0) {
return a0 == null ? null : c3939_15.userTrialOffers[a0]?.referrer;
}
getState() {
return c3939_15;
}
forceReset() {
c3939_15.userTrialOffers = {};
c3939_15.userDiscountOffers = {};
c3939_15.userOffersLastFetchedAtDate = void 0;
c3939_15.isFetching = false;
}
lastFetchSuccessful() {
return c3939_15.lastFetchSuccessful;
}
}
const userOfferStore = new UserOfferStore(Dispatcher, {
BILLING_USER_OFFER_FETCH_START: function handleUserOfferFetchStart() {
c3939_15.isFetching = true;
},
BILLING_USER_TRIAL_OFFER_ACKNOWLEDGED_SUCCESS: function handleUserTrialOfferAcknowledgedSuccess({ userTrialOffer }) {
if (userTrialOffer != null) {
c3939_15.userTrialOffers[userTrialOffer.trial_id] = userTrialOffer;
} else {
c3939_15.userTrialOffers = {};
}
c3939_15.userOffersLastFetchedAtDate = Date.now();
},
BILLING_USER_OFFER_FETCH_SUCCESS: function handleUserOfferFetchSuccess({ userTrialOffer, userDiscountOffer }) {
if (userTrialOffer == null && userDiscountOffer == null) {
c3939_15.userTrialOffers = {};
c3939_15.userDiscountOffers = {};
c3939_15.userOffersLastFetchedAtDate = void 0;
c3939_15.isFetching = false;
}
if (userTrialOffer != null) {
c3939_15.userTrialOffers[userTrialOffer.trial_id] = userTrialOffer;
c3939_15.userDiscountOffers = {};
} else if (userDiscountOffer != null) {
c3939_15.userDiscountOffers[userDiscountOffer.discountId] = userDiscountOffer;
c3939_15.userTrialOffers = {};
}
c3939_15.userOffersLastFetchedAtDate = Date.now();
c3939_15.isFetching = false;
c3939_15.lastFetchSuccessful = true;
},
BILLING_USER_OFFER_ACKNOWLEDGED_SUCCESS: function handleUserOfferAcknowledgedSuccess({ userTrialOffer, userDiscount, userDiscountOffer }) {
if (userTrialOffer != null) {
c3939_15.userTrialOffers[userTrialOffer.trial_id] = userTrialOffer;
} else {
c3939_15.userTrialOffers = {};
}
if (userDiscount != null) {
c3939_15.userDiscountOffers[userDiscount.discountId] = userDiscount;
} else if (userDiscountOffer != null) {
c3939_15.userDiscountOffers[userDiscountOffer.discountId] = userDiscountOffer;
} else {
c3939_15.userDiscountOffers = {};
}
c3939_15.userOffersLastFetchedAtDate = Date.now();
},
BILLING_USER_OFFER_FETCH_FAIL: function handleUserOfferFetchFail() {
c3939_15.userTrialOffers = {};
c3939_15.userDiscountOffers = {};
c3939_15.userOffersLastFetchedAtDate = void 0;
c3939_15.isFetching = false;
c3939_15.userOffersLastFetchedAtDate = Date.now();
c3939_15.isFetching = false;
c3939_15.lastFetchSuccessful = false;
},
BILLING_USER_OFFER_REDEEMED: function handleUserOfferRedeemed({ offerId }) {
const r14 = Object.keys(c3939_15.userDiscountOffers).find((item) => c3939_15.userDiscountOffers[item].id === offerId);
if (r14 != null) {
delete c3939_15.userDiscountOffers[r14];
}
const r24 = Object.keys(c3939_15.userTrialOffers).find((item) => c3939_15.userTrialOffers[item].id === offerId);
if (r24 != null) {
delete c3939_15.userTrialOffers[r24];
}
return true;
},
BILLING_PAYMENT_SOURCE_CREATE_SUCCESS: handlePaymentSourceChange,
BILLING_PAYMENT_SOURCE_UPDATE_SUCCESS: handlePaymentSourceChange,
BILLING_PAYMENT_SOURCE_REMOVE_SUCCESS: handlePaymentSourceChange,
LOGOUT: function handleReset() {
c3939_15.userTrialOffers = {};
c3939_15.userDiscountOffers = {};
c3939_15.userOffersLastFetchedAtDate = void 0;
c3939_15.isFetching = false;
}
});
export default userOfferStore;