Translate request errors for #471

This commit is contained in:
the-djmaze 2022-08-02 11:01:19 +02:00
parent 561445de03
commit 4349eda310
66 changed files with 214 additions and 92 deletions

View file

@ -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));