Files
imphnen-frontend-service/apps/gacha/src/app/_hooks/use-register.ts
T

57 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-04-03 23:32:44 +07:00
import { useForm } from 'react-hook-form';
import {
authRegisterSchema,
TRegisterRequest,
usePostRegister,
} from '@imphnen-frontend-service/service';
import { zodResolver } from '@hookform/resolvers/zod';
import { toast } from 'sonner';
2025-05-27 01:41:13 +07:00
import { useVerifyEmail } from './use-verify-email';
2025-04-03 23:32:44 +07:00
export const useRegister = () => {
const postRegister = usePostRegister();
2025-05-27 01:41:13 +07:00
const {
verifyForm,
onVerifySubmit,
showVerifyModal,
openVerifyModal,
closeVerifyModal,
isVerifying,
emailToVerify,
} = useVerifyEmail();
2025-04-03 23:32:44 +07:00
const form = useForm<TRegisterRequest>({
resolver: zodResolver(authRegisterSchema),
mode: 'all',
2025-04-04 16:38:21 +07:00
defaultValues: {
fullname: '',
email: '',
password: '',
confirm_password: '',
phone_number: '',
},
2025-04-03 23:32:44 +07:00
});
const onSubmit = form.handleSubmit((data) => {
postRegister.mutate(data, {
2025-05-27 01:41:13 +07:00
onSuccess: () => {
toast.success('Registrasi sukses. Silakan verifikasi email Anda.');
openVerifyModal(data.email);
},
onError: (error) => toast.error(error.message || 'Registrasi gagal'),
2025-04-03 23:32:44 +07:00
});
});
return {
form,
2025-05-27 01:41:13 +07:00
verifyForm,
2025-04-03 23:32:44 +07:00
onSubmit,
2025-05-27 01:41:13 +07:00
onVerifySubmit,
showVerifyModal,
closeVerifyModal,
isVerifying,
isRegistering: postRegister.isPending,
registeredEmail: emailToVerify,
2025-04-03 23:32:44 +07:00
};
};