28 lines
734 B
TypeScript
28 lines
734 B
TypeScript
"use client"
|
|
|
|
import { useState, useEffect } from 'react'
|
|
import { supabase } from '@/lib/supabase'
|
|
import { User } from '@supabase/supabase-js'
|
|
|
|
export function useAuth() {
|
|
const [user, setUser] = useState<User | null>(null)
|
|
const [loading, setLoading] = useState(true)
|
|
|
|
useEffect(() => {
|
|
// Get initial session
|
|
supabase.auth.getSession().then(({ data: { session } }) => {
|
|
setUser(session?.user ?? null)
|
|
setLoading(false)
|
|
})
|
|
|
|
// Listen for auth changes
|
|
const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session) => {
|
|
setUser(session?.user ?? null)
|
|
setLoading(false)
|
|
})
|
|
|
|
return () => subscription.unsubscribe()
|
|
}, [])
|
|
|
|
return { user, loading }
|
|
}
|