13 lines
600 B
JavaScript
13 lines
600 B
JavaScript
export function getApiErrorMessage(error, fallback = 'La requête a échoué.') {
|
|
const flatten = (value, prefix = '') => {
|
|
if (Array.isArray(value)) return value.flatMap((item) => flatten(item, prefix));
|
|
if (value && typeof value === 'object') {
|
|
return Object.entries(value).flatMap(([key, item]) =>
|
|
flatten(item, ['detail', 'error', 'non_field_errors'].includes(key) ? prefix : key),
|
|
);
|
|
}
|
|
return typeof value === 'string' ? [`${prefix ? `${prefix} : ` : ''}${value}`] : [];
|
|
};
|
|
return flatten(error.response?.data).join(' ') || error.message || fallback;
|
|
}
|