decord/source/modules/premium/PremiumBogoPromotionUtilsCommon.tsx
2026-08-25 06:04:03 +00:00

446 lines
16 KiB
TypeScript

// Module ID: 12941
// Function ID: 12942
// Name: isUserEligibleBasedOnCurrentOrPreviousSubs
// Dependencies: [5, 1922, 4049, 7057, 7004, 7487, 1924, 676, 3979, 4043, 500, 4642, 7024, 12942, 12943, 647, 7054, 7484, 12944, 12945, 4725, 7788, 2]
// Exports: maybeFetchActiveBogoPromotion, useIsEligibleForBogoPromotion
// Module 12941 (isUserEligibleBasedOnCurrentOrPreviousSubs)
import set from "set" /* 500 */;
import defaultAreStatesEqual from "defaultAreStatesEqual" /* 647 */;
import hooksDefault from "hooks" /* 3979 */;
import getPremiumPlanItemDefault from "getPremiumPlanItem" /* 4043 */;
import isTablet from "isTablet" /* 4642 */;
import useBlockedPaymentsConfig from "useBlockedPaymentsConfig" /* 7024 */;
import usePremiumTrialOffer from "usePremiumTrialOffer" /* 7054 */;
import usePremiumDiscountOffer from "usePremiumDiscountOffer" /* 7484 */;
import useEligibleActiveOutboundPromotions from "useEligibleActiveOutboundPromotions" /* 12942 */;
import apexExperiment from "apexExperiment" /* 12943 */;
import useScheduledForcedUpdateDefault from "useScheduledForcedUpdate" /* 12944 */;
import closure_3 from "asyncGeneratorStep" /* 5 */;
import closure_4 from "mergeGuildAvatar" /* 1922 */;
import closure_5 from "reset" /* 4049 */;
import closure_6 from "emitChanges" /* 7057 */;
import closure_7 from "addEntitlement" /* 7004 */;
import closure_8 from "createEmptyPromotionsByType" /* 7487 */;
import GuildFeatures from "GuildFeatures" /* 1924 */;
import ME from "ME" /* 676 */;
require = arg1;
function isUserEligibleBasedOnCurrentOrPreviousSubs(experimentEnabled) {
({ premiumSubscription, mostRecentSubscription, previousPremiumSubscription } = experimentEnabled);
if (experimentEnabled.experimentEnabled) {
if (null != mostRecentSubscription) {
if (mostRecentSubscription.status === constants2.ENDED) {
const endedAt = mostRecentSubscription.endedAt;
if (null != endedAt) {
if (mostRecentSubscription.hasPremiumAtLeast(closure_10.TIER_2)) {
const obj = hooksDefault();
if (subtractResult.isBefore(endedAt)) {
return false;
}
subtractResult = hooksDefault().subtract(10, "days");
}
}
}
}
if (null != previousPremiumSubscription) {
if (previousPremiumSubscription.status === constants2.ENDED) {
const endedAt2 = previousPremiumSubscription.endedAt;
if (null != endedAt2) {
if (previousPremiumSubscription.hasPremiumAtLeast(closure_10.TIER_2)) {
const obj3 = hooksDefault();
if (subtractResult1.isBefore(endedAt2)) {
return false;
}
subtractResult1 = hooksDefault().subtract(10, "days");
}
}
}
}
if (null != premiumSubscription) {
let hasActiveTrial;
currentUser = currentUser.getCurrentUser();
if (premiumSubscription != null) {
hasActiveTrial = premiumSubscription.hasActiveTrial;
}
let isPremiumExactlyResult = hasActiveTrial;
if (isPremiumExactlyResult) {
isPremiumExactlyResult = getPremiumPlanItemDefault.isPremiumExactly(currentUser, tmp22.TIER_0);
const obj5 = getPremiumPlanItemDefault;
}
const hasPremiumAtLeastResult = premiumSubscription.hasPremiumAtLeast(closure_10.TIER_2);
tmp22 = closure_10;
let isAndroidResult = set.isAndroid();
if (isAndroidResult) {
isAndroidResult = premiumSubscription.paymentGateway !== constants.GOOGLE;
}
return false;
}
const isMobile = isTablet.isMobile;
let tmp20 = !isMobile;
if (isMobile) {
tmp20 = !fractionalPremiumActive.isFractionalPremiumActive();
}
return tmp20;
} else {
return false;
}
}
function isEligibleForBOGOPromotion() {
const self = this;
const apply = _isEligibleForBOGOPromotion.apply;
if (typeof apply === "unknown") {
let applyArgumentsResult = HermesBuiltin.applyArguments(self);
} else {
applyArgumentsResult = apply(self, arguments);
}
return applyArgumentsResult;
}
function _isEligibleForBOGOPromotion() {
const self = this;
const tmp = callback(() => {
closure_0 = arg0;
c3 = 0;
c4 = 0;
const iter = (function*() {
if (authStore === 2) {
authStore = 3;
HermesBuiltin.throwTypeError();
} else if (tmp4 === 3) {
if (arg0 === 1) {
throw arg1;
} else if (arg0 === 2) {
let obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
return { value: "HermesInternal", done: "HermesInternal" };
}
} else {
try {
authStore = 2;
if (0 === isPaymentsBlocked) {
if (arg0 === 1) {
authStore = 3;
throw arg1;
} else if (arg0 === 2) {
authStore = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
dependencyMap = tmp5;
let currentUser2 = tmp2;
let flag;
if (flag === undefined) {
flag = true;
}
currentUser2 = undefined;
dependencyMap = undefined;
isPaymentsBlocked = undefined;
authStore = undefined;
let store;
c6 = undefined;
let mostRecentPremiumTypeSubscription;
isPaymentsBlocked = 1;
authStore = 1;
return { value: "ct", done: true };
}
} else {
if (1 === tmp5) {
if (arg0 === 1) {
authStore = 3;
throw arg1;
} else if (arg0 === 2) {
authStore = 3;
obj1 = { value: null, done: true };
obj1[0] = arg1;
return obj1;
} else {
currentUser2 = authStore.getCurrentUser();
let isClaimedResult;
if (currentUser2 != null) {
isClaimedResult = currentUser2.isClaimed();
}
dependencyMap = !isClaimedResult;
let obj2 = flag(7024);
isPaymentsBlocked = obj2.getIsPaymentsBlocked();
let obj3 = flag(12943);
authStore = obj3.getBogoPromotionGateEnabled("bogo eligibility async check");
let obj4 = flag(12945);
store = obj4.getBogoMarketingMaterialsEnabled("bogo marketing eligibility async check");
const isMobile = flag(4642).isMobile;
let isAndroidResult = !isMobile;
if (isMobile) {
let obj5 = flag(500);
isAndroidResult = obj5.isAndroid();
}
c6 = isAndroidResult;
if (!dependencyMap) {
if (!isPaymentsBlocked) {
if (authStore) {
if (!flag) {
if (c6) {
if (c6.hasFetchedOffer()) {
authStore = 3;
return { value: false, done: true };
}
const result = store.hasFetchedMostRecentPremiumTypeSubscription();
let tmp37 = !result;
if (!result) {
const currentUser = authStore.getCurrentUser();
let hasPurchasedFlagResult;
if (currentUser != null) {
hasPurchasedFlagResult = currentUser.hasPurchasedFlag(PREMIUM_TIER_2.PREMIUM_TIER_2);
}
tmp37 = hasPurchasedFlagResult;
}
if (tmp37) {
isPaymentsBlocked = 2;
authStore = 1;
obj2 = { value: null, done: false };
obj2[0] = flag(4725).fetchMostRecentSubscription();
return obj2;
}
}
}
}
}
}
authStore = 3;
return { value: false, done: true };
}
} else {
if (2 === tmp5) {
if (arg0 === 1) {
authStore = 3;
throw arg1;
} else if (arg0 === 2) {
authStore = 3;
obj3 = { value: null, done: true };
obj3[0] = arg1;
return obj3;
}
} else if (arg0 === 1) {
authStore = 3;
throw arg1;
} else if (arg0 === 2) {
authStore = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
}
mostRecentPremiumTypeSubscription = store.getMostRecentPremiumTypeSubscription();
obj4 = { experimentEnabled: null, premiumSubscription: null, mostRecentSubscription: null, previousPremiumSubscription: null };
obj4[0] = authStore;
obj4[1] = store.getPremiumTypeSubscription();
obj4[2] = mostRecentPremiumTypeSubscription;
obj4[3] = store.getPreviousPremiumTypeSubscription();
authStore = 3;
obj5 = { value: null, done: true };
obj5[0] = callback(obj4);
return obj5;
}
if (!store.hasFetchedSubscriptions()) {
isPaymentsBlocked = 3;
authStore = 1;
const obj6 = { value: null, done: false };
obj6[0] = flag(4725).fetchSubscriptions();
return obj6;
}
}
} catch (tmp59) {
authStore = tmp;
throw tmp59;
}
}
})();
iter.next();
return iter;
});
closure_15 = tmp;
const apply = tmp.apply;
if (typeof apply === "unknown") {
let applyArgumentsResult = HermesBuiltin.applyArguments(self);
} else {
applyArgumentsResult = apply(self, arguments);
}
return applyArgumentsResult;
}
function _maybeFetchActiveBogoPromotion() {
const self = this;
const tmp = callback(function*() {
if (c3 === 2) {
c3 = 3;
HermesBuiltin.throwTypeError();
} else if (tmp4 === 3) {
if (arg0 === 1) {
throw arg1;
} else if (arg0 === 2) {
let obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
return { value: "HermesInternal", done: "HermesInternal" };
}
} else {
try {
c3 = 2;
if (0 === table) {
if (arg0 === 1) {
c3 = 3;
throw arg1;
} else if (arg0 === 2) {
c3 = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
} else {
closure_1 = tmp5;
let bogoPromotion = tmp2;
bogoPromotion = undefined;
table = 1;
c3 = 1;
obj1 = { value: null, done: false };
obj1[0] = closure_1_14(false);
return obj1;
}
} else {
if (1 === tmp5) {
if (arg0 === 1) {
c3 = 3;
throw arg1;
} else if (arg0 === 2) {
c3 = 3;
let obj2 = { value: null, done: true };
obj2[0] = arg1;
return obj2;
} else if (arg1) {
bogoPromotion = bogoPromotion.bogoPromotion;
if (null != bogoPromotion) {
const _Date = Date;
const date = new Date(bogoPromotion.endDate);
const _Date2 = Date;
if (valueOfResult >= Date.now()) {
c3 = 3;
return { value: "HermesInternal", done: "HermesInternal" };
}
valueOfResult = date.valueOf();
}
obj2 = bogoPromotion(table[21]);
table = 2;
c3 = 1;
const obj3 = { value: null, done: false };
obj3[0] = obj2.fetchActiveBogoPromotion();
return obj3;
}
} else if (arg0 === 1) {
c3 = 3;
throw arg1;
} else if (arg0 === 2) {
c3 = 3;
obj = { value: null, done: true };
obj[0] = arg1;
return obj;
}
c3 = 3;
return { value: "HermesInternal", done: "HermesInternal" };
}
} catch (tmp22) {
c3 = tmp;
throw tmp22;
}
}
});
closure_16 = tmp;
const apply = tmp.apply;
if (typeof apply === "unknown") {
let applyArgumentsResult = HermesBuiltin.applyArguments(self);
} else {
applyArgumentsResult = apply(self, arguments);
}
return applyArgumentsResult;
}
({ PurchasedFlags: c9, PremiumTypes: c10 } = GuildFeatures);
({ PaymentGateways: unpackModuleId, SubscriptionStatusTypes: closure_12 } = ME);
let result = require("set").fileFinishedImporting("modules/premium/PremiumBogoPromotionUtilsCommon.tsx");
export { isUserEligibleBasedOnCurrentOrPreviousSubs };
export const useIsEligibleForBogoPromotion = function useIsEligibleForBogoPromotion() {
let flag = arg0;
if (arg0 === undefined) {
flag = true;
}
const isPaymentsBlocked = useBlockedPaymentsConfig.useIsPaymentsBlocked();
const obj = useBlockedPaymentsConfig;
const promotion = useEligibleActiveOutboundPromotions.useBogoPromotion().promotion;
const obj2 = useEligibleActiveOutboundPromotions;
const bogoPromotionGateEnabled = apexExperiment.useBogoPromotionGateEnabled("bogo eligibility hook");
const obj3 = apexExperiment;
const items = [closure_5];
const stateFromStoresObject = defaultAreStatesEqual.useStateFromStoresObject(items, () => ({ mostRecentSubscription: store.getMostRecentPremiumTypeSubscription(), premiumSubscription: store.getPremiumTypeSubscription(), previousPremiumSubscription: store.getPreviousPremiumTypeSubscription() }));
({ mostRecentSubscription, premiumSubscription, previousPremiumSubscription } = stateFromStoresObject);
const obj4 = defaultAreStatesEqual;
const premiumTrialOffer = usePremiumTrialOffer.usePremiumTrialOffer();
const obj5 = usePremiumTrialOffer;
let num;
const premiumDiscountOffer = usePremiumDiscountOffer.usePremiumDiscountOffer();
if (promotion != null) {
num = promotion.endDate;
}
if (num == null) {
num = 0;
}
const obj6 = usePremiumDiscountOffer;
const valueOfResult = new Date(num).valueOf();
const timestamp = Date.now();
let num2 = -1;
const date = new Date(num);
if (timestamp <= valueOfResult) {
num2 = valueOfResult - timestamp;
}
useScheduledForcedUpdateDefault({ delay: num2 });
const isMobile = tmp(4642).isMobile;
let isAndroidResult = !isMobile;
if (isMobile) {
let tmpResult = tmp(500);
isAndroidResult = tmpResult.isAndroid();
}
const tmp11 = useScheduledForcedUpdateDefault;
tmpResult = tmp(12945);
let bogoMarketingMaterialsEnabled = tmpResult.useBogoMarketingMaterialsEnabled("bogo marketing eligibility hook");
let tmp16 = !tmp10;
if (timestamp <= valueOfResult) {
if (!flag) {
if (isAndroidResult) {
isAndroidResult = tmp14;
}
if (isAndroidResult) {
isAndroidResult = null == premiumTrialOffer;
}
if (isAndroidResult) {
isAndroidResult = null != promotion;
}
if (isAndroidResult) {
isAndroidResult = !isPaymentsBlocked;
}
if (isAndroidResult) {
isAndroidResult = null == premiumDiscountOffer;
}
bogoMarketingMaterialsEnabled = isAndroidResult;
}
tmp16 = bogoMarketingMaterialsEnabled;
}
return tmp16;
};
export { isEligibleForBOGOPromotion };
export const maybeFetchActiveBogoPromotion = function maybeFetchActiveBogoPromotion() {
const self = this;
const apply = _maybeFetchActiveBogoPromotion.apply;
if (typeof apply === "unknown") {
let applyArgumentsResult = HermesBuiltin.applyArguments(self);
} else {
applyArgumentsResult = apply(self, arguments);
}
return applyArgumentsResult;
};