wallet-core: fix withdrawal abort

This commit is contained in:
Florian Dold 2023-05-26 14:12:11 +02:00
parent 96d9ea3840
commit dad7d48ed2
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

@ -290,37 +290,34 @@ export async function abortWithdrawalTransaction(
} }
let newStatus: WithdrawalGroupStatus | undefined = undefined; let newStatus: WithdrawalGroupStatus | undefined = undefined;
switch (wg.status) { switch (wg.status) {
case WithdrawalGroupStatus.SuspendedRegisteringBank:
case WithdrawalGroupStatus.SuspendedWaitConfirmBank:
case WithdrawalGroupStatus.PendingWaitConfirmBank: case WithdrawalGroupStatus.PendingWaitConfirmBank:
case WithdrawalGroupStatus.PendingRegisteringBank: case WithdrawalGroupStatus.PendingRegisteringBank:
case WithdrawalGroupStatus.AbortingBank:
newStatus = WithdrawalGroupStatus.AbortingBank; newStatus = WithdrawalGroupStatus.AbortingBank;
break; break;
case WithdrawalGroupStatus.SuspendedAml:
case WithdrawalGroupStatus.SuspendedKyc:
case WithdrawalGroupStatus.SuspendedQueryingStatus:
case WithdrawalGroupStatus.SuspendedReady:
case WithdrawalGroupStatus.PendingAml: case WithdrawalGroupStatus.PendingAml:
newStatus = WithdrawalGroupStatus.SuspendedAml;
break;
case WithdrawalGroupStatus.PendingKyc: case WithdrawalGroupStatus.PendingKyc:
newStatus = WithdrawalGroupStatus.SuspendedKyc;
break;
case WithdrawalGroupStatus.PendingQueryingStatus: case WithdrawalGroupStatus.PendingQueryingStatus:
newStatus = WithdrawalGroupStatus.SuspendedQueryingStatus; newStatus = WithdrawalGroupStatus.AbortedExchange;
break; break;
case WithdrawalGroupStatus.PendingReady: case WithdrawalGroupStatus.PendingReady:
newStatus = WithdrawalGroupStatus.SuspendedReady; newStatus = WithdrawalGroupStatus.SuspendedReady;
break; break;
case WithdrawalGroupStatus.SuspendedAbortingBank: case WithdrawalGroupStatus.SuspendedAbortingBank:
case WithdrawalGroupStatus.SuspendedQueryingStatus: case WithdrawalGroupStatus.AbortingBank:
case WithdrawalGroupStatus.SuspendedAml: // No transition needed, but not an error
case WithdrawalGroupStatus.SuspendedKyc:
case WithdrawalGroupStatus.SuspendedReady:
// No transition needed
break; break;
case WithdrawalGroupStatus.SuspendedRegisteringBank:
case WithdrawalGroupStatus.SuspendedWaitConfirmBank:
case WithdrawalGroupStatus.Finished: case WithdrawalGroupStatus.Finished:
case WithdrawalGroupStatus.FailedBankAborted: case WithdrawalGroupStatus.FailedBankAborted:
case WithdrawalGroupStatus.AbortedExchange: case WithdrawalGroupStatus.AbortedExchange:
case WithdrawalGroupStatus.FailedAbortingBank: case WithdrawalGroupStatus.FailedAbortingBank:
// Not allowed // Not allowed
throw Error("abort not allowed in current state");
break; break;
default: default:
assertUnreachable(wg.status); assertUnreachable(wg.status);
@ -1911,9 +1908,8 @@ async function registerReserveWithBank(
if (r.wgInfo.withdrawalType !== WithdrawalRecordType.BankIntegrated) { if (r.wgInfo.withdrawalType !== WithdrawalRecordType.BankIntegrated) {
throw Error("invariant failed"); throw Error("invariant failed");
} }
r.wgInfo.bankInfo.timestampReserveInfoPosted = AbsoluteTime.toPreciseTimestamp( r.wgInfo.bankInfo.timestampReserveInfoPosted =
AbsoluteTime.now(), AbsoluteTime.toPreciseTimestamp(AbsoluteTime.now());
);
const oldTxState = computeWithdrawalTransactionStatus(r); const oldTxState = computeWithdrawalTransactionStatus(r);
r.status = WithdrawalGroupStatus.PendingWaitConfirmBank; r.status = WithdrawalGroupStatus.PendingWaitConfirmBank;
const newTxState = computeWithdrawalTransactionStatus(r); const newTxState = computeWithdrawalTransactionStatus(r);