fix: persist verification banner state across re-renders using sessionStorage

This commit is contained in:
nmemmert committed 2026-01-16 09:57:18 -05:00
1 parent 5e3a159637
commit ee1daaca25
2 files changed
+18 -2

No files matched your search

+17 -1
View File
@@ -1,6 +1,6 @@
'use client';
import { useState } from 'react';
import { useState, useEffect } from 'react';
import { useAuth } from '@/context/AuthContext';
export default function Login() {
@@ -24,6 +24,16 @@ export default function Login() {
const [showPasswordPrompt, setShowPasswordPrompt] = useState(false);
const { login, signup, sendPasswordReset, sendVerificationEmailToUser } = useAuth();
// Persist verification state across re-renders
useEffect(() => {
const savedEmail = sessionStorage.getItem('needsVerification');
if (savedEmail) {
setNeedsVerification(true);
setResendEmail(savedEmail);
setError('Please verify your email address before logging in. Check your inbox for the verification link.');
}
}, []);
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
setError('');
@@ -73,6 +83,9 @@ export default function Login() {
} catch (err: unknown) {
const errorMessage = err instanceof Error ? err.message : 'An error occurred';
const errorCode = err instanceof Error && 'code' in err ? (err as any).code : '';
console.log('Login error:', errorMessage, 'Code:', errorCode); // Debug log
setError(errorMessage);
// Check if error is about email verification or could be related
@@ -85,6 +98,8 @@ export default function Login() {
if (isVerificationError) {
setNeedsVerification(true);
setResendEmail(email);
sessionStorage.setItem('needsVerification', email);
console.log('Setting needsVerification to true'); // Debug log
}
}
}
@@ -112,6 +127,7 @@ export default function Login() {
setError('');
setNeedsVerification(false);
sessionStorage.removeItem('needsVerification');
setShowVerificationBanner(true);
setVerificationSent(true);
setResendPassword('');