aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-05-24 12:11:59 -0600
committerIván Ávalos <avalos@disroot.org>2024-05-27 13:39:06 -0600
commita976b03cd1917d576d084726529427e709d5fe3f (patch)
tree0978ed3d3f90dae6a9717e43c7972762c49456ff /packages
parent883788565a968cbbaab04678c9d2ce92b7bdc432 (diff)
downloadwallet-core-a976b03cd1917d576d084726529427e709d5fe3f.tar.xz
taler-util: cancel http requests via os.fetchHttp
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-util/src/http-impl.qtart.ts7
-rw-r--r--packages/taler-util/src/qtart.ts6
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
index b4e4ebbe7..65e422168 100644
--- 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
index e298a157c..373daeae7 100644
--- 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;