Update AuthProvider.tsx
This commit is contained in:
@@ -19,6 +19,8 @@ import {
|
|||||||
import { useSnackbar } from 'notistack';
|
import { useSnackbar } from 'notistack';
|
||||||
import { createUser } from '../firebase/firestore';
|
import { createUser } from '../firebase/firestore';
|
||||||
|
|
||||||
|
import CircularProgress from '@mui/material/CircularProgress';
|
||||||
|
|
||||||
interface IAuthContext {
|
interface IAuthContext {
|
||||||
user?: FirebaseUser;
|
user?: FirebaseUser;
|
||||||
logout?: () => void;
|
logout?: () => void;
|
||||||
@@ -32,6 +34,9 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
// since auth.currentuser isn't updating
|
// since auth.currentuser isn't updating
|
||||||
const [currentUser, setCurrentUser] = useState<FirebaseUser>(null);
|
const [currentUser, setCurrentUser] = useState<FirebaseUser>(null);
|
||||||
|
|
||||||
|
// are we still waiting on initial auth to trigger?
|
||||||
|
const [authIniting, setAuthIniting] = useState<boolean>(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const authListener = onAuthStateChanged(firebaseAuth, async (user) => {
|
const authListener = onAuthStateChanged(firebaseAuth, async (user) => {
|
||||||
console.log('auth changed!!!!', user);
|
console.log('auth changed!!!!', user);
|
||||||
@@ -47,10 +52,12 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
enqueueSnackbar('Logged out');
|
enqueueSnackbar('Logged out');
|
||||||
setCurrentUser(null);
|
setCurrentUser(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setAuthIniting(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => authListener();
|
return () => authListener();
|
||||||
}, [setCurrentUser, enqueueSnackbar]);
|
}, [setCurrentUser, enqueueSnackbar, setAuthIniting]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const tokenListener = window.electronAPI.once(
|
const tokenListener = window.electronAPI.once(
|
||||||
@@ -95,6 +102,7 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
|
|
||||||
const logout = useCallback(() => firebaseAuth.signOut(), []);
|
const logout = useCallback(() => firebaseAuth.signOut(), []);
|
||||||
|
|
||||||
|
if (authIniting) return <CircularProgress />;
|
||||||
return (
|
return (
|
||||||
<AuthContext.Provider value={{ user: currentUser, logout }}>
|
<AuthContext.Provider value={{ user: currentUser, logout }}>
|
||||||
{currentUser ? <>{children}</> : <Login />}
|
{currentUser ? <>{children}</> : <Login />}
|
||||||
|
|||||||
Reference in New Issue
Block a user