import {Card, CardBody, CardHeader} from "@nextui-org/react"; import {useNavigate, useSearchParams} from "react-router-dom"; import React, {useEffect, useState} from "react"; import {CheckCircle, Warning, WarningCircle} from "@phosphor-icons/react"; import TokenValidationResult from "Frontend/generated/de/grimsi/gameyfin/shared/token/TokenValidationResult"; import {EmailConfirmationEndpoint} from "Frontend/generated/endpoints"; import {useAuth} from "Frontend/util/auth"; export default function EmailConfirmationView() { const auth = useAuth(); const [searchParams, setSearchParams] = useSearchParams(); const navigate = useNavigate(); const [validationResult, setValidationResult] = useState(TokenValidationResult.INVALID); useEffect(() => { if (auth.state.user?.emailConfirmed === true) { navigate("/"); } }, []); useEffect(() => { let token = searchParams.get("token"); if (token) confirmEmail(token).then((result) => setValidationResult(result)); }, [searchParams]); async function confirmEmail(token: string): Promise { let result = await EmailConfirmationEndpoint.confirmEmail(token) as TokenValidationResult; if (result === TokenValidationResult.VALID) { setTimeout(() => window.location.reload(), 5000); } return result; } return (
Gameyfin Logo {validationResult === TokenValidationResult.VALID ?

Email confirmed
You will be redirected shortly

: validationResult === TokenValidationResult.EXPIRED ?

Expired token
Please request a new one

:

Invalid token
Please try again

}
); }