summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/wxApi.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-01-09 08:38:48 -0300
committerSebastian <sebasjm@gmail.com>2023-01-09 08:38:48 -0300
commit9b04d8bf3581d162cbd631892ca115df811c46f8 (patch)
tree42b7da7cc3a3f8186823a7571aa221dc8e9aa7a5 /packages/taler-wallet-webextension/src/wxApi.ts
parent14f3d1e06dda003d457f2b3531e197011a284244 (diff)
downloadwallet-core-9b04d8bf3581d162cbd631892ca115df811c46f8.tar.gz
wallet-core-9b04d8bf3581d162cbd631892ca115df811c46f8.tar.bz2
wallet-core-9b04d8bf3581d162cbd631892ca115df811c46f8.zip
fix #7152
Diffstat (limited to 'packages/taler-wallet-webextension/src/wxApi.ts')
-rw-r--r--packages/taler-wallet-webextension/src/wxApi.ts44
1 files changed, 37 insertions, 7 deletions
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts b/packages/taler-wallet-webextension/src/wxApi.ts
index 5c2a577b3..a41372e37 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -25,6 +25,8 @@ import {
CoreApiResponse,
Logger,
NotificationType,
+ TalerErrorCode,
+ TalerErrorDetail,
WalletDiagnostics,
} from "@gnu-taler/taler-util";
import {
@@ -33,11 +35,14 @@ import {
WalletCoreOpKeys,
WalletCoreRequestType,
WalletCoreResponseType,
+ WalletOperations,
} from "@gnu-taler/taler-wallet-core";
-import { MessageFromBackend, MessageFromFrontendBackground, MessageFromFrontendWallet } from "./platform/api.js";
import {
- platform,
-} from "./platform/foreground.js";
+ MessageFromBackend,
+ MessageFromFrontendBackground,
+ MessageFromFrontendWallet,
+} from "./platform/api.js";
+import { platform } from "./platform/foreground.js";
/**
*
@@ -88,6 +93,25 @@ export interface BackgroundApiClient {
): Promise<BackgroundOperations[Op]["response"]>;
}
+export class WalletError extends Error {
+ public errorDetail: TalerError;
+
+ constructor(op: string, e: TalerError) {
+ super(`Wallet operation "${op}" failed: ${e.message}`);
+ this.errorDetail = e;
+ // Object.setPrototypeOf(this, WalletError.prototype);
+ }
+}
+export class BackgroundError extends Error {
+ public errorDetail: TalerErrorDetail;
+
+ constructor(op: string, e: TalerErrorDetail) {
+ super(`Background operation "${op}" failed: ${e.message}`);
+ this.errorDetail = e;
+ // Object.setPrototypeOf(this, BackgroundError.prototype);
+ }
+}
+
/**
* BackgroundApiClient integration with browser platform
*/
@@ -106,13 +130,18 @@ class BackgroundApiClientImpl implements BackgroundApiClient {
try {
response = await platform.sendMessageToBackground(message);
- } catch (e) {
+ } catch (error) {
console.log("Error calling backend");
- throw new Error(`Error contacting backend: ${e}`);
+ if (error instanceof Error) {
+ throw new BackgroundError(operation, {
+ code: TalerErrorCode.GENERIC_UNEXPECTED_REQUEST_ERROR,
+ });
+ }
+ throw error;
}
logger.info("got response", response);
if (response.type === "error") {
- throw TalerError.fromUncheckedDetail(response.error);
+ throw new BackgroundError(operation, response.error);
}
return response.result as any;
}
@@ -140,7 +169,8 @@ class WalletApiClientImpl implements WalletCoreApiClient {
}
logger.info("got response", response);
if (response.type === "error") {
- throw TalerError.fromUncheckedDetail(response.error);
+ const error = TalerError.fromUncheckedDetail(response.error);
+ throw new WalletError(operation, error);
}
return response.result as any;
}