1
0
mirror of synced 2026-01-06 15:01:04 -05:00
Files
docs/components/hooks/useSession.ts
Kevin Heis 56aa9ea094 Move use session to its own hook file (#29641)
* Move use session to its own hook file

* Trying useSWR

* Try one hour html cache

* blah blah lint

* Update to include loading state

* Update components/hooks/useSession.ts

Co-authored-by: Peter Bengtsson <peterbe@github.com>

Co-authored-by: Peter Bengtsson <peterbe@github.com>
2022-08-05 14:47:10 +00:00

42 lines
938 B
TypeScript

import type { ThemeProviderProps } from '@primer/react'
import useSWR from 'swr'
export default async function fetcher<JSON = any>(
input: RequestInfo,
init?: RequestInit
): Promise<JSON> {
const res = await fetch(input, init)
return res.json()
}
type LanguageItem = {
name: string
nativeName?: string
code: string
hreflang: string
wip?: boolean
}
export type Session = {
isSignedIn: boolean
csrfToken: string
userLanguage: string // en, es, ja, cn
languages: Record<string, LanguageItem>
theme: {
colorMode: Pick<ThemeProviderProps, 'colorMode'>
nightTheme: string
dayTheme: string
}
themeCss: {
colorMode: Pick<ThemeProviderProps, 'colorMode'>
nightTheme: string
dayTheme: string
}
}
// React hook version
export function useSession() {
const { data: session, error } = useSWR<Session>('/api/session', fetcher)
return { session, isLoadingSession: !error && !session }
}