diff --git a/apps/dimentorin/src/app/_hooks/use-login.ts b/apps/dimentorin/src/app/_hooks/use-login.ts new file mode 100644 index 0000000..3c031d3 --- /dev/null +++ b/apps/dimentorin/src/app/_hooks/use-login.ts @@ -0,0 +1,28 @@ +import { useForm } from 'react-hook-form'; +import { + authLoginSchema, + TLoginRequest, + usePostLogin, +} from '@imphnen-frontend-service/service'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { toast } from 'sonner'; + +export const useLogin = () => { + const postLogin = usePostLogin(); + const form = useForm({ + resolver: zodResolver(authLoginSchema), + mode: 'all', + }); + + const onSubmit = form.handleSubmit((data) => { + postLogin.mutate(data, { + onSuccess: () => toast.success("Login sukses"), + onError: (error) => toast.error(error.message), + }); + }); + + return { + form, + onSubmit, + }; +}; diff --git a/apps/dimentorin/src/app/auth/login/page.tsx b/apps/dimentorin/src/app/auth/login/page.tsx index 95440b3..3859aba 100644 --- a/apps/dimentorin/src/app/auth/login/page.tsx +++ b/apps/dimentorin/src/app/auth/login/page.tsx @@ -1,46 +1,50 @@ import { FC, ReactElement } from 'react'; -import { LoginBanner } from '@imphnen-frontend-service/ui/organisms'; +import { ControlledInputField, LoginBanner } from '@imphnen-frontend-service/ui/organisms'; import { Button } from '@imphnen-frontend-service/ui/atoms'; -import { useSearchParams } from 'react-router-dom'; -import { InputField } from '@imphnen-frontend-service/ui/molecules'; +import { useLogin } from '../../_hooks/use-login'; +import { ArrowLeftOutlined } from '@ant-design/icons'; export const Components: FC = (): ReactElement => { - const [searchParams] = useSearchParams(); - const error = searchParams.get('error'); // Ambil nilai ?error= + const { form, onSubmit } = useLogin(); return (
-
+
-