feat: error cache (#2145)
This commit is contained in:
parent
4fc64af173
commit
15f824387e
@ -14,6 +14,8 @@ const handleErrorMessage = (error) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const errorCache = new Map();
|
||||||
export class APIClient extends APIClientSDK {
|
export class APIClient extends APIClientSDK {
|
||||||
services: Record<string, Result<any, any>> = {};
|
services: Record<string, Result<any, any>> = {};
|
||||||
silence = false;
|
silence = false;
|
||||||
@ -49,9 +51,24 @@ export class APIClient extends APIClientSDK {
|
|||||||
if (error?.response?.data?.type === 'application/json') {
|
if (error?.response?.data?.type === 'application/json') {
|
||||||
handleErrorMessage(error);
|
handleErrorMessage(error);
|
||||||
} else {
|
} else {
|
||||||
|
if (errorCache.size > 10) {
|
||||||
|
errorCache.clear();
|
||||||
|
}
|
||||||
|
let errs = error?.response?.data?.errors || [{ message: 'Server error' }];
|
||||||
|
errs = errs.filter((error) => {
|
||||||
|
const lastTime = errorCache.get(error.message);
|
||||||
|
if (lastTime && new Date().getTime() - lastTime < 500) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
errorCache.set(error.message, new Date().getTime());
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
if (errs.length === 0) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
notification.error({
|
notification.error({
|
||||||
message: error?.response?.data?.errors?.map?.((error: any) => {
|
message: errs?.map?.((error: any) => {
|
||||||
return React.createElement('div', { children: error.message });
|
return React.createElement('div', {}, error.message);
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user