Files
gig-admin/src/lib/errors.ts

25 lines
825 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<T extends FieldValues>(
error: unknown,
setError?: UseFormSetError<T>,
): 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<T>, { type: 'server', message: messages[0] })
}
return
}
toast.error(error.message || `请求失败(${error.code}`)
return
}
toast.error('网络异常,请稍后重试')
}