From c99a06f5c794eccd763531866dfc7859ff9f8406 Mon Sep 17 00:00:00 2001 From: Jonathan O'Riordan Date: Sat, 5 Oct 2024 18:23:41 +0100 Subject: [PATCH] Fixed: styling and refresh issue --- public/grocerease-light.png | Bin 0 -> 5372 bytes public/grocerease.png | Bin 13720 -> 5379 bytes src/api/useAuth.jsx | 25 +++++++++++++++++++++---- src/utils/ProtectedRoutes.jsx | 7 +++++-- src/views/Login.jsx | 19 +++++++++++-------- 5 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 public/grocerease-light.png diff --git a/public/grocerease-light.png b/public/grocerease-light.png new file mode 100644 index 0000000000000000000000000000000000000000..331194004282d66f97f70ef7548775a2759f7f0f GIT binary patch literal 5372 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 literal 0 HcmV?d00001 diff --git a/public/grocerease.png b/public/grocerease.png index 7531031026b11f428ff50a4cfaa26d38c84e476e..49783f86b91c2a8b3b83a70738f3c2fa25a3483a 100644 GIT binary patch literal 5379 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 nN!w3JEC7ISUeT@n=o3Q@@hXsOf literal 13720 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 diff --git a/src/api/useAuth.jsx b/src/api/useAuth.jsx index ca07ae6..45d78db 100644 --- a/src/api/useAuth.jsx +++ b/src/api/useAuth.jsx @@ -32,16 +32,33 @@ export const SignOutButton = () => ( * @see https://firebase.google.com/docs/auth/web/start#set_an_authentication_state_observer_and_get_user_data */ export const useAuth = () => { - const [user, setUser] = useState(null); + const [user, setUser] = useState(() => { + const storedUser = localStorage.getItem('user'); + return storedUser ? JSON.parse(storedUser) : null; + }); useEffect(() => { - auth.onAuthStateChanged((user) => { - setUser(user); + const unsubscribe = auth.onAuthStateChanged((user) => { if (user) { + setUser(user); + localStorage.setItem('user', JSON.stringify(user)); addUserToDatabase(user); + } else { + setUser(null); + localStorage.removeItem('user'); } }); + return () => unsubscribe(); }, []); - return { user }; + const signIn = async () => { + await signInWithPopup(auth, new GoogleAuthProvider()); + }; + + const signOut = async () => { + await auth.signOut(); + localStorage.removeItem('user'); + }; + + return { user, signIn, signOut }; }; diff --git a/src/utils/ProtectedRoutes.jsx b/src/utils/ProtectedRoutes.jsx index 699e57a..c78e76d 100644 --- a/src/utils/ProtectedRoutes.jsx +++ b/src/utils/ProtectedRoutes.jsx @@ -1,6 +1,9 @@ import { Outlet, Navigate } from 'react-router-dom'; +import { useAuth } from '../api/useAuth'; -const ProtectedRoutes = ({ user }) => { - return user ? : ; // Redirect to login if not authenticated +const ProtectedRoutes = ({}) => { + const { user } = useAuth(); + const isAuthenticated = user || localStorage.getItem('user'); + return isAuthenticated ? : ; // Redirect to login if not authenticated }; export default ProtectedRoutes; diff --git a/src/views/Login.jsx b/src/views/Login.jsx index b3fa5b4..f0fb585 100644 --- a/src/views/Login.jsx +++ b/src/views/Login.jsx @@ -1,8 +1,9 @@ -import { SignInButton, SignOutButton } from '../api/useAuth'; +import { useAuth } from '../api/useAuth'; import { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; -function Login({ user }) { +function Login() { + const { user, signIn } = useAuth(); const navigate = useNavigate(); useEffect(() => { @@ -13,13 +14,15 @@ function Login({ user }) { return (
-
-
- Shopping app logo +
+
+ Shopping app logo
-
-
- +
+
+