export function useAuthStateChangeSubscription() {
const fetcher = useFetcher()
const [searchParams] = useSearchParams()
const redirectTo = searchParams.get('redirectTo') ?? ROUTE_HOME
useEffect(() => {
const {
data: { subscription: listener },
} = supabase.auth.onAuthStateChange((event, session) => {
console.log(event)
if (event === 'SIGNED_IN') {
const accessToken = session?.access_token
const refreshToken = session?.refresh_token
if (!accessToken) return
const formData = new FormData()
formData.append('accessToken', accessToken)
formData.append('refreshToken', refreshToken || '')
formData.append('redirectTo', redirectTo)
fetcher.submit(formData, {
method: 'post',
action: '/api/auth/login',
replace: true,
})
}
if (event === 'SIGNED_OUT') {
fetcher.submit(null, {
method: 'post',
action: '/api/auth/logout',
replace: true,
})
}
})
return () => {
listener?.unsubscribe()
}
}, [fetcher, redirectTo])
}
export function useAuthStateChangeSubscription() {
const fetcher = useFetcher()
const [searchParams] = useSearchParams()
const redirectTo = searchParams.get('redirectTo') ?? ROUTE_HOME
useEffect(() => {
const {
data: { subscription: listener },
} = supabase.auth.onAuthStateChange((event, session) => {
console.log(event)
if (event === 'SIGNED_IN') {
const accessToken = session?.access_token
const refreshToken = session?.refresh_token
if (!accessToken) return
const formData = new FormData()
formData.append('accessToken', accessToken)
formData.append('refreshToken', refreshToken || '')
formData.append('redirectTo', redirectTo)
fetcher.submit(formData, {
method: 'post',
action: '/api/auth/login',
replace: true,
})
}
if (event === 'SIGNED_OUT') {
fetcher.submit(null, {
method: 'post',
action: '/api/auth/logout',
replace: true,
})
}
})
return () => {
listener?.unsubscribe()
}
}, [fetcher, redirectTo])
}