import type { ApiTypeCurrencyAmount } from '../../api/types';
import type { LangFn } from './types';
import { STARS_ICON_PLACEHOLDER, TON_CURRENCY_CODE } from '../../config';
import { convertTonFromNanos } from '../../util/formatCurrency';
import buildClassName from '../buildClassName';
import Icon from '../../components/common/icons/Icon';
import StarIcon from '../../components/common/icons/StarIcon';
export function formatStarsAsText(lang: LangFn, amount: number) {
return lang('StarsAmountText', { amount }, { pluralValue: amount });
}
export function formatTonAsText(lang: LangFn, amount: number, shouldConvertFromNanos?: boolean) {
const formattedAmount = shouldConvertFromNanos ? convertTonFromNanos(Number(amount)) : amount;
return lang('TonAmountText', { amount: lang.preciseNumber(formattedAmount) }, { pluralValue: formattedAmount });
}
export function formatTonAsIcon(
lang: LangFn,
amount: number | string,
options?: {
className?: string; containerClassName?: string; shouldConvertFromNanos?: boolean;
}) {
const { className, containerClassName, shouldConvertFromNanos } = options || {};
const formattedAmount = shouldConvertFromNanos ? convertTonFromNanos(Number(amount)) : amount;
const icon = ;
if (containerClassName) {
return (
{lang('TonAmount', { amount: formattedAmount }, {
withNodes: true,
specialReplacement: {
'💎': icon,
},
})}
);
}
return lang('TonAmount', { amount: formattedAmount }, {
withNodes: true,
specialReplacement: {
'💎': icon,
},
});
}
export function formatStarsAsIcon(lang: LangFn, amount: number | string, options?: {
asFont?: boolean; className?: string; containerClassName?: string; }) {
const { asFont, className, containerClassName } = options || {};
const icon = asFont
?
: ;
if (containerClassName) {
return (
{lang('StarsAmount', { amount }, {
withNodes: true,
specialReplacement: {
[STARS_ICON_PLACEHOLDER]: icon,
},
})}
);
}
return lang('StarsAmount', { amount }, {
withNodes: true,
specialReplacement: {
[STARS_ICON_PLACEHOLDER]: icon,
},
});
}
export function formatCurrencyAmountAsText(lang: LangFn, currencyAmount: ApiTypeCurrencyAmount) {
if (currencyAmount.currency === TON_CURRENCY_CODE) {
return formatTonAsText(lang, currencyAmount.amount, true);
}
const amount = currencyAmount.amount + currencyAmount.nanos / 1e9;
return formatStarsAsText(lang, amount);
}