import { TRPCClientErrorLike } from "@trpc/client"; import { AppRouter } from "../modules/trpc/trpc-app-router"; import { FieldValues, UseFormSetError } from "react-hook-form"; type SetBackendErrorsProps = { error: TRPCClientErrorLike; setError?: UseFormSetError; notifyError: (title: string, text?: string, apiMessage?: string) => void; }; export function setBackendErrors({ error, setError, notifyError, }: SetBackendErrorsProps) { let isFieldErrorSet = false; const fieldErrors = error.data?.zodError?.fieldErrors || {}; for (const fieldName in fieldErrors) { for (const message of fieldErrors[fieldName] || []) { isFieldErrorSet = true; if (!!setError) { setError(fieldName as keyof UseFormSetError, { type: "manual", message, }); } } } const formErrors = error.data?.zodError?.formErrors || []; const formErrorMessage = formErrors.length ? formErrors.join("\n") : undefined; notifyError( "Could not save the configuration", isFieldErrorSet ? "Submitted form contain errors" : "Error saving configuration", formErrorMessage ); }