diff options
author | Florian Dold <florian@dold.me> | 2024-05-27 21:54:31 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-05-27 21:54:44 +0200 |
commit | db45b25fe871de42a68a4303b6eb31aa6da64f9b (patch) | |
tree | 8b349ec302726f119ae371142bb2b56b17e0a755 /packages | |
parent | de96059ad067cc4a28518db47d27889107b22232 (diff) | |
download | wallet-core-db45b25fe871de42a68a4303b6eb31aa6da64f9b.tar.xz |
wallet-core: also check EC of melt response before aborting
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-wallet-core/src/refresh.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/taler-wallet-core/src/refresh.ts b/packages/taler-wallet-core/src/refresh.ts index 7800967e6..38b8b097c 100644 --- a/packages/taler-wallet-core/src/refresh.ts +++ b/packages/taler-wallet-core/src/refresh.ts @@ -68,6 +68,7 @@ import { WalletNotification, } from "@gnu-taler/taler-util"; import { + HttpResponse, readSuccessResponseJsonOrThrow, readTalerErrorResponse, throwUnexpectedRequestError, @@ -693,7 +694,7 @@ async function refreshMelt( switch (resp.status) { case HttpStatusCode.NotFound: { const errDetail = await readTalerErrorResponse(resp); - await handleRefreshMeltNotFound(ctx, coinIndex, errDetail); + await handleRefreshMeltNotFound(ctx, coinIndex, resp, errDetail); return; } case HttpStatusCode.Gone: { @@ -898,9 +899,17 @@ async function handleRefreshMeltConflict( async function handleRefreshMeltNotFound( ctx: RefreshTransactionContext, coinIndex: number, + resp: HttpResponse, errDetails: TalerErrorDetail, ): Promise<void> { - // FIXME: Validate the exchange's error response + // Make sure that we only act on a 404 that indicates a final problem + // with the coin. + switch (errDetails.code) { + case TalerErrorCode.EXCHANGE_GENERIC_COIN_UNKNOWN: + break; + default: + throwUnexpectedRequestError(resp, errDetails); + } await ctx.wex.db.runReadWriteTx( { storeNames: [ |