// 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;