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