From af32ad25654995fc9d9b12b9d65884ea8c3997a9 Mon Sep 17 00:00:00 2001 From: talksik Date: Sat, 28 May 2022 10:32:37 -0500 Subject: [PATCH] woohoo sign in flow working!!!! --- .../desktop/src/providers/AuthProvider.tsx | 31 ++++++++++++++----- .../src/providers/ElectronProvider.tsx | 2 ++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/desktop/src/providers/AuthProvider.tsx b/packages/desktop/src/providers/AuthProvider.tsx index ed62502..7be8aeb 100644 --- a/packages/desktop/src/providers/AuthProvider.tsx +++ b/packages/desktop/src/providers/AuthProvider.tsx @@ -12,13 +12,12 @@ import { setPersistence, browserLocalPersistence, User as FirebaseUser, + onAuthStateChanged, + updateCurrentUser, + getAuth, } from 'firebase/auth'; import { useSnackbar } from 'notistack'; -const provider = new GoogleAuthProvider(); - -provider.addScope('https://www.googleapis.com/auth/contacts.readonly'); - interface IAuthContext { user?: FirebaseUser; } @@ -28,6 +27,24 @@ const AuthContext = React.createContext({}); export const AuthProvider = ({ children }: { children: React.ReactNode }) => { const { enqueueSnackbar } = useSnackbar(); + // since auth.currentuser isn't updating + const [currentUser, setCurrentUser] = useState(null); + + useEffect(() => { + const authListener = onAuthStateChanged(firebaseAuth, (user) => { + console.log('auth changed!!!!', user); + + if (user) { + setCurrentUser(user); + } else { + // User is signed out + // ... + } + }); + + return () => authListener(); + }, [setCurrentUser]); + useEffect(() => { const tokenListener = window.electronAPI.once( Channels.GOOGLE_AUTH_TOKENS, @@ -47,7 +64,7 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { // The signed-in user info. const user = result.user; console.log(user); - + updateCurrentUser(firebaseAuth, user); enqueueSnackbar('Signed in! All set!', { variant: 'success' }); }); }) @@ -70,8 +87,8 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { }, [enqueueSnackbar]); return ( - - {firebaseAuth.currentUser ? <>{children} : } + + {currentUser ? <>{children} : } ); }; diff --git a/packages/desktop/src/providers/ElectronProvider.tsx b/packages/desktop/src/providers/ElectronProvider.tsx index 0f7794c..a67acb1 100644 --- a/packages/desktop/src/providers/ElectronProvider.tsx +++ b/packages/desktop/src/providers/ElectronProvider.tsx @@ -73,6 +73,8 @@ export function ElectronProvider({ children }: { children: React.ReactNode }) { return () => { // window.removeEventListener(Channels.ON_WINDOW_BLUR, blurListener); + blurListener(); + focusListener(); }; }, [setDesktopMode, setIsWindowFocused]);