File tree 3 files changed +22
-8
lines changed
3 files changed +22
-8
lines changed Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ export function App() {
26
26
* This custom hook holds info about the current signed in user.
27
27
* Check ./api/useAuth.jsx for its implementation.
28
28
*/
29
- const { user } = useAuth ( ) ;
29
+ const { user, isLoadingUser } = useAuth ( ) ;
30
30
const userId = user ?. uid ;
31
31
const userEmail = user ?. email ;
32
32
@@ -45,7 +45,17 @@ export function App() {
45
45
return (
46
46
< Router >
47
47
< Routes >
48
- < Route path = "/" element = { < Layout listPath = { listPath } lists = { lists } /> } >
48
+ < Route
49
+ path = "/"
50
+ element = {
51
+ < Layout
52
+ listPath = { listPath }
53
+ lists = { lists }
54
+ user = { user }
55
+ isLoadingUser = { isLoadingUser }
56
+ />
57
+ }
58
+ >
49
59
< Route
50
60
index
51
61
element = {
Original file line number Diff line number Diff line change @@ -34,15 +34,18 @@ export const SignOut = () => {
34
34
*/
35
35
export const useAuth = ( ) => {
36
36
const [ user , setUser ] = useState ( null ) ;
37
+ const [ isLoadingUser , setIsLoadingUser ] = useState ( false ) ;
37
38
38
39
useEffect ( ( ) => {
40
+ setIsLoadingUser ( true ) ;
39
41
auth . onAuthStateChanged ( ( user ) => {
42
+ setIsLoadingUser ( false ) ;
40
43
setUser ( user ) ;
41
44
if ( user ) {
42
45
addUserToDatabase ( user ) ;
43
46
}
44
47
} ) ;
45
48
} , [ ] ) ;
46
49
47
- return { user } ;
50
+ return { user, isLoadingUser } ;
48
51
} ;
Original file line number Diff line number Diff line change 1
1
import { Outlet } from 'react-router-dom' ;
2
- import { SignIn , useAuth } from '../api/useAuth.jsx' ;
2
+ import { SignIn } from '../api/useAuth.jsx' ;
3
3
import { NavBar } from '../components/NavBar/NavBar.jsx' ;
4
4
import Groceries from '../assets/groceries.png' ;
5
+ import Loading from '../components/Loading.jsx' ;
5
6
6
- export function Layout ( { lists, listPath } ) {
7
- const { user } = useAuth ( ) ;
8
-
7
+ export function Layout ( { lists, listPath, user, isLoadingUser } ) {
9
8
const handleClickSignIn = ( ) => {
10
9
SignIn ( ) ;
11
10
} ;
@@ -14,7 +13,9 @@ export function Layout({ lists, listPath }) {
14
13
< div className = "w-screen flex flex-col text-poppins min-w-96 bg-puurWhite" >
15
14
< NavBar user = { user } lists = { lists } listPath = { listPath } />
16
15
< main className = "min-h-screen w-full lg:pt-16 xl:w-9/12 xl:mx-auto" >
17
- { ! ! user ? (
16
+ { isLoadingUser ? (
17
+ < Loading />
18
+ ) : ! ! user ? (
18
19
< Outlet />
19
20
) : (
20
21
< div className = "flex flex-col justify-items-center pt-12 lg:justify-between lg:m-20 lg:pt-0 lg:flex-row" >
You can’t perform that action at this time.
0 commit comments