import { toast } from 'sonner' import type { FieldValues, Path, UseFormSetError } from 'react-hook-form' import { ApiError } from '@/api/client' /** * Standard error handling: 422 field errors land on the form (when given), * everything else surfaces as a toast with the backend's localized message. */ export function handleApiError( error: unknown, setError?: UseFormSetError, ): void { if (error instanceof ApiError) { if (error.status === 422 && error.errors && setError) { for (const [field, messages] of Object.entries(error.errors)) { setError(field as Path, { type: 'server', message: messages[0] }) } return } toast.error(error.message || `请求失败(${error.code})`) return } toast.error('网络异常,请稍后重试') }