From 5e129abe9e8d71c2fa67bc542684f49b76551379 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 18 Jan 2023 13:12:38 -0300 Subject: fix: withdrawal error when creating an invoice --- .../src/operations/transactions.ts | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'packages') diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 3db548fa3..58def0f34 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -29,6 +29,7 @@ import { PaymentStatus, PeerContractTerms, RefundInfoShort, + TalerErrorCode, TalerProtocolTimestamp, Transaction, TransactionByIdRequest, @@ -402,8 +403,23 @@ function buildTransactionForPullPaymentCredit( wsr: WithdrawalGroupRecord, ort?: OperationRetryRecord, ): Transaction { - if (wsr.wgInfo.withdrawalType !== WithdrawalRecordType.PeerPullCredit) - throw Error(""); + if (wsr.wgInfo.withdrawalType !== WithdrawalRecordType.PeerPullCredit) { + throw Error(`Unexpected withdrawalType: ${wsr.wgInfo.withdrawalType}`); + } + /** + * FIXME: this should be handled in the withdrawal process. + * PeerPull withdrawal fails until reserve have funds but it is not + * an error from the user perspective. + */ + const silentWithdrawalErrorForInvoice = + ort?.lastError && + ort.lastError.code === TalerErrorCode.WALLET_WITHDRAWAL_GROUP_INCOMPLETE && + Object.values(ort.lastError.errorsPerCoin ?? {}).every((e) => { + return ( + e.code === TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR && + e.httpStatusCode === 409 + ); + }); return { type: TransactionType.PeerPullCredit, amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue), @@ -427,7 +443,9 @@ function buildTransactionForPullPaymentCredit( wsr.withdrawalGroupId, ), frozen: false, - ...(ort?.lastError ? { error: ort.lastError } : {}), + ...(ort?.lastError + ? { error: silentWithdrawalErrorForInvoice ? undefined : ort.lastError } + : {}), }; } -- cgit v1.2.3