app-dev/party-game/app/hooks/use-firebase-authentication.ts (49 lines of code) (raw):
/**
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {useEffect, useState} from 'react';
import {auth} from '@/app/lib/firebase-client-initialization';
import {IdTokenResult, User} from 'firebase/auth';
export const emptyUser: User = {
emailVerified: false,
isAnonymous: false,
metadata: {},
providerData: [],
refreshToken: '',
tenantId: null,
delete: function(): Promise<void> {
throw new Error('Function not implemented.');
},
getIdToken: function(): Promise<string> {
throw new Error('Function not implemented.');
},
getIdTokenResult: function(): Promise<IdTokenResult> {
throw new Error('Function not implemented.');
},
reload: function(): Promise<void> {
throw new Error('Function not implemented.');
},
toJSON: function(): object {
throw new Error('Function not implemented.');
},
displayName: null,
email: null,
phoneNumber: null,
photoURL: null,
providerId: '',
uid: '',
};
const useFirebaseAuthentication = () => {
const [authUser, setAuthUser] = useState<User>(emptyUser);
useEffect(() => {
const unlisten = auth.onAuthStateChanged(
(authUser) => {
authUser ?
setAuthUser(authUser) :
setAuthUser(emptyUser);
},
);
return () => {
unlisten();
};
}, []);
return authUser;
};
export default useFirebaseAuthentication;