commit c1c0603b3a3684c541e22f55e83323a795f134eb
parent bcc864d5dc871cbe264ed7b4a000160873d018e2
Author: Florian Dold <florian@dold.me>
Date: Thu, 12 Sep 2024 11:43:49 +0200
wallet-core: support abort/fail in new deposit states
Diffstat:
2 files changed, 36 insertions(+), 17 deletions(-)
diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts
@@ -1749,8 +1749,12 @@ export enum DepositOperationStatus {
SuspendedAborting = 0x0113_0000,
Finished = 0x0500_0000,
- Failed = 0x0501_0000,
- Aborted = 0x0503_0000,
+
+ FailedDeposit = 0x0501_0000,
+
+ FailedTrack = 0x0501_0001,
+
+ AbortedDeposit = 0x0503_0000,
}
export interface DepositTrackingInfo {
diff --git a/packages/taler-wallet-core/src/deposits.ts b/packages/taler-wallet-core/src/deposits.ts
@@ -293,8 +293,9 @@ export class DepositTransactionContext implements TransactionContext {
const oldState = computeDepositTransactionStatus(dg);
let newOpStatus: DepositOperationStatus | undefined;
switch (dg.operationStatus) {
- case DepositOperationStatus.Aborted:
- case DepositOperationStatus.Failed:
+ case DepositOperationStatus.AbortedDeposit:
+ case DepositOperationStatus.FailedDeposit:
+ case DepositOperationStatus.FailedTrack:
case DepositOperationStatus.Finished:
case DepositOperationStatus.SuspendedAborting:
case DepositOperationStatus.SuspendedAggregateKyc:
@@ -354,8 +355,10 @@ export class DepositTransactionContext implements TransactionContext {
}
const oldState = computeDepositTransactionStatus(dg);
switch (dg.operationStatus) {
- case DepositOperationStatus.Finished:
- return undefined;
+ case DepositOperationStatus.PendingDepositKyc:
+ case DepositOperationStatus.SuspendedDepositKyc:
+ case DepositOperationStatus.PendingDepositKycAuth:
+ case DepositOperationStatus.SuspendedDepositKycAuth:
case DepositOperationStatus.PendingDeposit:
case DepositOperationStatus.SuspendedDeposit: {
dg.operationStatus = DepositOperationStatus.Aborting;
@@ -394,9 +397,10 @@ export class DepositTransactionContext implements TransactionContext {
const oldState = computeDepositTransactionStatus(dg);
let newOpStatus: DepositOperationStatus | undefined;
switch (dg.operationStatus) {
- case DepositOperationStatus.Aborted:
+ case DepositOperationStatus.AbortedDeposit:
case DepositOperationStatus.Aborting:
- case DepositOperationStatus.Failed:
+ case DepositOperationStatus.FailedDeposit:
+ case DepositOperationStatus.FailedTrack:
case DepositOperationStatus.Finished:
case DepositOperationStatus.PendingAggregateKyc:
case DepositOperationStatus.PendingDeposit:
@@ -455,9 +459,13 @@ export class DepositTransactionContext implements TransactionContext {
}
const oldState = computeDepositTransactionStatus(dg);
switch (dg.operationStatus) {
+ case DepositOperationStatus.PendingAggregateKyc:
+ case DepositOperationStatus.SuspendedAggregateKyc:
+ case DepositOperationStatus.PendingTrack:
+ case DepositOperationStatus.SuspendedTrack:
case DepositOperationStatus.SuspendedAborting:
case DepositOperationStatus.Aborting: {
- dg.operationStatus = DepositOperationStatus.Failed;
+ dg.operationStatus = DepositOperationStatus.FailedDeposit;
await tx.depositGroups.put(dg);
await this.updateTransactionMeta(tx);
return {
@@ -523,13 +531,19 @@ export function computeDepositTransactionStatus(
return {
major: TransactionMajorState.Aborting,
};
- case DepositOperationStatus.Aborted:
+ case DepositOperationStatus.AbortedDeposit:
return {
major: TransactionMajorState.Aborted,
};
- case DepositOperationStatus.Failed:
+ case DepositOperationStatus.FailedDeposit:
+ return {
+ major: TransactionMajorState.Failed,
+ minor: TransactionMinorState.Deposit,
+ };
+ case DepositOperationStatus.FailedTrack:
return {
major: TransactionMajorState.Failed,
+ minor: TransactionMinorState.Track,
};
case DepositOperationStatus.SuspendedAborting:
return {
@@ -588,9 +602,10 @@ export function computeDepositTransactionActions(
TransactionAction.Fail,
TransactionAction.Suspend,
];
- case DepositOperationStatus.Aborted:
+ case DepositOperationStatus.AbortedDeposit:
return [TransactionAction.Delete];
- case DepositOperationStatus.Failed:
+ case DepositOperationStatus.FailedDeposit:
+ case DepositOperationStatus.FailedTrack:
return [TransactionAction.Delete];
case DepositOperationStatus.SuspendedAborting:
return [TransactionAction.Resume, TransactionAction.Fail];
@@ -609,7 +624,7 @@ export function computeDepositTransactionActions(
case DepositOperationStatus.SuspendedAggregateKyc:
return [TransactionAction.Resume, TransactionAction.Fail];
case DepositOperationStatus.SuspendedTrack:
- return [TransactionAction.Resume, TransactionAction.Abort];
+ return [TransactionAction.Resume, TransactionAction.Fail];
case DepositOperationStatus.PendingDepositKyc:
return [TransactionAction.Resume, TransactionAction.Abort];
case DepositOperationStatus.SuspendedDepositKyc:
@@ -798,14 +813,14 @@ async function waitForRefreshOnDepositGroup(
// Maybe it got manually deleted? Means that we should
// just go into aborted.
logger.warn("no aborting refresh group found for deposit group");
- newOpState = DepositOperationStatus.Aborted;
+ newOpState = DepositOperationStatus.AbortedDeposit;
} else {
if (refreshGroup.operationStatus === RefreshOperationStatus.Finished) {
- newOpState = DepositOperationStatus.Aborted;
+ newOpState = DepositOperationStatus.AbortedDeposit;
} else if (
refreshGroup.operationStatus === RefreshOperationStatus.Failed
) {
- newOpState = DepositOperationStatus.Aborted;
+ newOpState = DepositOperationStatus.AbortedDeposit;
}
}
if (newOpState) {