diff options
| author | Florian Dold <florian@dold.me> | 2023-01-18 19:30:48 +0100 | 
|---|---|---|
| committer | Florian Dold <florian@dold.me> | 2023-01-18 19:33:01 +0100 | 
| commit | 598de5b0d576987ea317b22fd6d33cbe4a1a19ac (patch) | |
| tree | fe5923b5a8f77a198927e41fb2fe2201294c5b43 /packages/taler-wallet-core/src/operations | |
| parent | 5e129abe9e8d71c2fa67bc542684f49b76551379 (diff) | |
wallet-core: Add 'deposited' field to deposit transaction
This field indicates whether the POST requests to deposit coins went
through with the exchange.
We also don't consider a deposit transaction as having lifeness when it
is already deposited and we're just querying for informational deposit
tracking information.
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
| -rw-r--r-- | packages/taler-wallet-core/src/operations/deposits.ts | 3 | ||||
| -rw-r--r-- | packages/taler-wallet-core/src/operations/pending.ts | 11 | ||||
| -rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 7 | 
3 files changed, 19 insertions, 2 deletions
diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts index 71caae5b3..f3ec81686 100644 --- a/packages/taler-wallet-core/src/operations/deposits.ts +++ b/packages/taler-wallet-core/src/operations/deposits.ts @@ -21,7 +21,6 @@ import {    AbsoluteTime,    AmountJson,    Amounts, -  bytesToString,    CancellationToken,    canonicalJson,    codecForDepositSuccess, @@ -457,6 +456,8 @@ export async function prepareDepositGroup(      effectiveDepositAmount: Amounts.stringify(effectiveDepositAmount),    };  } + +  export async function createDepositGroup(    ws: InternalWalletState,    req: CreateDepositGroupRequest, diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index d9d62ec65..a73af528c 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -200,13 +200,22 @@ async function gatherDepositPending(      if (dg.timestampFinished) {        return;      } +    let deposited = true; +    for (const d of dg.depositedPerCoin) { +      if (!d) { +        deposited = false; +      } +    }      const opId = RetryTags.forDeposit(dg);      const retryRecord = await tx.operationRetries.get(opId);      const timestampDue = retryRecord?.retryInfo.nextRetry ?? AbsoluteTime.now();      resp.pendingOperations.push({        type: PendingTaskType.Deposit,        ...getPendingCommon(ws, opId, timestampDue), -      givesLifeness: true, +      // Fully deposited operations don't give lifeness, +      // because there is no reason to wait on the +      // deposit tracking status. +      givesLifeness: !deposited,        depositGroupId: dg.depositGroupId,        lastError: retryRecord?.lastError,        retryInfo: retryRecord?.retryInfo, diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 58def0f34..7fa2c075c 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -557,6 +557,12 @@ function buildTransactionForDeposit(    dg: DepositGroupRecord,    ort?: OperationRetryRecord,  ): Transaction { +  let deposited = true; +  for (const d of dg.depositedPerCoin) { +    if (!d) { +      deposited = false; +    } +  }    return {      type: TransactionType.Deposit,      amountRaw: Amounts.stringify(dg.effectiveDepositAmount), @@ -581,6 +587,7 @@ function buildTransactionForDeposit(          )) /        dg.transactionPerCoin.length,      depositGroupId: dg.depositGroupId, +    deposited,      ...(ort?.lastError ? { error: ort.lastError } : {}),    };  }  | 
