import Link from '@/core/components/elements/Link/Link' import { setAuth } from '@/core/utils/auth' import { useRouter } from 'next/router' import { useRef, useState } from 'react' import loginApi from '../api/loginApi' import odooApi from '@/core/api/odooApi' import { setCookie } from 'cookies-next' import { useSession } from 'next-auth/react' const useLogin = () => { const router = useRouter() const [isLoading, setIsLoading] = useState(false) const [alert, setAlert] = useState(null) const [isValid, setIsValid] = useState(false) const emailRef = useRef(null) const passwordRef = useRef(null) const inputVal = () => ({ email: emailRef.current.value, password: passwordRef.current.value }) const handleChangeInput = () => { const { email, password } = inputVal() const isValidInput = email && password setIsValid(isValidInput) } const handleSubmit = async (e) => { e.preventDefault() setAlert(null) setIsLoading(true) const { email, password } = inputVal() const login = await loginApi({ email, password }) setIsLoading(false) if (login.isAuth) { setAuth(login.user) router.push(router.query?.next || '/') return } switch (login.reason) { case 'NOT_FOUND': setAlert({ children: 'Email atau password tidak cocok', type: 'info' }) break case 'NOT_ACTIVE': setAlert({ children: ( <> Email belum diaktivasi, aktivasi sekarang ), type: 'info' }) break } } const handleGoogleSubmit = async (session) => { const params = { access_token: session.accessToken } const data = await odooApi('POST', '/api/v1/user/validate-sso', params) if (data.isAuth) { session.odooUser = data.user setCookie('auth', JSON.stringify(session?.odooUser)) router.push(router?.query?.next ?? '/') return } } return { handleChangeInput, handleSubmit, isLoading, isValid, alert, emailRef, passwordRef, handleGoogleSubmit } } export default useLogin