import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; import { Button, Card, Form, Input, notification } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { z } from "zod"; import { getPocketBase } from "@/repository/pocketbase"; import { getErrMsg } from "@/utils/error"; const Login = () => { const navigage = useNavigate(); const { t } = useTranslation(); const [notificationApi, NotificationContextHolder] = notification.useNotification(); const formSchema = z.object({ username: z.string().email(t("login.username.errmsg.invalid")), password: z.string().min(10, t("login.password.errmsg.invalid")), }); const formRule = createSchemaFieldRule(formSchema); const [form] = Form.useForm>(); const [formPending, setFormPending] = useState(false); const handleFormFinish = async (fields: z.infer) => { setFormPending(true); try { await getPocketBase().admins.authWithPassword(fields.username, fields.password); navigage("/"); } catch (err) { notificationApi.error({ message: t("common.text.request_error"), description: <>{getErrMsg(err)} }); } finally { setFormPending(false); } }; return ( <> {NotificationContextHolder}
); }; export default Login;