taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit a976b03cd1917d576d084726529427e709d5fe3f
parent 883788565a968cbbaab04678c9d2ce92b7bdc432
Author: Iván Ávalos <avalos@disroot.org>
Date:   Fri, 24 May 2024 12:11:59 -0600

taler-util: cancel http requests via os.fetchHttp

Diffstat:
Mpackages/taler-util/src/http-impl.qtart.ts | 7++++++-
Mpackages/taler-util/src/qtart.ts | 6+++++-
2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/packages/taler-util/src/http-impl.qtart.ts b/packages/taler-util/src/http-impl.qtart.ts @@ -118,7 +118,11 @@ export class HttpLibImpl implements HttpRequestLibrary { // Just like WHATWG fetch(), the qjs http client doesn't // really support cancellation, so cancellation here just // means that the result is ignored! - const fetchProm = qjsOs.fetchHttp(url, { + const { + requestId, + promise: fetchProm, + cancelFn + } = qjsOs.fetchHttp(url, { method, data, headers: headersList, @@ -135,6 +139,7 @@ export class HttpLibImpl implements HttpRequestLibrary { if (opt?.cancellationToken) { cancelCancelledHandler = opt.cancellationToken.onCancelled(() => { + cancelFn(requestId); cancelPromCap.reject(new RequestCancelledError()); }); } diff --git a/packages/taler-util/src/qtart.ts b/packages/taler-util/src/qtart.ts @@ -17,7 +17,11 @@ export interface QjsHttpOptions { } export interface QjsOsLib { - fetchHttp(url: string, options?: QjsHttpOptions): Promise<QjsHttpResp>; + fetchHttp(url: string, options?: QjsHttpOptions): { + requestId: number, + promise: Promise<QjsHttpResp>, + cancelFn: (reqId: number) => number, + }; postMessageToHost(s: string): void; setMessageFromHostHandler(h: (s: string) => void): void; rename(oldPath: string, newPath: string): number;