1- import { createContext , FunctionComponent , useState , useEffect } from 'react'
1+ import { createContext , FunctionComponent , useState , useEffect , useCallback } from 'react'
22import Router from 'next/router'
3- import { User } from '@supabase/supabase-js'
3+ import { User , Session , AuthChangeEvent } from '@supabase/supabase-js'
44import { supabase } from '~/lib/supabase'
55import { useMessage } from '~/lib/message'
66import { SupabaseAuthPayload } from './auth.types'
@@ -61,6 +61,15 @@ export const AuthProvider: FunctionComponent = ({
6161 }
6262
6363 const signOut = async ( ) => await supabase . auth . signOut ( )
64+
65+ const setServerSession = async ( event : AuthChangeEvent , session : Session ) => {
66+ await fetch ( '/api/auth' , {
67+ method : 'POST' ,
68+ headers : new Headers ( { 'Content-Type' : 'application/json' } ) ,
69+ credentials : 'same-origin' ,
70+ body : JSON . stringify ( { event, session } ) ,
71+ } )
72+ }
6473
6574 useEffect ( ( ) => {
6675 const user = supabase . auth . user ( )
@@ -78,6 +87,7 @@ export const AuthProvider: FunctionComponent = ({
7887 async ( event , session ) => {
7988 const user = session ?. user ! ?? null
8089 setUserLoading ( false )
90+ await setServerSession ( event , session )
8191 if ( user ) {
8292 setUser ( user )
8393 setLoggedin ( true )
0 commit comments