diff options
| author | rr- <rr-@sakuya.pl> | 2017-01-08 02:12:38 +0100 |
|---|---|---|
| committer | rr- <rr-@sakuya.pl> | 2017-01-08 10:25:29 +0100 |
| commit | 8a73f7e400930c648223e510090d5677120a472e (patch) | |
| tree | 9fe3f1a08107ace10b15dc182219507a720f7e5c /client/js/api.js | |
| parent | 5c0765c30e111ed28b275e2575280ce4d399a8e2 (diff) | |
client: rework promise error handling
Diffstat (limited to 'client/js/api.js')
| -rw-r--r-- | client/js/api.js | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/client/js/api.js b/client/js/api.js index 4f1a05c..5e52355 100644 --- a/client/js/api.js +++ b/client/js/api.js @@ -85,18 +85,10 @@ class Api extends events.EventTarget { } loginFromCookies() { - return new Promise((resolve, reject) => { - const auth = cookies.getJSON('auth'); - if (auth && auth.user && auth.password) { - this.login(auth.user, auth.password, true) - .then(resolve) - .catch(errorMessage => { - reject(errorMessage); - }); - } else { - resolve(); - } - }); + const auth = cookies.getJSON('auth'); + return auth && auth.user && auth.password ? + this.login(auth.user, auth.password, true) : + Promise.resolve(); } login(userName, userPassword, doRemember) { @@ -117,8 +109,8 @@ class Api extends events.EventTarget { this.user = response; resolve(); this.dispatchEvent(new CustomEvent('login')); - }, response => { - reject(response.description || response || 'Unknown error'); + }, error => { + reject(error); this.logout(); }); }); @@ -182,9 +174,9 @@ class Api extends events.EventTarget { } promise = promise.then(() => { return this._rawRequest(url, requestFactory, data, {}, options); - }, errorMessage => { + }, error => { // TODO: check if the error is because of expired uploads - return Promise.reject(errorMessage); + return Promise.reject(error); }); promise.abort = () => abortFunction(); return promise; @@ -201,7 +193,7 @@ class Api extends events.EventTarget { resolve(response.token); abortFunction = () => {}; }, - errorMessage => reject(errorMessage)); + reject); }); returnedPromise.abort = () => abortFunction(); return returnedPromise; @@ -253,9 +245,8 @@ class Api extends events.EventTarget { })); } } catch (e) { - reject({ - title: 'Authentication error', - description: 'Malformed credentials'}); + reject( + new Error('Authentication error (malformed credentials)')); } if (!options.noProgress) { @@ -265,18 +256,19 @@ class Api extends events.EventTarget { abortFunction = () => { req.abort(); // does *NOT* call the callback passed in .end() nprogress.done(); - reject({ - title: 'Cancelled', - description: - 'The request was aborted due to user cancel.'}); + reject( + new Error('The request was aborted due to user cancel.')); }; req.end((error, response) => { nprogress.done(); if (error) { - reject(response && response.body ? response.body : { - title: 'Networking error', - description: error.message}); + if (response && response.body) { + error = new Error( + response.body.description || 'Unknown error'); + error.response = response.body; + } + reject(error); } else { resolve(response.body); } |