/* Metro module 5180; source: modules/billing/hooks/useFractionalPremiumInfo.tsx; dependencies: [57, 31, 1878, 3808, 5181, 661, 1880, 3738, 44, 3817, 3802, 566, 4594, 5182, 22, 2] */ import Module00057 from '../../../by-id/module-00057.js'; /* Metro dependency 57 */ import UserStore from '../../../stores/UserStore.tsx'; /* Metro dependency 1878 */ import SubscriptionStore from '../../../stores/billing/SubscriptionStore.tsx'; /* Metro dependency 3808 */ import UseMountEffect from '../../../hooks/useMountEffect.tsx'; /* Metro dependency 4594 */ import EntitlementStore from '../../../stores/game_store/EntitlementStore.tsx'; /* Metro dependency 5181 */ import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as Module00022Module from '../../../by-id/module-00022.js'; /* Metro dependency 22 */ import * as ReactModule from '../../../by-id/module-00031-React.js'; /* Metro dependency 31 */ import * as ConstantsModule from '../../../Constants.tsx'; /* Metro dependency 661 */ function _fun45601(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#45601, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:6, offset: 0x01192fa0, size: 284 bytes, params: 8, frame: 19 const env0_0 = require; const shouldFetchRedemptionEntitlements = function(a0, a1) { return a1 != null && !EntitlementStore.fetchingAllEntitlements && (EntitlementStore.fetchedAllEntitlements ? a0 : !EntitlementStore.fetchedAllEntitlements); }; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = ConstantsModule; const env0_8 = value.EntitlementSourceTypes; const env0_9 = value.EntitlementTypes; const env0_10 = value.SubscriptionStatusTypes; value = require(1880) /* metro dependency 1880: PremiumConstants */; const env0_11 = value.FractionalPremiumStates; const env0_12 = value.PREMIUM_SUBSCRIPTION_APPLICATION; (FileImportTrackerModule).fileFinishedImporting('modules/billing/hooks/useFractionalPremiumInfo.tsx'); exports.default = useFractionalPremiumInfo; function shouldFetchApplicationEntitlements(a0) { // fn#45603, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:1869, offset: 0x011930f9, size: 77 bytes, params: 2, frame: 12 return a0 != null && !EntitlementStore.applicationIdsFetching.has(PREMIUM_SUBSCRIPTION_APPLICATION) && !EntitlementStore.applicationIdsFetched.has(PREMIUM_SUBSCRIPTION_APPLICATION); } function calculateFractionalPremiumInfo({isFetching, entitlements, unactivatedFractionalPremiumUnits, currentUser, premiumSubscription, fetchedAllEntitlements, excludeReverseTrialFromCountdown}) { // fn#45604, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:342, offset: 0x01193146, size: 839 bytes, params: 2, frame: 31 var r10; var r14; var r19; var value7; var defaultImport3; var moduleValue; var Array; var object; const value = undefined; isFetching = !(isFetching === value) && isFetching; let object3 = {isFractionalPremiumActive: false}; const NONE = FractionalPremiumStates.NONE; object3.fractionalState = NONE; object3.startsAt = (importDefault(3738) /* metro dependency 3738 */)(0); object3.endsAt = (importDefault(3738) /* metro dependency 3738 */)(0); const value4 = ''; object3.currentEntitlementId = value4; object3.currentEntitlementEndsAt = (importDefault(3738) /* metro dependency 3738 */)(0); object3.unactivatedUnits = []; object3.fetched = fetchedAllEntitlements; if (isFetching) { object = {}; copyDataProperties(object, object3, undefined); object['fetched'] = false; return object; } if (currentUser != null) { if (entitlements.length !== 0) { value7 = entitlements.filter(function(a0) { return a0.endsAt != null && a0.startsAt != null; }).sort(_fun45606); value7.reverse(); if (value7.length > 0) { if (value7.length !== entitlements.length) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(_fun45607)}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } if (value7[0].startsAt == null) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(_fun45607)}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } if (value7[0].endsAt == null) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(_fun45607)}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } r10 = value7[0] ?? null; r14 = r10 == null ? FractionalPremiumStates.NONE : premiumSubscription == null ? FractionalPremiumStates.FP_ONLY : premiumSubscription.status === SubscriptionStatusTypes.PAUSED ? FractionalPremiumStates.FP_SUB_PAUSED : FractionalPremiumStates.FP_ONLY; r19 = excludeReverseTrialFromCountdown && (r10 == null ? value : r10.sourceType) === EntitlementSourceTypes.REVERSE_TRIAL; object3 = {isFractionalPremiumActive: r10 != null, fractionalState: r14}; r14 = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.startsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.startsAt = r14; if (r10 != null) { defaultImport3 = importDefault(3738) /* metro dependency 3738 */; moduleValue = require(3802) /* metro dependency 3802: PremiumUtils */; r14 = defaultImport3(moduleValue.extendDateWithUnconsumedFractionalPremium(r10.endsAt, unactivatedFractionalPremiumUnits, value, r19)); } else { r14 = (importDefault(3738) /* metro dependency 3738 */)(0); } object3.endsAt = r14; object3.currentEntitlementId = r10 != null ? r10.id : value4; object3.currentEntitlementEndsAt = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.endsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.unactivatedUnits = unactivatedFractionalPremiumUnits; object3.fetched = fetchedAllEntitlements; return object3; } r10 = value7[0] ?? null; r14 = r10 == null ? FractionalPremiumStates.NONE : premiumSubscription == null ? FractionalPremiumStates.FP_ONLY : premiumSubscription.status === SubscriptionStatusTypes.PAUSED ? FractionalPremiumStates.FP_SUB_PAUSED : FractionalPremiumStates.FP_ONLY; r19 = excludeReverseTrialFromCountdown && (r10 == null ? value : r10.sourceType) === EntitlementSourceTypes.REVERSE_TRIAL; object3 = {isFractionalPremiumActive: r10 != null, fractionalState: r14}; r14 = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.startsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.startsAt = r14; if (r10 != null) { defaultImport3 = importDefault(3738) /* metro dependency 3738 */; moduleValue = require(3802) /* metro dependency 3802: PremiumUtils */; r14 = defaultImport3(moduleValue.extendDateWithUnconsumedFractionalPremium(r10.endsAt, unactivatedFractionalPremiumUnits, value, r19)); } else { r14 = (importDefault(3738) /* metro dependency 3738 */)(0); } object3.endsAt = r14; object3.currentEntitlementId = r10 != null ? r10.id : value4; object3.currentEntitlementEndsAt = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.endsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.unactivatedUnits = unactivatedFractionalPremiumUnits; object3.fetched = fetchedAllEntitlements; return object3; } if (unactivatedFractionalPremiumUnits.length === 0) { return object3; } value7 = entitlements.filter(function(a0) { return a0.endsAt != null && a0.startsAt != null; }).sort(_fun45606); value7.reverse(); if (value7.length > 0) { if (value7.length !== entitlements.length) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(function(a0) { return a0.id; })}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } if (value7[0].startsAt == null) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(_fun45607)}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } if (value7[0].endsAt == null) { Array = global.Array; (require(3817) /* metro dependency 3817: BillingUtils */).captureBillingMessage('fractional redemption entitlements should have startsAt/endsAt', {extra: {entitlementIds: Array.from(entitlements.values()).map(_fun45607)}}); throw new global.Error('fractional redemption entitlements should have startsAt/endsAt'); } r10 = value7[0] ?? null; r14 = r10 == null ? FractionalPremiumStates.NONE : premiumSubscription == null ? FractionalPremiumStates.FP_ONLY : premiumSubscription.status === SubscriptionStatusTypes.PAUSED ? FractionalPremiumStates.FP_SUB_PAUSED : FractionalPremiumStates.FP_ONLY; r19 = excludeReverseTrialFromCountdown && (r10 == null ? value : r10.sourceType) === EntitlementSourceTypes.REVERSE_TRIAL; object3 = {isFractionalPremiumActive: r10 != null, fractionalState: r14}; r14 = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.startsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.startsAt = r14; if (r10 != null) { defaultImport3 = importDefault(3738) /* metro dependency 3738 */; moduleValue = require(3802) /* metro dependency 3802: PremiumUtils */; r14 = defaultImport3(moduleValue.extendDateWithUnconsumedFractionalPremium(r10.endsAt, unactivatedFractionalPremiumUnits, value, r19)); } else { r14 = (importDefault(3738) /* metro dependency 3738 */)(0); } object3.endsAt = r14; object3.currentEntitlementId = r10 != null ? r10.id : value4; object3.currentEntitlementEndsAt = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.endsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.unactivatedUnits = unactivatedFractionalPremiumUnits; object3.fetched = fetchedAllEntitlements; return object3; } r10 = value7[0] ?? null; r14 = r10 == null ? FractionalPremiumStates.NONE : premiumSubscription == null ? FractionalPremiumStates.FP_ONLY : premiumSubscription.status === SubscriptionStatusTypes.PAUSED ? FractionalPremiumStates.FP_SUB_PAUSED : FractionalPremiumStates.FP_ONLY; r19 = excludeReverseTrialFromCountdown && (r10 == null ? value : r10.sourceType) === EntitlementSourceTypes.REVERSE_TRIAL; object3 = {isFractionalPremiumActive: r10 != null, fractionalState: r14}; r14 = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.startsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.startsAt = r14; if (r10 != null) { defaultImport3 = importDefault(3738) /* metro dependency 3738 */; moduleValue = require(3802) /* metro dependency 3802: PremiumUtils */; r14 = defaultImport3(moduleValue.extendDateWithUnconsumedFractionalPremium(r10.endsAt, unactivatedFractionalPremiumUnits, value, r19)); } else { r14 = (importDefault(3738) /* metro dependency 3738 */)(0); } object3.endsAt = r14; object3.currentEntitlementId = r10 != null ? r10.id : value4; object3.currentEntitlementEndsAt = r10 != null ? (importDefault(3738) /* metro dependency 3738 */)(r10.endsAt) : (importDefault(3738) /* metro dependency 3738 */)(0); object3.unactivatedUnits = unactivatedFractionalPremiumUnits; object3.fetched = fetchedAllEntitlements; } return object3; function _fun45606(a0, a1) { // fn#45606, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:838, offset: 0x011934ab, size: 122 bytes, params: 3, frame: 16 const value = environment.__proto__; (importDefault(44) /* metro dependency 44 */)(a0.endsAt != null && a1.endsAt != null, 'endsAt should not be null'); return a0.endsAt < a1.endsAt ? -1 : a0.endsAt > a1.endsAt ? 1 : 0; } } function useFractionalPremiumInfo() { // fn#45608, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:2094, offset: 0x01193525, size: 532 bytes, params: 1, frame: 26 const value = a0; const r0 = value !== undefined ? value : {'forceFetch': false, 'excludeReverseTrial': false, 'excludeReverseTrialFromCountdown': false}; const forceFetch = r0.forceFetch; const env0_1 = r0.excludeReverseTrial; const excludeReverseTrialFromCountdown = r0.excludeReverseTrialFromCountdown; const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() { return UserStore.getCurrentUser(); }); const currentUser2 = currentUser; const value2 = (require(566) /* metro dependency 566: flux */).useStateFromStoresArray([EntitlementStore], function() { return EntitlementStore.getFractionalPremium({excludeReverseTrial: excludeReverseTrial}); }); const env0_4 = value2; const fetchedAllEntitlements = (require(566) /* metro dependency 566: flux */).useStateFromStores([EntitlementStore], function() { return EntitlementStore.fetchedAllEntitlements; }); const value3 = (require(566) /* metro dependency 566: flux */).useStateFromStoresArray([EntitlementStore], function() { return EntitlementStore.getUnactivatedFractionalPremiumUnits(); }); const premiumTypeSubscription = (require(566) /* metro dependency 566: flux */).useStateFromStores([SubscriptionStore], function() { return SubscriptionStore.getPremiumTypeSubscription(); }); const binding = env0_4; const useState = binding.useState; const calculateFractionalPremiumInfoBinding = calculateFractionalPremiumInfo; let r13 = shouldFetchRedemptionEntitlements(forceFetch, currentUser) || EntitlementStore.fetchingAllEntitlements; r13 = !r13 ? shouldFetchApplicationEntitlements(currentUser) : r13; r13 = !r13 ? EntitlementStore.applicationIdsFetching.has(PREMIUM_SUBSCRIPTION_APPLICATION) : r13; const value6 = currentUser2(Reflect.apply(useState, binding, [calculateFractionalPremiumInfoBinding({isFetching: r13, entitlements: value2, unactivatedFractionalPremiumUnits: value3, currentUser: currentUser, premiumSubscription: premiumTypeSubscription, fetchedAllEntitlements: fetchedAllEntitlements, excludeReverseTrialFromCountdown: excludeReverseTrialFromCountdown})]), 2); const property = value6[0]; const env0_8 = value6[1]; (UseMountEffect)(_fun45614); env0_4.useEffect(_fun45615, [currentUser, value2, premiumTypeSubscription, value3, fetchedAllEntitlements, excludeReverseTrialFromCountdown]); return property; function _fun45614() { // fn#45614, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:3043, offset: 0x011937a2, size: 130 bytes, params: 1, frame: 16 if (shouldFetchRedemptionEntitlements(forceFetch, currentUser)) { (require(5182) /* metro dependency 5182: EntitlementActionCreators */).fetchUserEntitlements({entitlementType: EntitlementTypes.FRACTIONAL_REDEMPTION}); } if (shouldFetchApplicationEntitlements(currentUser)) { (require(5182) /* metro dependency 5182: EntitlementActionCreators */).fetchUserEntitlementsForApplication(PREMIUM_SUBSCRIPTION_APPLICATION); } } function _fun45615() { // fn#45615, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:3265, offset: 0x01193824, size: 95 bytes, params: 1, frame: 13 const env0_0 = calculateFractionalPremiumInfo({entitlements: env0_4, unactivatedFractionalPremiumUnits: env0_6, currentUser: currentUser, premiumSubscription: premiumTypeSubscription, fetchedAllEntitlements: fetchedAllEntitlements, excludeReverseTrialFromCountdown: excludeReverseTrialFromCountdown}); env0_8(_fun45616); function _fun45616(a0) { // fn#45616, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:3460, offset: 0x01193883, size: 56 bytes, params: 2, frame: 14 const value = a0; return Module00022Module.isEqual(value, env0_0) ? value : env0_0; } } } } function _fun45607(a0) { // fn#45607, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5358:1084, offset: 0x00e46f8c, size: 10 bytes, params: 2, frame: 1 return a0.id; } global.__d(_fun45601, 5180, [57, 31, 1878, 3808, 5181, 661, 1880, 3738, 44, 3817, 3802, 566, 4594, 5182, 22, 2]) /* metro module 5180, dependencies: [57, 31, 1878, 3808, 5181, 661, 1880, 3738, 44, 3817, 3802, 566, 4594, 5182, 22, 2] */;