314 lines
13 KiB
TypeScript
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;
|