@accounter/client
Version:
Accounter client application
76 lines (71 loc) • 1.54 kB
text/typescript
import { Currency } from '../gql/graphql.js';
import { formatStringifyAmount } from './index.js';
export function getCurrencyFormatter(
currency: Currency,
options?: Omit<Intl.NumberFormatOptions, 'currency'>,
): Intl.NumberFormat {
return new Intl.NumberFormat('en-US', {
style: 'currency',
...options,
currency,
});
}
export function currencyCodeToSymbol(currency_code: Currency): string {
let currencySymbol = '₪';
switch (currency_code) {
case 'USD': {
currencySymbol = '$';
break;
}
case 'EUR': {
currencySymbol = '€';
break;
}
case 'GBP': {
currencySymbol = '£';
break;
}
case 'CAD': {
currencySymbol = 'C$';
break;
}
case 'JPY': {
currencySymbol = '¥';
break;
}
case 'AUD': {
currencySymbol = 'A$';
break;
}
case 'SEK': {
currencySymbol = 'kr';
break;
}
case 'GRT': {
currencySymbol = 'GRT';
break;
}
case 'USDC': {
currencySymbol = 'USDC';
break;
}
case 'ETH': {
currencySymbol = 'ETH';
break;
}
}
return currencySymbol;
}
export const FIAT_CURRENCIES: Currency[] = [
Currency.Ils,
Currency.Eur,
Currency.Usd,
Currency.Gbp,
Currency.Cad,
Currency.Jpy,
Currency.Aud,
Currency.Sek,
] as const;
export function formatAmountWithCurrency(amount: number, currency: Currency, digits = 2): string {
return `${currencyCodeToSymbol(currency)} ${formatStringifyAmount(amount, digits)}`;
}