| const INVALID_ERROR_STRINGS = new Set(["[object Object]", "undefined", "null", ""]); |
|
|
| const pickResponseMessage = (responseData) => { |
| if (typeof responseData === "string") { |
| return responseData.trim(); |
| } |
| if (!responseData || typeof responseData !== "object") { |
| return ""; |
| } |
|
|
| const keys = ["message", "error", "detail", "details", "msg"]; |
| for (const key of keys) { |
| const value = responseData[key]; |
| if (typeof value === "string" && value.trim()) { |
| return value.trim(); |
| } |
| } |
| return ""; |
| }; |
|
|
| export const resolveErrorMessage = (err, fallbackMessage = "") => { |
| if (typeof err === "string") { |
| return err.trim() || fallbackMessage; |
| } |
| if (typeof err === "number" || typeof err === "boolean") { |
| return String(err); |
| } |
|
|
| const fromResponse = |
| pickResponseMessage(err?.response?.data) || |
| (typeof err?.response?.statusText === "string" |
| ? err.response.statusText.trim() |
| : ""); |
| const fromError = |
| typeof err?.message === "string" ? err.message.trim() : ""; |
|
|
| let fromString = ""; |
| if (typeof err?.toString === "function") { |
| const value = err.toString().trim(); |
| fromString = INVALID_ERROR_STRINGS.has(value) ? "" : value; |
| } |
|
|
| return fromResponse || fromError || fromString || fallbackMessage; |
| }; |
|
|