import { Alert, AlertDescription, AlertIcon, AlertTitle, Spinner } from "@chakra-ui/react" import { useRouter } from "next/router" import { useEffect, useState } from "react" import Link from "next/link" import { useMutation } from "react-query" import Modal from "~/common/components/elements/Modal" import { ActivationTokenProps } from "~/common/types/auth" import { activationUserToken } from "~/services/auth" type StatusProps = "success" | "error" | "loading"; const FormToken = () => { const { query } = useRouter() const [status, setStatus] = useState("loading") const [active, setActive] = useState(false) const mutation = useMutation({ mutationFn: (data: ActivationTokenProps) => activationUserToken(data), onSuccess: (data) => { if (data.activation === true) { setStatus("success") } else { setStatus("error") } } }) useEffect(() => { if (query?.activation === 'token' && typeof query?.token === 'string') { mutation.mutate({ token: query.token }) setActive(true) } //eslint-disable-next-line }, [query.activation, query.token]) return (
{status === 'loading' && ( <>
Mohon tunggu sedang memverifikasi akun
)} {status !== 'loading' && ( Aktivasi akun {status === 'success' ? 'berhasil' : 'gagal'} {status === 'success' && ( <> Akun anda berhasil diaktifkan, selamat berbelanja di Indoteknik. Kembali ke halaman utama )} {status === 'error' && mutation.data?.reason === 'INVALID_TOKEN' && ( <> Token sudah kadaluwarsa, silahkan coba kembali. Aktivasi Akun )} )}
) } export default FormToken