Files
discord-decomp/sources/utils/PriceUtils.tsx
T
2026-07-27 16:20:00 +03:00

157 lines
7.2 KiB
TypeScript

/* Metro module 5137; source: utils/PriceUtils.tsx; dependencies: [1949, 3804, 1880, 482, 477, 5138, 5140, 5142, 1244, 3802, 2] */
function _fun45261(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#45261, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:6, offset: 0x01185e28, size: 304 bytes, params: 8, frame: 25
const env0_0 = require;
const closure = formatSingleCurrencyPrice;
const closure2 = formatDualPriceForBG;
const closure3 = formatPrice;
const closure4 = formatRate;
const closure5 = function(a0) {
var r0;
var value = a0;
if (value.length > 5) {
value = value.replace(RegExp('\\.00(?=[\\s)]|$)', 'g'), '');
r0 = value;
} else {
r0 = value;
}
return r0;
};
let Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const localeStore = importDefault(1949) /* metro dependency 1949: LocaleStore */;
const billingInfoStore = importDefault(3804) /* metro dependency 3804: BillingInfoStore */;
const env0_4 = (require(1880) /* metro dependency 1880: PremiumConstants */).SubscriptionIntervalTypes;
const env0_5 = (require(482) /* metro dependency 482: Constants */).CurrencyCodes;
Object = global.Object;
const env0_6 = Object.freeze(['en-CA', 'en-AU', 'en-NZ']);
(require(2) /* metro dependency 2 */).fileFinishedImporting('utils/PriceUtils.tsx');
exports.formatSingleCurrencyPrice = closure;
exports.formatDualPriceForBG = closure2;
exports.formatPrice = closure3;
exports.formatRate = closure4;
exports.formatPercent = function(a0, a1) {
var Intl = global.Intl;
return Intl.NumberFormat(a0, {'style': 'percent', 'minimumFractionDigits': 0}).format(a1);
};
exports.formatSubscriptionPlanRate = formatSubscriptionPlanRate;
exports.maybeShortenPrice = closure5;
exports.shortenAndFormatPrice = function(a0, a1, a2) {
return maybeShortenPrice(formatPrice(a0, a1, a2));
};
}
function formatSingleCurrencyPrice(a0, a1, a2) { // fn#45262, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:219, offset: 0x01185f58, size: 273 bytes, params: 4, frame: 20
var r0;
let value = a2;
const object2 = {};
copyDataProperties(object2, value ?? ({}), undefined);
const r4 = value?.localeOverride ?? LocaleStore.locale;
if (r4 === 'en-US' && env0_6.includes(LocaleStore.systemLocale)) {
object2.currencyDisplay = 'code';
}
if (value) {
value = require(477) /* metro dependency 477: PlatformUtils */;
value = value.isWindows();
r0 = value;
} else {
r0 = value;
}
r0 = r0 && LocaleStore.systemLocale === 'en-GB';
if (r0) {
object2.currencyDisplay = 'code';
}
if (object2.maximumFractionDigits === 0 && object2.minimumFractionDigits == null) {
object2.minimumFractionDigits = 0;
}
return (require(5138) /* metro dependency 5138: PriceUtils */).formatPrice(a0, a1, r4, object2);
}
function formatDualPriceForBG(a0, a1) { // fn#45263, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:633, offset: 0x01186069, size: 101 bytes, params: 3, frame: 18
const formatSingleCurrencyPriceBinding = formatSingleCurrencyPrice;
const EUR = CurrencyCodes.EUR;
const value2 = formatSingleCurrencyPriceBinding(a0, EUR, a1);
const value3 = 1.95583 * a0;
const BGN = CurrencyCodes.BGN;
return '' + value2 + ' (' + formatSingleCurrencyPriceBinding(value3, BGN, a1) + ')';
}
function formatPrice(a0, a1, a2) { // fn#45264, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:766, offset: 0x011860ce, size: 321 bytes, params: 4, frame: 20
var r7;
var r0;
var value5;
var platformName;
var storeFront;
let Date = global.Date;
let value = Date.now();
Date = global.Date;
const date = new Date('2026-08-05T22:00:00Z');
const getTime = date.getTime;
value = value >= Reflect.apply(getTime, date, []);
if (value) {
r0 = false;
} else {
value5 = undefined;
platformName = (require(477) /* metro dependency 477: PlatformUtils */).getPlatformName();
if (platformName === 'android') {
r7 = (require(5140) /* metro dependency 5140: IAPStoreAndroid */).default.getUserCountry();
} else if (platformName === 'ios') {
storeFront = (require(5142) /* metro dependency 5142: GenericIAPStore */).default.getStoreFront();
r7 = storeFront == null ? value5 : storeFront.country;
} else {
r7 = BillingInfoStore.ipCountryCode;
}
r0 = r7 === 'BG' && (a1 == null ? value5 : a1.toLowerCase()) === CurrencyCodes.EUR;
}
r0 = r0 ? formatDualPriceForBG(a0, a2) : formatSingleCurrencyPrice(a0, a1, a2);
return r0;
}
function formatRate(a0, a1, a2) { // fn#45265, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:1231, offset: 0x0118620f, size: 342 bytes, params: 4, frame: 19
var Error;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
var value;
const YEAR = SubscriptionIntervalTypes.YEAR;
if (a1 === YEAR) {
return intl.formatToPlainString(t['rS8FA+'], {price: a0});
}
let MONTH = SubscriptionIntervalTypes.MONTH;
if (a1 !== MONTH) {
if (a1 !== SubscriptionIntervalTypes.MONTH) {
Error = global.Error;
value = 'Unsupported interval type: ' + a1 + ', and interval count: ' + a2;
throw new Error();
}
if (a2 > 1) {
return intl.formatToPlainString(t['Qc+9ww'], {price: a0, intervalCount: a2});
}
Error = global.Error;
value = 'Unsupported interval type: ' + a1 + ', and interval count: ' + a2;
throw new Error();
}
if (a2 === 1) {
return intl.formatToPlainString(t.AbOLNu, {price: a0});
}
MONTH = SubscriptionIntervalTypes.MONTH;
if (a1 !== MONTH) {
Error = global.Error;
value = 'Unsupported interval type: ' + a1 + ', and interval count: ' + a2;
throw new Error();
}
if (a2 > 1) {
return intl.formatToPlainString(t['Qc+9ww'], {price: a0, intervalCount: a2});
}
Error = global.Error;
value = 'Unsupported interval type: ' + a1 + ', and interval count: ' + a2;
const value2 = Object.create(Error.prototype, {constructor: {value: Error}});
const error = new Error();
throw error instanceof Object ? error : value2;
}
function formatSubscriptionPlanRate(a0) { // fn#45268, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:5315:2057, offset: 0x011863ca, size: 110 bytes, params: 2, frame: 17
const r4 = 'interval_count' in a0 ? a0.interval_count : a0.intervalCount;
const price = (require(3802) /* metro dependency 3802: PremiumUtils */).getPrice(a0.id);
return formatRate(formatPrice(price.amount, price.currency), a0.interval, r4);
}