(error: unknown, fallback = 'Request failed')
| 2 | import { ApiError } from '@/api/client' |
| 3 | |
| 4 | export function getApiErrorMessage(error: unknown, fallback = 'Request failed'): string { |
| 5 | if (error instanceof ApiError) { |
| 6 | let message = error.message || fallback |
| 7 | let requestId = error.requestId |
| 8 | try { |
| 9 | const parsed = JSON.parse(error.message) as { |
| 10 | message?: unknown |
| 11 | request_id?: unknown |
| 12 | } |
| 13 | if (typeof parsed.message === 'string' && parsed.message) { |
| 14 | message = parsed.message |
| 15 | } |
| 16 | if (typeof parsed.request_id === 'string' && parsed.request_id) { |
| 17 | requestId = parsed.request_id |
| 18 | } |
| 19 | } catch { |
| 20 | // Non-JSON error bodies are already usable as-is. |
| 21 | } |
| 22 | return `${message}${requestId ? ` Request ID: ${requestId}` : ''}` |
| 23 | } |
| 24 | if (error instanceof Error) return error.message |
| 25 | return fallback |
| 26 | } |
| 27 | |
| 28 | export function getApiErrorCode(error: unknown): string | undefined { |
| 29 | if (!(error instanceof ApiError)) return undefined |
no test coverage detected