Skip to content

Instantly share code, notes, and snippets.

@ScreamZ
Created December 24, 2019 18:22
Show Gist options
  • Save ScreamZ/6989fc86d247951835d2e3f47a8cdcf9 to your computer and use it in GitHub Desktop.
Save ScreamZ/6989fc86d247951835d2e3f47a8cdcf9 to your computer and use it in GitHub Desktop.
import firebase from "firebase/app";
import { createContext, useContext, useEffect, useState } from "react";
import { LoginPrompt } from "./components/LoginPrompt";
const AuthContext = createContext<firebase.User | null>(null);
export const AuthContextProvider: React.FC = props => {
const [user, setUser] = useState<firebase.User | null>(null);
const [loginError, setLoginError] = useState<string | null>(null);
useEffect(
() =>
firebase.auth().onAuthStateChanged(async changeUser => {
// Reset previous state
setLoginError(null);
// Disconnected, will show login prompt
if (!changeUser) {
return setUser(changeUser);
}
// Log user
setUser(changeUser);
}),
[],
);
return user ? <AuthContext.Provider value={user}>{props.children}</AuthContext.Provider> : <LoginPrompt error={loginError} />;
};
export function useAuthContext() {
return useContext(AuthContext);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment