projects
/
arvados-workbench2.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/main' into 18207-Workbench2-is-not-clearing...
[arvados-workbench2.git]
/
src
/
common
/
webdav.ts
diff --git
a/src/common/webdav.ts
b/src/common/webdav.ts
index 17032768fd00436ef92cb4b63d156d0456ddc442..93ec21cb724f26d2ede4cf9be4b211defaf85b9c 100644
(file)
--- a/
src/common/webdav.ts
+++ b/
src/common/webdav.ts
@@
-2,6
+2,8
@@
//
// SPDX-License-Identifier: AGPL-3.0
//
// SPDX-License-Identifier: AGPL-3.0
+import { customEncodeURI } from "./url";
+
export class WebDAV {
defaults: WebDAVDefaults = {
export class WebDAV {
defaults: WebDAVDefaults = {
@@
-75,24
+77,36
@@
export class WebDAV {
r.open(config.method,
`${this.defaults.baseURL
? this.defaults.baseURL+'/'
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]));
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);
}
if (config.onUploadProgress) {
r.upload.addEventListener('progress', config.onUploadProgress);
}
+ // This event gets triggered on *any* server response
r.addEventListener('load', () => {
r.addEventListener('load', () => {
- if (r.status
=== 404
) {
+ if (r.status
>= 400
) {
return reject(r);
} else {
return resolve(r);
}
});
return reject(r);
} else {
return resolve(r);
}
});
+ // This event gets triggered on network errors
r.addEventListener('error', () => {
return reject(r);
});
r.addEventListener('error', () => {
return reject(r);
});