From 252382a9375ea05f62389e33f111c3fa008d8fff Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 17 Jan 2023 15:59:55 -0300 Subject: [PATCH] throw error after 5 seconds if wallet-core didn't reply to a command --- .../src/platform/chrome.ts | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/packages/taler-wallet-webextension/src/platform/chrome.ts b/packages/taler-wallet-webextension/src/platform/chrome.ts index fc51a65fb..23730c2d3 100644 --- a/packages/taler-wallet-webextension/src/platform/chrome.ts +++ b/packages/taler-wallet-webextension/src/platform/chrome.ts @@ -14,8 +14,13 @@ GNU Taler; see the file COPYING. If not, see */ -import { classifyTalerUri, Logger, TalerUriType } from "@gnu-taler/taler-util"; -import { WalletOperations } from "@gnu-taler/taler-wallet-core"; +import { + classifyTalerUri, + Logger, + TalerErrorCode, + TalerUriType, +} from "@gnu-taler/taler-util"; +import { TalerError, WalletOperations } from "@gnu-taler/taler-wallet-core"; import { BackgroundOperations } from "../wxApi.js"; import { BackgroundPlatformAPI, @@ -321,12 +326,15 @@ async function sendMessageToBackground< return new Promise((resolve, reject) => { logger.trace("send operation to the wallet background", message); let timedout = false; - setTimeout(() => { + const timerId = setTimeout(() => { timedout = true; - reject("timedout"); - }, 2000); + throw TalerError.fromDetail(TalerErrorCode.GENERIC_TIMEOUT, {}); + }, 5 * 1000); //five seconds chrome.runtime.sendMessage(messageWithId, (backgroundResponse) => { - if (timedout) return false; + if (timedout) { + return false; //already rejected + } + clearTimeout(timerId); if (chrome.runtime.lastError) { reject(chrome.runtime.lastError.message); } else { @@ -576,26 +584,26 @@ function setAlertedIcon(): void { interface OffscreenCanvasRenderingContext2D extends CanvasState, - CanvasTransform, - CanvasCompositing, - CanvasImageSmoothing, - CanvasFillStrokeStyles, - CanvasShadowStyles, - CanvasFilters, - CanvasRect, - CanvasDrawPath, - CanvasUserInterface, - CanvasText, - CanvasDrawImage, - CanvasImageData, - CanvasPathDrawingStyles, - CanvasTextDrawingStyles, - CanvasPath { + CanvasTransform, + CanvasCompositing, + CanvasImageSmoothing, + CanvasFillStrokeStyles, + CanvasShadowStyles, + CanvasFilters, + CanvasRect, + CanvasDrawPath, + CanvasUserInterface, + CanvasText, + CanvasDrawImage, + CanvasImageData, + CanvasPathDrawingStyles, + CanvasTextDrawingStyles, + CanvasPath { readonly canvas: OffscreenCanvas; } declare const OffscreenCanvasRenderingContext2D: { prototype: OffscreenCanvasRenderingContext2D; - new (): OffscreenCanvasRenderingContext2D; + new(): OffscreenCanvasRenderingContext2D; }; interface OffscreenCanvas extends EventTarget { @@ -608,7 +616,7 @@ interface OffscreenCanvas extends EventTarget { } declare const OffscreenCanvas: { prototype: OffscreenCanvas; - new (width: number, height: number): OffscreenCanvas; + new(width: number, height: number): OffscreenCanvas; }; function createCanvas(size: number): OffscreenCanvas {