From a3c7da975b6375f8c57154875642fb29a67e8731 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 21 Feb 2023 20:31:23 +0100 Subject: wallet-core: fix peer-pull-credit long-polling and peer-pull-debit pending operation status --- packages/taler-wallet-core/src/operations/pay-peer.ts | 6 ++++-- packages/taler-wallet-core/src/operations/pending.ts | 9 +++++++-- packages/taler-wallet-core/src/wallet.ts | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/taler-wallet-core/src/operations/pay-peer.ts b/packages/taler-wallet-core/src/operations/pay-peer.ts index bfb0dd589..8bde47df4 100644 --- a/packages/taler-wallet-core/src/operations/pay-peer.ts +++ b/packages/taler-wallet-core/src/operations/pay-peer.ts @@ -1155,7 +1155,7 @@ export async function acceptIncomingPeerPullPayment( * Look up information about an incoming peer pull payment. * Store the results in the wallet DB. */ -export async function preparePeerPullCredit( +export async function preparePeerPullDebit( ws: InternalWalletState, req: PreparePeerPullDebitRequest, ): Promise { @@ -1279,7 +1279,7 @@ export async function queryPurseForPeerPullCredit( cancellationToken: CancellationToken, ): Promise { const purseDepositUrl = new URL( - `purses/${pullIni.pursePub}/merge`, + `purses/${pullIni.pursePub}/deposit`, pullIni.exchangeBaseUrl, ); purseDepositUrl.searchParams.set("timeout_ms", "30000"); @@ -1380,6 +1380,8 @@ export async function processPeerPullCredit( }; } + logger.trace(`processing ${retryTag}, status=${pullIni.status}`); + switch (pullIni.status) { case PeerPullPaymentInitiationStatus.PurseDeposited: { // We implement this case so that the "retry" action on a peer-pull-credit transaction diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index 458448b31..5e14721f8 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -390,8 +390,13 @@ async function gatherPeerPullDebitPending( resp: PendingOperationsResponse, ): Promise { await tx.peerPullPaymentIncoming.iter().forEachAsync(async (pi) => { - if (pi.status === PeerPullPaymentIncomingStatus.Paid) { - return; + switch (pi.status) { + case PeerPullPaymentIncomingStatus.Paid: + return; + case PeerPullPaymentIncomingStatus.Proposed: + return; + case PeerPullPaymentIncomingStatus.Accepted: + break; } const opId = TaskIdentifiers.forPeerPullPaymentDebit(pi); const retryRecord = await tx.operationRetries.get(opId); diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index 47724efdc..8614fd7e3 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -199,7 +199,7 @@ import { import { acceptIncomingPeerPullPayment, confirmPeerPushPayment, - preparePeerPullCredit, + preparePeerPullDebit, preparePeerPushCredit, initiatePeerPullPayment, initiatePeerPushPayment, @@ -1462,7 +1462,7 @@ async function dispatchRequestInternal( } case WalletApiOperation.PreparePeerPullDebit: { const req = codecForCheckPeerPullPaymentRequest().decode(payload); - return await preparePeerPullCredit(ws, req); + return await preparePeerPullDebit(ws, req); } case WalletApiOperation.ConfirmPeerPullDebit: { const req = codecForAcceptPeerPullPaymentRequest().decode(payload); -- cgit v1.2.3