From d4a103aa9cc67b3dfed237d837914e8f2e2362a6 Mon Sep 17 00:00:00 2001 From: Jeff Date: Mon, 15 Apr 2024 17:01:03 -0400 Subject: refactor: Force authentication check before page render --- src/providers/AuthContext.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/providers/AuthContext.js b/src/providers/AuthContext.js index 4b81965..a32fb01 100644 --- a/src/providers/AuthContext.js +++ b/src/providers/AuthContext.js @@ -1,22 +1,34 @@ -import React, {createContext, useEffect, useState} from 'react'; +import React, { createContext, useEffect, useState } from 'react'; + export const AuthContext = createContext(); export const AuthProvider = ({ children }) => { const [user, setUser] = useState(null); const [refreshToken, setRefreshToken] = useState(null); + const [loading, setLoading] = useState(true); useEffect(() => { - const storedUser = localStorage.getItem('user'); - const storedRefreshToken = localStorage.getItem('refreshToken'); - if (storedUser && storedRefreshToken) { - setUser(JSON.parse(storedUser)); - setRefreshToken(storedRefreshToken); - } + const initializeAuth = async () => { + try { + const storedUser = localStorage.getItem('user'); + const storedRefreshToken = localStorage.getItem('refreshToken'); + if (storedUser && storedRefreshToken) { + setUser(JSON.parse(storedUser)); + setRefreshToken(storedRefreshToken); + } + } catch (error) { + console.error('Error initializing auth:', error); + } finally { + setLoading(false); + } + }; + + initializeAuth(); }, []); const login = (userData, token) => { setUser(userData); - setRefreshToken(token) + setRefreshToken(token); localStorage.setItem('user', JSON.stringify(userData)); localStorage.setItem('refreshToken', token); }; @@ -35,9 +47,10 @@ export const AuthProvider = ({ children }) => { logout, }; + // Maybe make a loading screen animation/component to use? return ( - {children} + {loading ?
: children}
); }; -- cgit v1.2.3-70-g09d2