From 7b83d8f8dd220e04a26b33b03afc5f989cc5d1fb Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 29 Jan 2024 21:58:03 +0100 Subject: -fix type error due to new recoup tx type --- .../src/components/HistoryItem.tsx | 6 +- .../src/wallet/Transaction.tsx | 113 +++++++++++++-------- 2 files changed, 74 insertions(+), 45 deletions(-) (limited to 'packages/taler-wallet-webextension') diff --git a/packages/taler-wallet-webextension/src/components/HistoryItem.tsx b/packages/taler-wallet-webextension/src/components/HistoryItem.tsx index 72881c746..f65535a3d 100644 --- a/packages/taler-wallet-webextension/src/components/HistoryItem.tsx +++ b/packages/taler-wallet-webextension/src/components/HistoryItem.tsx @@ -253,6 +253,8 @@ export function HistoryItem(props: { tx: Transaction }): VNode { } /> ); + case TransactionType.Recoup: + throw Error("recoup transaction not implemented"); default: { assertUnreachable(tx); } @@ -267,12 +269,12 @@ function Layout(props: LayoutProps): VNode { style={{ backgroundColor: props.currentState === TransactionMajorState.Pending || - props.currentState === TransactionMajorState.Dialog + props.currentState === TransactionMajorState.Dialog ? "lightcyan" : props.currentState === TransactionMajorState.Failed ? "#ff000040" : props.currentState === TransactionMajorState.Aborted || - props.currentState === TransactionMajorState.Aborting + props.currentState === TransactionMajorState.Aborting ? "#00000010" : "inherit", alignItems: "center", diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx index d8ed38aa1..f6c98952e 100644 --- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx +++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx @@ -37,7 +37,7 @@ import { TransactionType, TransactionWithdrawal, TranslatedString, - WithdrawalType + WithdrawalType, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { useTranslationContext } from "@gnu-taler/web-util/browser"; @@ -62,7 +62,7 @@ import { SmallLightText, SubTitle, SvgIcon, - WarningBox + WarningBox, } from "../components/styled/index.js"; import { Time } from "../components/Time.js"; import { alertFromError, useAlertContext } from "../context/alert.js"; @@ -229,8 +229,8 @@ function TransactionTemplate({
{transaction?.error && - // FIXME: wallet core should stop sending this error on KYC - transaction.error.code !== + // FIXME: wallet core should stop sending this error on KYC + transaction.error.code !== TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED ? ( Follow this link to the{` `} - KYC verifier + + KYC verifier + ) : ( @@ -435,8 +441,10 @@ export function TransactionView({ transaction.type === TransactionType.Withdrawal || transaction.type === TransactionType.InternalWithdrawal ) { - const conversion = transaction.withdrawalDetails.type === WithdrawalType.ManualTransfer ? - transaction.withdrawalDetails.exchangeCreditAccountDetails ?? [] : [] + const conversion = + transaction.withdrawalDetails.type === WithdrawalType.ManualTransfer + ? transaction.withdrawalDetails.exchangeCreditAccountDetails ?? [] + : []; return ( {transaction.txState.major !== - TransactionMajorState.Pending ? undefined : - transaction.txState.minor === TransactionMinorState.KycRequired || - transaction.txState.minor === TransactionMinorState.AmlRequired ? undefined : - transaction - .withdrawalDetails.type === WithdrawalType.ManualTransfer ? ( - //manual withdrawal - - ) : ( - //integrated bank withdrawal - - )} + TransactionMajorState.Pending ? undefined : transaction.txState + .minor === TransactionMinorState.KycRequired || + transaction.txState.minor === + TransactionMinorState.AmlRequired ? undefined : transaction + .withdrawalDetails.type === WithdrawalType.ManualTransfer ? ( + //manual withdrawal + + ) : ( + //integrated bank withdrawal + + )} ); } + + if (transaction.type === TransactionType.Recoup) { + throw Error("recoup transaction not implemented"); + } assertUnreachable(transaction); } @@ -1411,7 +1425,13 @@ export function TransferPickupDetails({ ); } -export function WithdrawDetails({ conversion, amount }: { conversion?: AmountJson, amount: AmountWithFee }): VNode { +export function WithdrawDetails({ + conversion, + amount, +}: { + conversion?: AmountJson; + amount: AmountWithFee; +}): VNode { const { i18n } = useTranslationContext(); const maxFrac = [amount.fee, amount.fee] @@ -1422,7 +1442,7 @@ export function WithdrawDetails({ conversion, amount }: { conversion?: AmountJso return ( - {conversion ? + {conversion ? ( @@ -1432,7 +1452,8 @@ export function WithdrawDetails({ conversion, amount }: { conversion?: AmountJso - {conversion.fraction === amount.value.fraction && conversion.value === amount.value.value ? undefined : + {conversion.fraction === amount.value.fraction && + conversion.value === amount.value.value ? undefined : ( Converted @@ -1441,9 +1462,10 @@ export function WithdrawDetails({ conversion, amount }: { conversion?: AmountJso - } + )} - : + ) : ( + Transfer @@ -1451,7 +1473,7 @@ export function WithdrawDetails({ conversion, amount }: { conversion?: AmountJso - } + )} {Amounts.isNonZero(amount.fee) && ( @@ -1683,19 +1705,22 @@ function calculateAmountByWireTransfer( const allTracking = Object.values(state ?? {}); //group tracking by wtid, sum amounts - const trackByWtid = allTracking.reduce((prev, cur) => { - const fee = Amounts.parseOrThrow(cur.wireFee); - const raw = Amounts.parseOrThrow(cur.amountRaw); - const total = !prev[cur.wireTransferId] - ? raw - : Amounts.add(prev[cur.wireTransferId].total, raw).amount; - - prev[cur.wireTransferId] = { - total, - fee, - }; - return prev; - }, {} as Record); + const trackByWtid = allTracking.reduce( + (prev, cur) => { + const fee = Amounts.parseOrThrow(cur.wireFee); + const raw = Amounts.parseOrThrow(cur.amountRaw); + const total = !prev[cur.wireTransferId] + ? raw + : Amounts.add(prev[cur.wireTransferId].total, raw).amount; + + prev[cur.wireTransferId] = { + total, + fee, + }; + return prev; + }, + {} as Record, + ); //remove wire fee from total amount return Object.entries(trackByWtid).map(([id, info]) => ({ @@ -2022,12 +2047,14 @@ function ShowWithdrawalDetailForBankIntegrated({ {showDetails && ( )} {!transaction.withdrawalDetails.confirmed && - transaction.withdrawalDetails.bankConfirmationUrl ? ( + transaction.withdrawalDetails.bankConfirmationUrl ? (
-- cgit v1.2.3