wallet-core: handle missing purchase status cases

This commit is contained in:
Florian Dold 2022-10-12 20:06:45 +02:00
parent 610df1c9cf
commit 8bfa77200e
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
2 changed files with 25 additions and 19 deletions

View File

@ -103,6 +103,8 @@ export const WALLET_DB_MINOR_VERSION = 2;
export enum OperationStatusRange { export enum OperationStatusRange {
ACTIVE_START = 10, ACTIVE_START = 10,
ACTIVE_END = 29, ACTIVE_END = 29,
USER_ATTENTION_START = 30,
USER_ATTENTION_END = 49,
DORMANT_START = 50, DORMANT_START = 50,
DORMANT_END = 69, DORMANT_END = 69,
} }
@ -114,36 +116,36 @@ export enum WithdrawalGroupStatus {
/** /**
* Reserve must be registered with the bank. * Reserve must be registered with the bank.
*/ */
RegisteringBank = OperationStatusRange.ACTIVE_START, RegisteringBank = 10,
/** /**
* We've registered reserve's information with the bank * We've registered reserve's information with the bank
* and are now waiting for the user to confirm the withdraw * and are now waiting for the user to confirm the withdraw
* with the bank (typically 2nd factor auth). * with the bank (typically 2nd factor auth).
*/ */
WaitConfirmBank = OperationStatusRange.ACTIVE_START + 1, WaitConfirmBank = 11,
/** /**
* Querying reserve status with the exchange. * Querying reserve status with the exchange.
*/ */
QueryingStatus = OperationStatusRange.ACTIVE_START + 2, QueryingStatus = 12,
/** /**
* Ready for withdrawal. * Ready for withdrawal.
*/ */
Ready = OperationStatusRange.ACTIVE_START + 3, Ready = 13,
/** /**
* The corresponding withdraw record has been created. * The corresponding withdraw record has been created.
* No further processing is done, unless explicitly requested * No further processing is done, unless explicitly requested
* by the user. * by the user.
*/ */
Finished = OperationStatusRange.DORMANT_START, Finished = 50,
/** /**
* The bank aborted the withdrawal. * The bank aborted the withdrawal.
*/ */
BankAborted = OperationStatusRange.DORMANT_START + 1, BankAborted = 51,
} }
/** /**
@ -1036,59 +1038,59 @@ export enum PurchaseStatus {
/** /**
* Not downloaded yet. * Not downloaded yet.
*/ */
DownloadingProposal = OperationStatusRange.ACTIVE_START, DownloadingProposal = 10,
/** /**
* The user has accepted the proposal. * The user has accepted the proposal.
*/ */
Paying = OperationStatusRange.ACTIVE_START + 1, Paying = 11,
AbortingWithRefund = OperationStatusRange.ACTIVE_START + 2, AbortingWithRefund = 12,
/** /**
* Paying a second time, likely with different session ID * Paying a second time, likely with different session ID
*/ */
PayingReplay = OperationStatusRange.ACTIVE_START + 3, PayingReplay = 13,
/** /**
* Query for refunds (until query succeeds). * Query for refunds (until query succeeds).
*/ */
QueryingRefund = OperationStatusRange.ACTIVE_START + 4, QueryingRefund = 14,
/** /**
* Query for refund (until auto-refund deadline is reached). * Query for refund (until auto-refund deadline is reached).
*/ */
QueryingAutoRefund = OperationStatusRange.ACTIVE_START + 5, QueryingAutoRefund = 15,
/** /**
* Proposal downloaded, but the user needs to accept/reject it. * Proposal downloaded, but the user needs to accept/reject it.
*/ */
Proposed = OperationStatusRange.DORMANT_START, Proposed = 30,
/** /**
* The user has rejected the proposal. * The user has rejected the proposal.
*/ */
ProposalRefused = OperationStatusRange.DORMANT_START + 1, ProposalRefused = 50,
/** /**
* Downloading or processing the proposal has failed permanently. * Downloading or processing the proposal has failed permanently.
*/ */
ProposalDownloadFailed = OperationStatusRange.DORMANT_START + 2, ProposalDownloadFailed = 51,
/** /**
* Downloaded proposal was detected as a re-purchase. * Downloaded proposal was detected as a re-purchase.
*/ */
RepurchaseDetected = OperationStatusRange.DORMANT_START + 3, RepurchaseDetected = 52,
/** /**
* The payment has been aborted. * The payment has been aborted.
*/ */
PaymentAbortFinished = OperationStatusRange.DORMANT_START + 4, PaymentAbortFinished = 53,
/** /**
* Payment was successful. * Payment was successful.
*/ */
Paid = OperationStatusRange.DORMANT_START + 5, Paid = 54,
} }
/** /**

View File

@ -1797,12 +1797,16 @@ export async function processPurchase(
case PurchaseStatus.ProposalDownloadFailed: case PurchaseStatus.ProposalDownloadFailed:
case PurchaseStatus.Paid: case PurchaseStatus.Paid:
case PurchaseStatus.RepurchaseDetected: case PurchaseStatus.RepurchaseDetected:
case PurchaseStatus.Proposed:
case PurchaseStatus.ProposalRefused:
case PurchaseStatus.PaymentAbortFinished:
return { return {
type: OperationAttemptResultType.Finished, type: OperationAttemptResultType.Finished,
result: undefined, result: undefined,
}; };
default: default:
throw Error(`unexpected purchase status (${purchase.purchaseStatus})`); assertUnreachable(purchase.purchaseStatus);
// throw Error(`unexpected purchase status (${purchase.purchaseStatus})`);
} }
} }