taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 5af24c1e884140d986d1d32b60703b6c3ace524c
parent a844136489611525726c117cb28086b854bee5c0
Author: Florian Dold <florian@dold.me>
Date:   Mon, 26 Jun 2023 19:38:53 +0200

wallet-core: fix some deposit transitions

Diffstat:
Mpackages/taler-wallet-core/src/operations/deposits.ts | 68+++++++++++++++++++++++++++++++++++++++++++-------------------------
1 file changed, 43 insertions(+), 25 deletions(-)

diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts @@ -224,21 +224,30 @@ export async function suspendDepositGroup( return undefined; } const oldState = computeDepositTransactionStatus(dg); + let newOpStatus: DepositOperationStatus | undefined; switch (dg.operationStatus) { - case DepositOperationStatus.Finished: - return undefined; - case DepositOperationStatus.PendingDeposit: { - dg.operationStatus = DepositOperationStatus.SuspendedDeposit; - await tx.depositGroups.put(dg); - return { - oldTxState: oldState, - newTxState: computeDepositTransactionStatus(dg), - }; - } - case DepositOperationStatus.SuspendedDeposit: - return undefined; + case DepositOperationStatus.PendingDeposit: + newOpStatus = DepositOperationStatus.SuspendedDeposit; + break; + case DepositOperationStatus.PendingKyc: + newOpStatus = DepositOperationStatus.SuspendedKyc; + break; + case DepositOperationStatus.PendingTrack: + newOpStatus = DepositOperationStatus.SuspendedTrack; + break; + case DepositOperationStatus.Aborting: + newOpStatus = DepositOperationStatus.SuspendedAborting; + break; } - return undefined; + if (!newOpStatus) { + return undefined; + } + dg.operationStatus = newOpStatus; + await tx.depositGroups.put(dg); + return { + oldTxState: oldState, + newTxState: computeDepositTransactionStatus(dg), + }; }); stopLongpolling(ws, retryTag); notifyTransition(ws, transactionId, transitionInfo); @@ -263,21 +272,30 @@ export async function resumeDepositGroup( return; } const oldState = computeDepositTransactionStatus(dg); + let newOpStatus: DepositOperationStatus | undefined; switch (dg.operationStatus) { - case DepositOperationStatus.Finished: - return; - case DepositOperationStatus.PendingDeposit: { - return; - } case DepositOperationStatus.SuspendedDeposit: - dg.operationStatus = DepositOperationStatus.PendingDeposit; - await tx.depositGroups.put(dg); - return { - oldTxState: oldState, - newTxState: computeDepositTransactionStatus(dg), - }; + newOpStatus = DepositOperationStatus.PendingDeposit; + break; + case DepositOperationStatus.SuspendedAborting: + newOpStatus = DepositOperationStatus.Aborting; + break; + case DepositOperationStatus.SuspendedKyc: + newOpStatus = DepositOperationStatus.PendingKyc; + break; + case DepositOperationStatus.SuspendedTrack: + newOpStatus = DepositOperationStatus.PendingTrack; + break; } - return undefined; + if (!newOpStatus) { + return undefined; + } + dg.operationStatus = newOpStatus; + await tx.depositGroups.put(dg); + return { + oldTxState: oldState, + newTxState: computeDepositTransactionStatus(dg), + }; }); ws.workAvailable.trigger(); notifyTransition(ws, transactionId, transitionInfo);