jj
This commit is contained in:
parent
81fbb08041
commit
7501821341
1 changed files with 8 additions and 2 deletions
|
|
@ -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');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue