87 lines
2.7 KiB
JavaScript
87 lines
2.7 KiB
JavaScript
/**
|
|
* استخراج پیام خطا از 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;
|
|
}
|
|
|