/* Metro module 12573; source: modules/rewards/ProgramRewardsUtils.tsx; dependencies: [1878, 1880, 3579, 12574, 12570, 12576, 5136, 12577, 3802, 2] */ function _fun96324(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#96324, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:6, offset: 0x0215aa4f, size: 299 bytes, params: 8, frame: 23 var object2; const env0_0 = require; const closure = isEligibleForProgramReward; const closure2 = canFetchNitroProgramReward; const closure3 = canFetchXboxProgramReward; const closure4 = hasNecessaryPremiumSubscriptionStatus; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const userStore = importDefault(1878) /* metro dependency 1878: UserStore */; const env0_4 = (require(1880) /* metro dependency 1880: PremiumConstants */).PremiumTypes; object2 = {}; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const NITRO = RewardProgram.NITRO; object2[NITRO] = closure2; const XBOX = RewardProgram.XBOX; object2[XBOX] = closure3; (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/rewards/ProgramRewardsUtils.tsx'); exports.isProgramRewardStale = isProgramRewardStale; exports.isEligibleForProgramReward = closure; exports.useIsEligibleForProgramReward = useIsEligibleForProgramReward; exports.canFetchNitroProgramReward = closure2; exports.canFetchXboxProgramReward = closure3; exports.canFetchAnyProgramReward = canFetchAnyProgramReward; exports.hasNecessaryPremiumSubscriptionStatus = closure4; } function isEligibleForProgramReward(a0) { // fn#96325, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:129, offset: 0x0215ab7a, size: 212 bytes, params: 2, frame: 18 let value = a1; const r3 = value !== undefined ? value : 'ProgramRewardsUtils'; const useVirtualCurrencyEnabledModule = require(12574) /* metro dependency 12574: useVirtualCurrencyEnabled */; const enabled = useVirtualCurrencyEnabledModule.isVirtualCurrencyEnabled({location: r3}).enabled; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const NITRO = RewardProgram.NITRO; if (NITRO === a0) { value = require(12576) /* metro dependency 12576: PremiumRewardsOrbsExperiment */; return value.getPremiumRewardsOrbsExperiment(r3).isInTreatment && enabled; } const XBOX = RewardProgram.XBOX; if (XBOX === a0) { value = require(5136) /* metro dependency 5136: CrepeExperiment */; value = value.getIsCrepeEnabled(r3); return value && enabled; } return false; } function canFetchNitroProgramReward() { // fn#96326, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:452, offset: 0x0215ac4e, size: 73 bytes, params: 1, frame: 16 const value = a0; const r4 = value !== undefined ? value : 'ProgramRewardsUtils'; const isEligibleForProgramRewardBinding = isEligibleForProgramReward; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const NITRO = RewardProgram.NITRO; return isEligibleForProgramRewardBinding(NITRO, r4) && hasNecessaryPremiumSubscriptionStatus(); } function canFetchXboxProgramReward() { // fn#96327, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:619, offset: 0x0215ac97, size: 109 bytes, params: 1, frame: 16 var r0; var moduleValue; const value = a0; const r3 = value !== undefined ? value : 'ProgramRewardsUtils'; const isEligibleForProgramRewardBinding = isEligibleForProgramReward; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const XBOX = RewardProgram.XBOX; const isEligibleForProgramReward2 = isEligibleForProgramRewardBinding(XBOX, r3); if (isEligibleForProgramReward2) { moduleValue = require(12577) /* metro dependency 12577: useHasXboxMonthlyOrbsPerk */; r0 = moduleValue.hasCrepeMonthlyOrbsPerk(UserStore.getCurrentUser()); } else { r0 = isEligibleForProgramReward2; } return r0; } function hasNecessaryPremiumSubscriptionStatus(a0) { // fn#96328, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:916, offset: 0x0215ad04, size: 74 bytes, params: 2, frame: 14 const r3 = a0 ?? UserStore.getCurrentUser(); const premiumUtilsModule = require(3802) /* metro dependency 3802: PremiumUtils */; const isPremiumExactly = premiumUtilsModule.isPremiumExactly; const TIER_2 = PremiumTypes.TIER_2; return Reflect.apply(isPremiumExactly, premiumUtilsModule, [r3, TIER_2]); } function isProgramRewardStale(a0) { // fn#96329, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:1141, offset: 0x0215ad4e, size: 100 bytes, params: 2, frame: 14 var Date; var value2; var date; if (a0 == null) { return true; } const next_reward_date = a0.next_reward_date; let value = next_reward_date != null; let r0 = value && next_reward_date !== ''; if (r0) { value = importDefault(3579) /* metro dependency 3579 */; Date = global.Date; value2 = Object.create(Date.prototype, {constructor: {value: Date}}); date = new Date(next_reward_date); value = value(date instanceof Object ? date : value2); r0 = value; } return r0; } function useIsEligibleForProgramReward(a0) { // fn#96330, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:1353, offset: 0x0215adb2, size: 196 bytes, params: 2, frame: 19 const value = a1; const r10 = value !== undefined ? value : 'ProgramRewardsUtils'; const premiumRewardsOrbsExperimentModule = require(12576) /* metro dependency 12576: PremiumRewardsOrbsExperiment */; const usePremiumRewardsOrbsExperiment = premiumRewardsOrbsExperimentModule.usePremiumRewardsOrbsExperiment; const isInTreatment = Reflect.apply(usePremiumRewardsOrbsExperiment, premiumRewardsOrbsExperimentModule, [r10]).isInTreatment; const value2 = (require(5136) /* metro dependency 5136: CrepeExperiment */).useIsCrepeEnabled(r10); const useVirtualCurrencyEnabledModule = require(12574) /* metro dependency 12574: useVirtualCurrencyEnabled */; const useVirtualCurrencyEnabled = useVirtualCurrencyEnabledModule.useVirtualCurrencyEnabled; const enabled = Reflect.apply(useVirtualCurrencyEnabled, useVirtualCurrencyEnabledModule, [{location: r10}]).enabled; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const NITRO = RewardProgram.NITRO; if (NITRO === a0) { return isInTreatment && enabled; } const XBOX = RewardProgram.XBOX; if (XBOX === a0) { return value2 && enabled; } return false; } function canFetchAnyProgramReward() { // fn#96331, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12763:1826, offset: 0x0215ae76, size: 127 bytes, params: 1, frame: 16 var r5; var r2; var property; var binding; var value4; let value = a0; reducibleJoin2: while (true) { if (value !== undefined) { r5 = value; break reducibleJoin2; } value = 'ProgramRewardsUtils'; r5 = value; break reducibleJoin2; } const Object = global.Object; const values = Object.values; const RewardProgram = (require(12570) /* metro dependency 12570: ProgramRewardsTypes */).RewardProgram; const value2 = Reflect.apply(values, Object, [RewardProgram]); let length = value2.length; const value3 = 0; if (value3 < length) { r2 = value3; reducibleLoop3: while (true) { property = value2[r2]; if (typeof property === 'number') { binding = env0_5; reducibleJoin5: while (true) { if (binding[property](r5)) { return true; } break reducibleJoin5; } } value4 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; length = value2.length; if (!(value4 < length)) { return false; } r2 = value4; continue reducibleLoop3; } } return false; }