mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-28 03:29:20 +03:00
Translate request errors for #471
This commit is contained in:
parent
561445de03
commit
4349eda310
66 changed files with 214 additions and 92 deletions
|
|
@ -43,23 +43,21 @@ abort = (sAction, sReason, bClearOnly) => {
|
|||
},
|
||||
|
||||
fetchJSON = (action, sGetAdd, params, timeout, jsonCallback) => {
|
||||
sGetAdd = pString(sGetAdd);
|
||||
params = params || {};
|
||||
if (params instanceof FormData) {
|
||||
params.set('Action', action);
|
||||
} else {
|
||||
params.Action = action;
|
||||
}
|
||||
let init = {};
|
||||
if (window.AbortController) {
|
||||
abort(action);
|
||||
const controller = new AbortController();
|
||||
oRequests[action] = controller;
|
||||
init.signal = controller.signal;
|
||||
timeout && setTimeout(() => abort(action, 'TimeoutError'), timeout);
|
||||
}
|
||||
return rl.fetchJSON(getURL(sGetAdd), init, sGetAdd ? null : params).then(jsonCallback).catch(err => {
|
||||
err.reason = init.signal.reason;
|
||||
abort(action);
|
||||
const controller = new AbortController(),
|
||||
signal = controller.signal;
|
||||
oRequests[action] = controller;
|
||||
// Currently there is no way to combine multiple signals, so AbortSignal.timeout() not possible
|
||||
timeout && setTimeout(() => abort(action, 'TimeoutError'), timeout);
|
||||
return rl.fetchJSON(getURL(sGetAdd), {signal: signal}, sGetAdd ? null : params).then(jsonCallback).catch(err => {
|
||||
err.aborted = signal.aborted;
|
||||
err.reason = signal.reason;
|
||||
return Promise.reject(err);
|
||||
});
|
||||
};
|
||||
|
|
@ -74,8 +72,8 @@ class FetchError extends Error
|
|||
|
||||
export class AbstractFetchRemote
|
||||
{
|
||||
abort(sAction, bClearOnly) {
|
||||
abort(sAction, 0, bClearOnly);
|
||||
abort(sAction) {
|
||||
abort(sAction);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -136,7 +134,7 @@ export class AbstractFetchRemote
|
|||
abortActions.forEach(actionToAbort => abort(actionToAbort));
|
||||
}
|
||||
|
||||
fetchJSON(sAction, sGetAdd,
|
||||
fetchJSON(sAction, pString(sGetAdd),
|
||||
params,
|
||||
undefined === iTimeout ? 30000 : pInt(iTimeout),
|
||||
data => {
|
||||
|
|
@ -150,7 +148,7 @@ export class AbstractFetchRemote
|
|||
if (oRequests[sAction].__aborted) {
|
||||
iError = 2;
|
||||
}
|
||||
abort(sAction, 0, true);
|
||||
abort(sAction, 0, 1);
|
||||
}
|
||||
|
||||
if (!iError && data) {
|
||||
|
|
@ -178,7 +176,10 @@ export class AbstractFetchRemote
|
|||
)
|
||||
.catch(err => {
|
||||
console.error({fetchError:err});
|
||||
fCallback && fCallback(err.name == 'AbortError' ? 2 : 1, err);
|
||||
fCallback && fCallback(
|
||||
'TimeoutError' == err.reason ? 3 : (err.name == 'AbortError' ? 2 : 1),
|
||||
err
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -202,7 +203,7 @@ export class AbstractFetchRemote
|
|||
this.setTrigger(fTrigger, true);
|
||||
return fetchJSON(action, '', params, pInt(timeOut, 30000),
|
||||
data => {
|
||||
abort(action, 0, true);
|
||||
abort(action, 0, 1);
|
||||
|
||||
if (!data) {
|
||||
return Promise.reject(new FetchError(Notification.JsonParse));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue