X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/df5bb74b46652b2e0a73a0e9ef2c09a63314e409..58db72fee358d5987139a1b8526c0ca873e07dbf:/src/common/webdav.ts diff --git a/src/common/webdav.ts b/src/common/webdav.ts index b51cff30..93ec21cb 100644 --- a/src/common/webdav.ts +++ b/src/common/webdav.ts @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: AGPL-3.0 +import { customEncodeURI } from "./url"; + export class WebDAV { defaults: WebDAVDefaults = { @@ -75,12 +77,22 @@ export class WebDAV { r.open(config.method, `${this.defaults.baseURL ? this.defaults.baseURL+'/' - : ''}${config.url}`); + : ''}${customEncodeURI(config.url)}`); + const headers = { ...this.defaults.headers, ...config.headers }; Object .keys(headers) .forEach(key => r.setRequestHeader(key, headers[key])); + if (!(window as any).cancelTokens) { + Object.assign(window, { cancelTokens: {} }); + } + + (window as any).cancelTokens[config.url] = () => { + resolve(r); + r.abort(); + } + if (config.onUploadProgress) { r.upload.addEventListener('progress', config.onUploadProgress); }