diff options
author | Florian Dold <florian@dold.me> | 2023-02-21 20:31:23 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-02-21 20:31:23 +0100 |
commit | a3c7da975b6375f8c57154875642fb29a67e8731 (patch) | |
tree | 0d73dd9ad07f4c4c16309e25510fd809a280a61d | |
parent | 267714074995aab337b474dce2cb0236c2861a9c (diff) |
wallet-core: fix peer-pull-credit long-polling and peer-pull-debit pending operation status
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay-peer.ts | 6 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/pending.ts | 9 | ||||
-rw-r--r-- | 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<PreparePeerPullDebitResponse> { @@ -1279,7 +1279,7 @@ export async function queryPurseForPeerPullCredit( cancellationToken: CancellationToken, ): Promise<LongpollResult> { 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<void> { 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<Op extends WalletApiOperation>( } 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); |