fix: persist verification banner state across re-renders using sessionStorage
This commit is contained in:
1 parent
5e3a159637
commit
ee1daaca25
2 files changed
+18
-2
No files matched your search
@@ -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('');
|
||||
|
||||
Reference in new issue
Block a user