Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 4x 29x 29x 29x 29x 29x 29x 29x 29x | import { createContext, type ReactNode, useContext, useMemo } from 'react'
import { useAuthState } from '../hooks/useAuthState'
import { useSettingsState } from '../hooks/useSettingsState'
import { useRouter } from './MessageRouterContext'
type ExtensionState = ReturnType<typeof useSettingsState> & ReturnType<typeof useAuthState>
const ExtensionCtx = createContext<ExtensionState | null>(null)
export function ExtensionProvider({ children }: { children: ReactNode }) {
const router = useRouter()
const settings = useSettingsState(router)
const auth = useAuthState(router)
const value = useMemo(() => ({ ...settings, ...auth }), [settings, auth])
return <ExtensionCtx.Provider value={value}>{children}</ExtensionCtx.Provider>
}
export function useExtension(): ExtensionState {
const ctx = useContext(ExtensionCtx)
Iif (!ctx) throw new Error('useExtension must be used within ExtensionProvider')
return ctx
}
|