diff options
author | Florian Dold <florian@dold.me> | 2021-08-07 17:59:06 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-08-07 17:59:06 +0200 |
commit | c077c0d8c08fb83fb6f4ba860a9d600cc22131c3 (patch) | |
tree | 89cebd2c3962f843842a88019543416bbc96c793 | |
parent | 15eea5da9f260d9a4b72ad2314fef166737f146c (diff) |
consider deposit operations for pending operations
-rw-r--r-- | packages/taler-wallet-cli/src/integrationtests/test-deposit.ts | 2 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/pending.ts | 22 |
2 files changed, 24 insertions, 0 deletions
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-deposit.ts b/packages/taler-wallet-cli/src/integrationtests/test-deposit.ts index 585ca9996..156661e46 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-deposit.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-deposit.ts @@ -56,7 +56,9 @@ export async function runDepositTest(t: GlobalTestState) { ); console.log("transactions", JSON.stringify(transactions, undefined, 2)); t.assertDeepEqual(transactions.transactions[0].type, "withdrawal"); + t.assertTrue(!transactions.transactions[0].pending); t.assertDeepEqual(transactions.transactions[1].type, "deposit"); + t.assertTrue(!transactions.transactions[1].pending); // The raw amount is what ends up on the bank account, which includes // deposit and wire fees. t.assertDeepEqual(transactions.transactions[1].amountRaw, "TESTKUDOS:9.79"); diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index 3a6af186e..200e6ccbd 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -180,6 +180,27 @@ async function gatherProposalPending( }); } +async function gatherDepositPending( + tx: GetReadOnlyAccess<{ depositGroups: typeof WalletStoresV1.depositGroups }>, + now: Timestamp, + resp: PendingOperationsResponse, +): Promise<void> { + await tx.depositGroups.iter().forEach((dg) => { + if (dg.timestampFinished) { + return; + } + const timestampDue = dg.retryInfo?.nextRetry ?? getTimestampNow(); + resp.pendingOperations.push({ + type: PendingTaskType.Deposit, + givesLifeness: true, + timestampDue, + depositGroupId: dg.depositGroupId, + lastError: dg.lastError, + retryInfo: dg.retryInfo, + }); + }); +} + async function gatherTipPending( tx: GetReadOnlyAccess<{ tips: typeof WalletStoresV1.tips }>, now: Timestamp, @@ -313,6 +334,7 @@ export async function getPendingOperations( await gatherRefreshPending(tx, now, resp); await gatherWithdrawalPending(tx, now, resp); await gatherProposalPending(tx, now, resp); + await gatherDepositPending(tx, now, resp); await gatherTipPending(tx, now, resp); await gatherPurchasePending(tx, now, resp); await gatherRecoupPending(tx, now, resp); |