diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet/History.tsx')
-rw-r--r-- | packages/taler-wallet-webextension/src/wallet/History.tsx | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/History.tsx b/packages/taler-wallet-webextension/src/wallet/History.tsx index f2a239f83..e0e2d3af9 100644 --- a/packages/taler-wallet-webextension/src/wallet/History.tsx +++ b/packages/taler-wallet-webextension/src/wallet/History.tsx @@ -112,8 +112,25 @@ export function HistoryView({ }): VNode { const { i18n } = useTranslationContext(); const { pushAlertOnError } = useAlertContext(); + + const transactionByCurrency = transactions.reduce((prev, cur) => { + const c = Amounts.parseOrThrow(cur.amountEffective).currency; + if (!prev[c]) { + prev[c] = []; + } + prev[c].push(cur); + return prev; + }, {} as Record<string, Transaction[]>); + const currencies = balances - .filter((b) => Amounts.isNonZero(b.available)) + .filter((b) => { + const av = Amounts.parseOrThrow(b.available); + return ( + Amounts.isNonZero(av) || + (transactionByCurrency[av.currency] && + transactionByCurrency[av.currency].length > 0) + ); + }) .map((b) => b.available.split(":")[0]); const defaultCurrencyIndex = currencies.findIndex( @@ -129,19 +146,20 @@ export function HistoryView({ ? Amounts.jsonifyAmount(balances[currencyIndex].available) : undefined; - const byDate = transactions - .filter((t) => t.amountRaw.split(":")[0] === selectedCurrency) - .reduce((rv, x) => { - const theDate = - x.timestamp.t_s === "never" - ? 0 - : normalizeToDay(x.timestamp.t_s * 1000); - if (theDate) { - (rv[theDate] = rv[theDate] || []).push(x); - } + const ts = + selectedCurrency === undefined + ? [] + : transactionByCurrency[selectedCurrency] ?? []; + + const byDate = ts.reduce((rv, x) => { + const theDate = + x.timestamp.t_s === "never" ? 0 : normalizeToDay(x.timestamp.t_s * 1000); + if (theDate) { + (rv[theDate] = rv[theDate] || []).push(x); + } - return rv; - }, {} as { [x: string]: Transaction[] }); + return rv; + }, {} as { [x: string]: Transaction[] }); const datesWithTransaction = Object.keys(byDate); if (balances.length === 0 || !selectedCurrency) { |