* feat(gacha): register and login integration * fix: navbar and gacha landing page - display fullname when user authenticated - fix styling and responsive * fix: minor fix UI
57 lines
1.3 KiB
TypeScript
57 lines
1.3 KiB
TypeScript
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';
|
|
import { useVerifyEmail } from './use-verify-email';
|
|
|
|
export const useRegister = () => {
|
|
const postRegister = usePostRegister();
|
|
const {
|
|
verifyForm,
|
|
onVerifySubmit,
|
|
showVerifyModal,
|
|
openVerifyModal,
|
|
closeVerifyModal,
|
|
isVerifying,
|
|
emailToVerify,
|
|
} = useVerifyEmail();
|
|
|
|
const form = useForm<TRegisterRequest>({
|
|
resolver: zodResolver(authRegisterSchema),
|
|
mode: 'all',
|
|
defaultValues: {
|
|
fullname: '',
|
|
email: '',
|
|
password: '',
|
|
confirm_password: '',
|
|
phone_number: '',
|
|
},
|
|
});
|
|
|
|
const onSubmit = form.handleSubmit((data) => {
|
|
postRegister.mutate(data, {
|
|
onSuccess: () => {
|
|
toast.success('Registrasi sukses. Silakan verifikasi email Anda.');
|
|
openVerifyModal(data.email);
|
|
},
|
|
onError: (error) => toast.error(error.message || 'Registrasi gagal'),
|
|
});
|
|
});
|
|
|
|
return {
|
|
form,
|
|
verifyForm,
|
|
onSubmit,
|
|
onVerifySubmit,
|
|
showVerifyModal,
|
|
closeVerifyModal,
|
|
isVerifying,
|
|
isRegistering: postRegister.isPending,
|
|
registeredEmail: emailToVerify,
|
|
};
|
|
};
|