"use client"; import { useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { useMutation } from "@tanstack/react-query"; import { Loader2, Mail } from "lucide-react"; import { useTRPC } from "@karakeep/shared-react/trpc"; import { validateRedirectUrl } from "@karakeep/shared/utils/redirectUrl"; export default function CheckEmailPage() { const api = useTRPC(); const searchParams = useSearchParams(); const router = useRouter(); const [message, setMessage] = useState(""); const email = searchParams.get("email"); const redirectUrl = validateRedirectUrl(searchParams.get("redirectUrl")) ?? "/"; const resendEmailMutation = useMutation( api.users.resendVerificationEmail.mutationOptions({ onSuccess: () => { setMessage( "A new verification email has been sent to your email address.", ); }, onError: (error) => { setMessage(error.message || "Failed to resend verification email."); }, }), ); const handleResendEmail = () => { if (email) { resendEmailMutation.mutate({ email, redirectUrl }); } }; const handleBackToSignIn = () => { router.push("/signin"); }; if (!email) { return (
We've sent a verification email to:
{email}
Click the link in the email to verify your account and complete your registration.