import axios from 'axios' import { useRef, useState } from 'react' import registerApi from '../api/registerApi' const useRegister = () => { const [isLoading, setIsLoading] = useState(false) const [alert, setAlert] = useState(null) const [isValid, setIsValid] = useState(false) const [tnd, setTnd] = useState(false) const fullnameRef = useRef(null) const emailRef = useRef(null) const passwordRef = useRef(null) const companyNameRef = useRef(null) const inputVal = () => ({ fullname: fullnameRef.current.value, email: emailRef.current.value, password: passwordRef.current.value, companyName: companyNameRef.current.value }) const handleChangeInput = () => { const { fullname, email, password } = inputVal() const isValidInput = email && password && fullname setIsValid(isValidInput) } const resetInput = () => { fullnameRef.current.value = '' emailRef.current.value = '' passwordRef.current.value = '' companyNameRef.current.value = '' } const handleSubmit = async (e) => { e.preventDefault() setAlert(null) setIsLoading(true) const { fullname, email, password, companyName } = inputVal() const isRegistered = await registerApi({ name: fullname, company: companyName, email, password }) setIsLoading(false) if (isRegistered.register) { await axios.post(`${process.env.NEXT_PUBLIC_SELF_HOST}/api/activation-request`, { email }) setAlert({ children: 'Berhasil mendaftarkan akun anda, cek email untuk melakukan aktivasi akun', type: 'success' }) resetInput() } else { switch (isRegistered.reason) { case 'EMAIL_USED': setAlert({ children: 'Email telah digunakan', type: 'info' }) break } } } return { handleChangeInput, handleSubmit, isLoading, isValid, alert, companyNameRef, fullnameRef, emailRef, passwordRef, tnd, setTnd } } export default useRegister