From 5af24c1e884140d986d1d32b60703b6c3ace524c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 26 Jun 2023 19:38:53 +0200 Subject: wallet-core: fix some deposit transitions --- .../taler-wallet-core/src/operations/deposits.ts | 68 ++++++++++++++-------- 1 file changed, 43 insertions(+), 25 deletions(-) (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts index b771fc009..601df4151 100644 --- 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); -- cgit v1.2.3