/* Metro module 6833; source: modules/storefront/StorefrontUtils.tsx; dependencies: [31, 1949, 1878, 6834, 661, 1880, 22, 6835, 478, 1391, 566, 6829, 5137, 3802, 6836, 2] */ function _fun53784(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#53784, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:6, offset: 0x01355809, size: 354 bytes, params: 8, frame: 21 const env0_0 = require; const transformStorefrontSKUPricesServer = function(a0) { return a0.map(_fun53786); }; const closure = useSKUPrice; const closure2 = formatSKUPrice; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_3 = importAll(31) /* metro dependency 31 */; const localeStore = importDefault(1949) /* metro dependency 1949: LocaleStore */; const userStore = importDefault(1878) /* metro dependency 1878: UserStore */; const skuPricesStore = importDefault(6834) /* metro dependency 6834: SKUPricesStore */; const constantsModule = require(661) /* metro dependency 661: Constants */; const env0_7 = constantsModule.CurrencyCodes; const env0_8 = constantsModule.PriceSetAssignmentPurchaseTypes; const env0_9 = constantsModule.PriceTypes; const env0_10 = constantsModule.SKUFlags; const env0_11 = constantsModule.SKUProductLines; const env0_12 = (require(1880) /* metro dependency 1880: PremiumConstants */).PremiumTypes; (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/storefront/StorefrontUtils.tsx'); exports.transformStorefrontPricesServer = function(a0) { var object = {}; object.skuPriceMap = importDefault(dependencyMap[6]).mapValues(a0.sku_price_map, _fun53807); object.pricingResultIdMap = transformStorefrontPricesResultMapServer(a0.pricing_result_id_map); object.rewardResultIdMap = transformStorefrontRewardsResultMapServer(a0.reward_result_id_map); return object; }; exports.isSlayerSkuAvailableOnThisPlatform = isSlayerSkuAvailableOnThisPlatform; exports.useSKUPrice = closure; exports.useFormattedSKUPrice = useFormattedSKUPrice; exports.formatSKUPrice = closure2; exports.useSKUOrbPrice = useSKUOrbPrice; } function transformStorefrontSKUPricesServer(a0) { // fn#53785, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:271, offset: 0x0135596b, size: 22 bytes, params: 2, frame: 11 return a0.map(function(a0) { return {currency: a0.currency, amount: a0.amount}; }); } function transformStorefrontPricesResultMapServer(a0) { // fn#53787, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:377, offset: 0x0135599e, size: 49 bytes, params: 2, frame: 13 return (importDefault(22) /* metro dependency 22 */).mapValues(a0, _fun53788); } function transformStorefrontRewardsResultMapServer(a0) { // fn#53792, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:656, offset: 0x01355a98, size: 49 bytes, params: 2, frame: 13 return (importDefault(22) /* metro dependency 22 */).mapValues(a0, _fun53793); } function useResolvedUserPrice({sku, priceSetAssignmentPurchaseType, isOrbPrice}) { // fn#53795, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:867, offset: 0x01355b15, size: 134 bytes, params: 2, frame: 18 const pricesForSkuId = (require(566) /* metro dependency 566: flux */).useStateFromStores([SKUPricesStore], function() { var r3; var getPricesForSkuId = SKUPricesStore.getPricesForSkuId; var skuBinding = sku; var value2 = null; r3 = value2 == skuBinding ? undefined : sku.id; return Reflect.apply(getPricesForSkuId, SKUPricesStore, [value2 != r3 ? r3 : value2]); }); return pricesForSkuId.useMemo(_fun53797, [sku, pricesForSkuId, priceSetAssignmentPurchaseType, isOrbPrice]); } function useSKUPrice({sku, priceSetAssignmentPurchaseType = PriceSetAssignmentPurchaseTypes.DEFAULT}) { // fn#53799, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:1745, offset: 0x01355d79, size: 308 bytes, params: 2, frame: 25 const value4 = useResolvedUserPrice({sku: sku, priceSetAssignmentPurchaseType: priceSetAssignmentPurchaseType, isOrbPrice: false}); const userPrice = value4.userPrice; const pricesForPurchaseType = value4.pricesForPurchaseType; const env0_3 = pricesForPurchaseType; const purchaseType = value4.purchaseType; const storeHasPrice = value4.storeHasPrice; const value5 = (require(566) /* metro dependency 566: flux */).useStateFromStoresArray([SKUPricesStore], _fun53800); const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() { return UserStore.getCurrentUser(); }); return env0_3.useMemo(_fun53802, [sku, priceSetAssignmentPurchaseType, currentUser?.premiumType, storeHasPrice, userPrice, pricesForPurchaseType, purchaseType, value5]); } function formatSKUPrice({normalPrice, discountedPrice, discountPercent, userPrice}, a1) { // fn#53805, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:2997, offset: 0x0135613e, size: 337 bytes, params: 3, frame: 19 var r1; var moduleValue; var moduleValue2; const object2 = {}; let value = null; if (value != normalPrice) { if (normalPrice.amount > 0) { moduleValue = require(5137) /* metro dependency 5137: PriceUtils */; r1 = moduleValue.formatPrice(normalPrice.amount, normalPrice.currency); } else { r1 = value; } } else { r1 = value; } object2.normalPrice = r1; if (value != discountedPrice) { if (discountedPrice.amount > 0) { moduleValue2 = require(5137) /* metro dependency 5137: PriceUtils */; r1 = moduleValue2.formatPrice(discountedPrice.amount, discountedPrice.currency); } else { r1 = value; } } else { r1 = value; } object2.discountedPrice = r1; object2.discountPercent = value != discountPercent ? (require(5137) /* metro dependency 5137: PriceUtils */).formatPercent(a1, -discountPercent / 100) : value; if (value != userPrice) { if (userPrice.amount > 0) { value = require(5137) /* metro dependency 5137: PriceUtils */; value = value.formatPrice(userPrice.amount, userPrice.currency); r1 = value; } else { r1 = value; } } else { r1 = value; } object2.userPrice = r1; return object2; } function transformStorefrontPricesServer({sku_price_map, pricing_result_id_map, reward_result_id_map}) { // fn#53806, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:3516, offset: 0x0135628f, size: 108 bytes, params: 2, frame: 17 const object2 = {}; object2.skuPriceMap = (importDefault(22) /* metro dependency 22 */).mapValues(sku_price_map, function(a0) { return {pricingResultId: a0.pricing_result_id, rewardResultIds: a0.reward_result_ids}; }); object2.pricingResultIdMap = transformStorefrontPricesResultMapServer(pricing_result_id_map); object2.rewardResultIdMap = transformStorefrontRewardsResultMapServer(reward_result_id_map); return object2; } function isSlayerSkuAvailableOnThisPlatform(a0) { // fn#53808, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:3964, offset: 0x0135631c, size: 216 bytes, params: 2, frame: 18 var r0; var isAndroid2; var moduleValue3; var moduleValue4; if (a0 == null) { return false; } const productLine = a0.productLine; const SOCIAL_LAYER_GAME_ITEM = SKUProductLines.SOCIAL_LAYER_GAME_ITEM; if (productLine !== SOCIAL_LAYER_GAME_ITEM) { return false; } const r4 = a0?.flags ?? 0; if ((require(478) /* metro dependency 478: PlatformUtils */).isIOS()) { moduleValue4 = require(1391) /* metro dependency 1391: FlagUtils */; r0 = moduleValue4.hasFlag(r4, SKUFlags.AVAILABLE_ON_IOS); } else { isAndroid2 = (require(478) /* metro dependency 478: PlatformUtils */).isAndroid(); if (isAndroid2) { moduleValue3 = require(1391) /* metro dependency 1391: FlagUtils */; r0 = moduleValue3.hasFlag(r4, SKUFlags.AVAILABLE_ON_ANDROID); } else { r0 = !isAndroid2; } } return r0; } function useFormattedSKUPrice({sku, priceSetAssignmentPurchaseType = PriceSetAssignmentPurchaseTypes.DEFAULT}) { // fn#53809, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:4297, offset: 0x013563f4, size: 158 bytes, params: 2, frame: 16 return env0_3.useMemo(_fun53811, [useSKUPrice({sku: sku, priceSetAssignmentPurchaseType: priceSetAssignmentPurchaseType}), (require(566) /* metro dependency 566: flux */).useStateFromStores([LocaleStore], function() { return LocaleStore.locale; })]); } function useSKUOrbPrice({sku, priceSetAssignmentPurchaseType = PriceSetAssignmentPurchaseTypes.DEFAULT}) { // fn#53812, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:4589, offset: 0x013564a1, size: 233 bytes, params: 2, frame: 18 const {userPrice, storeHasPrice} = useResolvedUserPrice({sku: sku, priceSetAssignmentPurchaseType: priceSetAssignmentPurchaseType, isOrbPrice: true}); const currentUser = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() { return UserStore.getCurrentUser(); }); const env0_3 = currentUser; return env0_3.useMemo(_fun53815, [sku, env0_3.useMemo(function() { return importDefault(dependencyMap[13]).isPremium(currentUser, PremiumTypes.TIER_2); }, [currentUser]), storeHasPrice, userPrice]); } function _fun53788(a0) { // fn#53788, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:458, offset: 0x013559cf, size: 49 bytes, params: 2, frame: 13 var environment; const value = environment.__proto__; return (importDefault(22) /* metro dependency 22 */).mapValues(a0, _fun53789); } function _fun53793(a0) { // fn#53793, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:738, offset: 0x01355ac9, size: 49 bytes, params: 2, frame: 13 var environment; const value = environment.__proto__; return (importDefault(22) /* metro dependency 22 */).mapValues(a0, function(a0) { return {type: a0.type, amount: a0.amount}; }); } function _fun53797() { // fn#53797, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:1088, offset: 0x01355bd8, size: 373 bytes, params: 1, frame: 17 const StorefrontPurchaseType = (require(6835) /* metro dependency 6835: StorefrontTypes */).StorefrontPurchaseType; const priceSetAssignmentPurchaseTypeBinding = priceSetAssignmentPurchaseType; const r3 = priceSetAssignmentPurchaseTypeBinding == null || PriceSetAssignmentPurchaseTypes.DEFAULT === priceSetAssignmentPurchaseTypeBinding ? StorefrontPurchaseType.SELF_PURCHASE : PriceSetAssignmentPurchaseTypes.GIFT === priceSetAssignmentPurchaseTypeBinding ? StorefrontPurchaseType.GIFT : StorefrontPurchaseType.SELF_PURCHASE; if (sku == null) { return {userPrice: undefined, pricesForPurchaseType: undefined, purchaseType: r3, storeHasPrice: pricesForSkuId != null}; } if (pricesForSkuId == null) { return {userPrice: undefined, pricesForPurchaseType: undefined, purchaseType: r3, storeHasPrice: pricesForSkuId != null}; } const r4 = pricesForSkuId[r3] ?? pricesForSkuId[StorefrontPurchaseType.SELF_PURCHASE]; return {userPrice: r4 == null || r4.userPrice == null ? undefined : r4.userPrice.find(_fun53798), pricesForPurchaseType: r4, purchaseType: r3, storeHasPrice: true}; } function _fun53800() { // fn#53800, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:2016, offset: 0x01355ead, size: 57 bytes, params: 1, frame: 14 const value = environment.__proto__; return SKUPricesStore.getRewardsForSkuId(sku?.id) ?? []; } function _fun53802() { // fn#53802, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:2172, offset: 0x01355ee6, size: 499 bytes, params: 1, frame: 21 var environment; var r0; var userPrice2; var amount; var r6; var moduleValue; var value5; var property; var pricesForPurchaseTypeBinding; var value6; var prices; var value7; let skuBinding = sku; const value2 = null; if (value2 == skuBinding) { return {'normalPrice': null, 'discountedPrice': null, 'discountPercent': null, 'userPrice': null}; } if (storeHasPrice) { value5 = env0_6.find(_fun53803); r0 = value2 != value5 ? value5[purchaseType] : value2; userPrice2 = value2 != r0 && value2 != userPrice ? userPrice : value2; if (value2 != r0) { amount = r0.amount; amount = amount > 0 ? r0.amount : value2; } else { amount = value2; } if (value2 != r0) { pricesForPurchaseTypeBinding = pricesForPurchaseType; value6 = undefined; if (value2 == pricesForPurchaseTypeBinding) { r0 = value6; } else { prices = pricesForPurchaseType.prices; value7 = environment.__proto__; property = prices[PriceTypes.BASE]; if (value2 == property) { r0 = value6; } else { property = property[(require(6835) /* metro dependency 6835: StorefrontTypes */).StorefrontPriceVariant.NORMAL]; r0 = value2 == property ? value6 : property.find(function({currency}) { return currency !== CurrencyCodes.DISCORD_ORB; }); } } r6 = r0; } else { r6 = userPrice; } return {normalPrice: value2 != r6 && r6.amount > 0 ? r6 : value2, discountedPrice: userPrice2, discountPercent: amount, userPrice: value2 != userPrice ? userPrice : value2}; } const productLine = sku.productLine; const SOCIAL_LAYER_GAME_ITEM = SKUProductLines.SOCIAL_LAYER_GAME_ITEM; if (productLine === SOCIAL_LAYER_GAME_ITEM) { moduleValue = require(6829) /* metro dependency 6829: SlayerStorefrontUtils */; r0 = moduleValue.getPrice(sku, env0_1); } else { skuBinding = sku; r0 = skuBinding.getPrice(value2 == currentUser ? undefined : currentUser.premiumType); } const r3 = value2 != r0 && r0.amount > 0 ? r0 : value2; return {'normalPrice': null, 'discountedPrice': null, 'discountPercent': null, normalPrice: r3, userPrice: r3}; } function _fun53815() { // fn#53815, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:4912, offset: 0x013565c2, size: 130 bytes, params: 1, frame: 15 const skuBinding = sku; const value2 = null; if (value2 == skuBinding) { return value2; } if (storeHasPrice) { return value2 != userPrice ? userPrice : value2; } const orbPriceFromPrices = (require(6836) /* metro dependency 6836: OrbCheckoutUtils */).getOrbPriceFromPrices(sku.prices, env0_4); return value2 != orbPriceFromPrices ? {amount: orbPriceFromPrices.amount, currency: orbPriceFromPrices.currency} : value2; } function _fun53789({user_price, prices}) { // fn#53789, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:482, offset: 0x01355a00, size: 84 bytes, params: 2, frame: 15 var environment; const object2 = {}; const value = environment.__proto__.__proto__; object2.userPrice = transformStorefrontSKUPricesServer(user_price); object2.prices = (importDefault(22) /* metro dependency 22 */).mapValues(prices, _fun53790); return object2; } function _fun53798({currency}) { // fn#53798, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:1614, offset: 0x01355d4d, size: 44 bytes, params: 2, frame: 4 let value = environment.__proto__; const isOrbPriceBinding = isOrbPrice; value = environment.__proto__.__proto__; const DISCORD_ORB = CurrencyCodes.DISCORD_ORB; return isOrbPriceBinding ? currency === DISCORD_ORB : currency !== DISCORD_ORB; } function _fun53803(a0) { // fn#53803, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:2513, offset: 0x013560d9, size: 73 bytes, params: 2, frame: 13 const value = environment.__proto__; const type = a0[purchaseType]?.type; const StorefrontPromotionRewardType = (require(6835) /* metro dependency 6835: StorefrontTypes */).StorefrontPromotionRewardType; const DISCOUNT = StorefrontPromotionRewardType.DISCOUNT; return type === DISCOUNT; } function _fun53790(a0) { // fn#53790, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7011:581, offset: 0x01355a54, size: 49 bytes, params: 2, frame: 13 var environment; const value = environment.__proto__.__proto__.__proto__; return (importDefault(22) /* metro dependency 22 */).mapValues(a0, function(a0) { return transformStorefrontSKUPricesServer(a0); }); }