import axios from "axios"; import Head from "next/head"; import Image from "next/image"; import Link from "@/components/elements/Link"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import Alert from "@/components/elements/Alert"; import Layout from "@/components/layouts/Layout"; import Spinner from "@/components/elements/Spinner"; import { setAuth } from "@/core/utils/auth"; import Logo from "@/images/logo.png"; export default function Activate() { const [email, setEmail] = useState(''); const [isInputFulfilled, setIsInputFulfilled] = useState(false); const [isLoading, setIsLoading] = useState(false); const [alert, setAlert] = useState(); const router = useRouter(); const { token } = router.query; useEffect(() => { if (router.query.email) setEmail(router.query.email); }, [router]) useEffect(() => { const activateIfTokenExist = async () => { if (token) { let activation = await axios.post(`${process.env.SELF_HOST}/api/activation`, {token}); if (activation.data.activation) { setAuth(activation.data.user); setAlert({ component: <>Selamat, akun anda berhasil diaktifkan, kembali ke beranda.>, type: 'success' }); } else { setAlert({ component: <>Mohon maaf token sudah tidak aktif, lakukan permintaan aktivasi akun kembali atau masuk jika sudah memiliki akun.>, type: 'info' }); } } } activateIfTokenExist(); }, [token]); useEffect(() => { setIsInputFulfilled(email != ''); }, [email]); const activationRequest = async (e) => { e.preventDefault(); setIsLoading(true); let activationRequest = await axios.post(`${process.env.SELF_HOST}/api/activation-request`, {email}); if (activationRequest.data.activation_request) { setAlert({ component: <>Mohon cek email anda untuk aktivasi akun Indoteknik>, type: 'success' }); } else { switch (activationRequest.data.reason) { case 'NOT_FOUND': setAlert({ component: <>Email tersebut belum terdaftar, daftar sekarang.>, type: 'info' }); break; case 'ACTIVE': setAlert({ component: <>Email tersebut sudah terdaftar dan sudah aktif, masuk sekarang.>, type: 'info' }); break; } } setIsLoading(false); } return ( <>