feat(country-province-city): add, edit functionality
This commit is contained in:
86
src/utils/errorHandler.js
Normal file
86
src/utils/errorHandler.js
Normal file
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* استخراج پیام خطا از response سرور
|
||||
* این تابع سعی میکند پیام خطا را از مکانهای مختلف در response پیدا کند
|
||||
*
|
||||
* @param {Object} error - شیء خطا از axios یا catch
|
||||
* @returns {string} - پیام خطا
|
||||
*/
|
||||
export function getErrorMessage(error) {
|
||||
// اگر error خودش یک string باشد
|
||||
if (typeof error === 'string') {
|
||||
return error;
|
||||
}
|
||||
|
||||
// بررسی response.data برای پیامهای مختلف
|
||||
const responseData = error?.response?.data || error?.data;
|
||||
|
||||
if (responseData) {
|
||||
// بررسی فیلدهای مختلف که ممکن است پیام خطا در آنها باشد
|
||||
if (responseData.message) return responseData.message;
|
||||
if (responseData.Message) return responseData.Message;
|
||||
if (responseData.error) return responseData.error;
|
||||
if (responseData.Error) return responseData.Error;
|
||||
if (responseData.errorMessage) return responseData.errorMessage;
|
||||
if (responseData.error_message) return responseData.error_message;
|
||||
|
||||
// اگر errors یک آرایه باشد
|
||||
if (Array.isArray(responseData.errors) && responseData.errors.length > 0) {
|
||||
return responseData.errors[0]?.message || responseData.errors[0] || String(responseData.errors[0]);
|
||||
}
|
||||
|
||||
// اگر errors یک object باشد
|
||||
if (responseData.errors && typeof responseData.errors === 'object') {
|
||||
const firstError = Object.values(responseData.errors)[0];
|
||||
if (Array.isArray(firstError) && firstError.length > 0) {
|
||||
return firstError[0];
|
||||
}
|
||||
if (typeof firstError === 'string') {
|
||||
return firstError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// بررسی error.message
|
||||
if (error?.message) {
|
||||
return error.message;
|
||||
}
|
||||
|
||||
// پیام پیشفرض بر اساس status code
|
||||
const status = error?.response?.status || error?.status;
|
||||
if (status) {
|
||||
const statusMessages = {
|
||||
400: 'Bad Request',
|
||||
401: 'Unauthorized',
|
||||
403: 'Forbidden',
|
||||
404: 'Not Found',
|
||||
409: 'Conflict',
|
||||
422: 'Validation Error',
|
||||
500: 'Internal Server Error',
|
||||
502: 'Bad Gateway',
|
||||
503: 'Service Unavailable',
|
||||
};
|
||||
if (statusMessages[status]) {
|
||||
return statusMessages[status];
|
||||
}
|
||||
}
|
||||
|
||||
// پیام پیشفرض
|
||||
return 'An error occurred. Please try again.';
|
||||
}
|
||||
|
||||
/**
|
||||
* استخراج پیام موفقیت از response سرور
|
||||
*
|
||||
* @param {Object} response - response از axios
|
||||
* @returns {string} - پیام موفقیت
|
||||
*/
|
||||
export function getSuccessMessage(response) {
|
||||
const data = response?.data || response;
|
||||
|
||||
if (data?.message) return data.message;
|
||||
if (data?.Message) return data.Message;
|
||||
if (data?.successMessage) return data.successMessage;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user