Added a base layout with a nav bar

This commit is contained in:
2020-10-26 12:30:21 +00:00
parent eef551bf7a
commit a8f5fe8db4
11 changed files with 1002 additions and 137 deletions

View File

@@ -1,20 +1,20 @@
import { useEffect, useState } from 'react'
import { useRouter } from 'next/router'
import firebase from 'firebase/app'
import 'firebase/auth'
import initFirebase from '../auth/initFirebase'
import { useEffect, useState } from "react";
import { useRouter } from "next/router";
import firebase from "firebase/app";
import "firebase/auth";
import initFirebase from "../auth/initFirebase";
import {
removeUserCookie,
setUserCookie,
getUserFromCookie,
} from './userCookies'
import { mapUserData } from './mapUserData'
} from "./userCookies";
import { mapUserData } from "./mapUserData";
initFirebase()
initFirebase();
const useUser = () => {
const [user, setUser] = useState()
const router = useRouter()
const [user, setUser] = useState();
const router = useRouter();
const logout = async () => {
return firebase
@@ -22,12 +22,12 @@ const useUser = () => {
.signOut()
.then(() => {
// Sign-out successful.
router.push('/auth')
router.push("/auth");
})
.catch((e) => {
console.error(e)
})
}
console.error(e);
});
};
useEffect(() => {
// Firebase updates the id token every hour, this
@@ -35,29 +35,29 @@ const useUser = () => {
// both kept up to date
const cancelAuthListener = firebase.auth().onIdTokenChanged((user) => {
if (user) {
const userData = mapUserData(user)
setUserCookie(userData)
setUser(userData)
const userData = mapUserData(user);
setUserCookie(userData);
setUser(userData);
} else {
removeUserCookie()
setUser()
removeUserCookie();
setUser();
}
})
});
const userFromCookie = getUserFromCookie()
const userFromCookie = getUserFromCookie();
if (!userFromCookie) {
router.push('/')
return
// router.push('/')
return;
}
setUser(userFromCookie)
setUser(userFromCookie);
return () => {
cancelAuthListener()
}
cancelAuthListener();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
}, []);
return { user, logout }
}
return { user, logout };
};
export { useUser }
export { useUser };