Files
zellyy-finance/src/components/auth/EmailConfirmation.tsx
gpt-engineer-app[bot] 2eb9dbfe64 Troubleshoot email confirmation issues
Investigate and address problems related to users not receiving email confirmation messages.
2025-03-15 16:30:05 +00:00

98 lines
3.2 KiB
TypeScript

import React from "react";
import { useNavigate } from "react-router-dom";
import { Mail, InfoIcon, RefreshCw } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
interface EmailConfirmationProps {
email: string;
onBackToForm: () => void;
onResendEmail?: () => Promise<void>;
}
const EmailConfirmation: React.FC<EmailConfirmationProps> = ({ email, onBackToForm, onResendEmail }) => {
const navigate = useNavigate();
const [isResending, setIsResending] = useState(false);
// 이메일 재전송 핸들러
const handleResendEmail = async () => {
if (!onResendEmail) return;
setIsResending(true);
try {
await onResendEmail();
// 성공 메시지는 onResendEmail 내부에서 표시
} catch (error) {
console.error('이메일 재전송 오류:', error);
} finally {
setIsResending(false);
}
};
return (
<div className="neuro-flat p-8 mb-6">
<div className="text-center space-y-6">
<Mail className="w-16 h-16 mx-auto text-neuro-income" />
<h2 className="text-2xl font-bold"> </h2>
<p className="text-gray-600">
<strong>{email}</strong> .
.
</p>
<Alert className="bg-blue-50 border-blue-200 my-6">
<InfoIcon className="h-5 w-5 text-blue-600" />
<AlertTitle className="text-blue-700"> ?</AlertTitle>
<AlertDescription className="text-blue-600">
. .
{onResendEmail && (
<div className="mt-2">
'인증 메일 재전송' .
</div>
)}
</AlertDescription>
</Alert>
<div className="space-y-4 pt-4">
{onResendEmail && (
<Button
onClick={handleResendEmail}
variant="secondary"
className="w-full"
disabled={isResending}
>
{isResending ? (
<>
<RefreshCw className="mr-2 h-4 w-4 animate-spin" />
...
</>
) : (
<>
</>
)}
</Button>
)}
<Button
onClick={() => navigate("/login")}
variant="outline"
className="w-full"
>
</Button>
<Button
onClick={onBackToForm}
variant="ghost"
className="w-full"
>
</Button>
</div>
</div>
</div>
);
};
export default EmailConfirmation;