/** * API error handling utilities for the application. * Provides centralized error handling for API requests with platform-specific logging. * * @module api */ import { AxiosError } from "axios"; import { logger } from "../utils/logger"; /** * Handles API errors with platform-specific logging and error processing. * * @param error - The Axios error object from the failed request * @param endpoint - The API endpoint that was called * @returns null for rate limit errors (400), throws the error otherwise * @throws The original error for non-rate-limit cases * * @remarks * Special handling includes: * - Enhanced logging for Capacitor platform * - Rate limit detection and handling * - Detailed error information logging including: * - Error message * - HTTP status * - Response data * - Request configuration (URL, method, headers) * * @example * ```typescript * try { * await api.getData(); * } catch (error) { * handleApiError(error as AxiosError, '/api/data'); * } * ``` */ export const handleApiError = (error: AxiosError, endpoint: string) => { if (process.env.VITE_PLATFORM === "capacitor") { logger.error(`[Capacitor API Error] ${endpoint}:`, { message: error.message, status: error.response?.status, data: error.response?.data, config: { url: error.config?.url, method: error.config?.method, headers: error.config?.headers, }, }); } // Specific handling for rate limits if (error.response?.status === 400) { logger.warn(`[Rate Limit] ${endpoint}`); return null; } throw error; };