user-context.js 901 B

12345678910111213141516171819202122232425262728293031323334
  1. import { createContext, useContext } from 'react'
  2. import PropTypes from 'prop-types'
  3. import useScopeValue from '../hooks/use-scope-value'
  4. export const UserContext = createContext()
  5. UserContext.Provider.propTypes = {
  6. value: PropTypes.shape({
  7. user: PropTypes.shape({
  8. id: PropTypes.string,
  9. isAdmin: PropTypes.boolean,
  10. email: PropTypes.string,
  11. allowedFreeTrial: PropTypes.boolean,
  12. first_name: PropTypes.string,
  13. last_name: PropTypes.string,
  14. }),
  15. }),
  16. }
  17. export function UserProvider({ children }) {
  18. const [user] = useScopeValue('user', true)
  19. return <UserContext.Provider value={user}>{children}</UserContext.Provider>
  20. }
  21. UserProvider.propTypes = {
  22. children: PropTypes.any,
  23. }
  24. export function useUserContext(propTypes) {
  25. const data = useContext(UserContext)
  26. PropTypes.checkPropTypes(propTypes, data, 'data', 'UserContext.Provider')
  27. return data
  28. }