import React, {useEffect, useState, createContext, useContext} from 'react'; import {supabaseClient} from '../lib/initSupabase'; export const UserContext = createContext({ user: null, session: null, }); export const UserContextProvider = props => { const [session, setSession] = useState(null); const [user, setUser] = useState(null); useEffect(() => { const session = supabaseClient.auth.session(); setSession(session); setUser(session?.user ?? null); const {data: authListener} = supabaseClient.auth.onAuthStateChange( async (event, session) => { console.log(`Supabase auth event: ${event}`); setSession(session); setUser(session?.user ?? null); }, ); return () => { authListener.unsubscribe(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const value = { session, user, }; return ; }; export const useUser = () => { const context = useContext(UserContext); if (context === undefined) { throw new Error('useUser must be used within a UserContextProvider.'); } return context; };