Spaces:
Paused
Paused
| /** | |
| * Extracts a user-friendly error message from various error formats | |
| * @param {any} error - The error object or message | |
| * @returns {string} - A clean error message | |
| */ | |
| export const parseErrorMessage = (error: any): string => { | |
| if (!error) return "An unknown error occurred"; | |
| // If error is already a string, return it | |
| if (typeof error === 'string') return error; | |
| // If error has a message property, check if it's a JSON string | |
| if (error.message) { | |
| try { | |
| // Try to parse the error message as JSON | |
| const parsedError = JSON.parse(error.message); | |
| // Handle common nested error structures | |
| if (parsedError.error && parsedError.error.message) { | |
| return parsedError.error.message; | |
| } | |
| // If parsed successfully but no nested message found, stringify it nicely | |
| return typeof parsedError === 'string' ? parsedError : JSON.stringify(parsedError, null, 2); | |
| } catch (e) { | |
| // If parsing fails, just return the original message | |
| return error.message; | |
| } | |
| } | |
| // If error has a response with data | |
| if (error.response && error.response.data) { | |
| if (typeof error.response.data === 'string') return error.response.data; | |
| if (error.response.data.message) return error.response.data.message; | |
| if (error.response.data.error) { | |
| return typeof error.response.data.error === 'string' | |
| ? error.response.data.error | |
| : error.response.data.error.message || JSON.stringify(error.response.data.error); | |
| } | |
| } | |
| // Fallback to stringifying the error | |
| return String(error); | |
| }; |