This commit is contained in:
Hymmel 2025-10-09 11:31:21 +02:00
parent 81fbb08041
commit 7501821341

View file

@ -1,6 +1,6 @@
'use client'; 'use client';
import { FormEvent, useEffect, useMemo, useState } from 'react'; import { FormEvent, useEffect, useMemo, useRef, useState } from 'react';
const defaultApiBase = const defaultApiBase =
process.env.NODE_ENV === 'production' process.env.NODE_ENV === 'production'
@ -212,16 +212,19 @@ export default function Page() {
const [profileLoading, setProfileLoading] = useState(false); const [profileLoading, setProfileLoading] = useState(false);
const [profileSelectedBase, setProfileSelectedBase] = useState<ProfileBase | null>(null); const [profileSelectedBase, setProfileSelectedBase] = useState<ProfileBase | null>(null);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const isAuthenticatedRef = useRef(false);
useEffect(() => { useEffect(() => {
(async () => { (async () => {
try { try {
const data = await request('GET', API.me); const data = await request('GET', API.me);
setUser(data.user); setUser(data.user);
isAuthenticatedRef.current = true;
await refreshData(); await refreshData();
setView('dashboard'); setView('dashboard');
} catch (_err) { } catch (_err) {
setUser(null); setUser(null);
isAuthenticatedRef.current = false;
setView('dashboard'); setView('dashboard');
} finally { } finally {
setLoading(false); setLoading(false);
@ -230,7 +233,7 @@ export default function Page() {
}, []); }, []);
async function refreshData() { async function refreshData() {
if (!user && !document.cookie.includes('token')) { if (!isAuthenticatedRef.current) {
return; return;
} }
try { try {
@ -303,6 +306,7 @@ export default function Page() {
setErrors((prev) => ({ ...prev, login: '' })); setErrors((prev) => ({ ...prev, login: '' }));
const data = await request('POST', API.login, payload); const data = await request('POST', API.login, payload);
setUser(data.user); setUser(data.user);
isAuthenticatedRef.current = true;
await refreshData(); await refreshData();
setView('dashboard'); setView('dashboard');
} catch (error: any) { } catch (error: any) {
@ -321,6 +325,7 @@ export default function Page() {
setErrors((prev) => ({ ...prev, signup: '' })); setErrors((prev) => ({ ...prev, signup: '' }));
const data = await request('POST', API.signup, payload); const data = await request('POST', API.signup, payload);
setUser(data.user); setUser(data.user);
isAuthenticatedRef.current = true;
await refreshData(); await refreshData();
setView('dashboard'); setView('dashboard');
} catch (error: any) { } catch (error: any) {
@ -610,6 +615,7 @@ export default function Page() {
setProfileSearchTerm(''); setProfileSearchTerm('');
setProfileError(''); setProfileError('');
setProfileLoading(false); setProfileLoading(false);
isAuthenticatedRef.current = false;
setView('dashboard'); setView('dashboard');
} }
} }