user-context.tsx 648 B

1234567891011121314151617181920212223
  1. import { createContext, FC, useContext, useMemo } from 'react'
  2. import getMeta from '../../utils/meta'
  3. import { User } from '../../../../types/user'
  4. export const UserContext = createContext<User | undefined>(undefined)
  5. export const UserProvider: FC = ({ children }) => {
  6. const user = useMemo(() => getMeta('ol-user'), [])
  7. return <UserContext.Provider value={user}>{children}</UserContext.Provider>
  8. }
  9. export function useUserContext() {
  10. const context = useContext(UserContext)
  11. if (!context) {
  12. throw new Error(
  13. 'useUserContext is only available inside UserContext, or `ol-user` meta is not defined'
  14. )
  15. }
  16. return context
  17. }