import { useHookForm } from "@erp/core/hooks"; import { useIdentityAuthSession } from "../../context"; import type { IdentityAuthError } from "../../shared/entities"; import { type LoginForm, LoginFormSchema } from "../entities"; function getLoginErrorMessage(error: unknown) { const status = (error as IdentityAuthError | undefined)?.status; if (status === 401) { return "Email o contraseña no válidos."; } if (status === 400) { return "Revisa los datos introducidos."; } return "No se ha podido iniciar sesión. Inténtalo de nuevo."; } export function useLoginController() { const { login } = useIdentityAuthSession(); const form = useHookForm({ resolverSchema: LoginFormSchema, initialValues: { email: "admin@local.test", password: "password", }, }); const handleSubmit = form.handleSubmit(async (values) => { form.clearErrors("root"); try { await login(values); } catch (error) { form.setError("root", { message: getLoginErrorMessage(error), }); } }); return { form, handleSubmit, }; }