user-context.js 867 B

123456789101112131415161718192021222324252627282930313233
  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. email: PropTypes.string,
  10. allowedFreeTrial: PropTypes.boolean,
  11. first_name: PropTypes.string,
  12. last_name: PropTypes.string,
  13. }),
  14. }),
  15. }
  16. export function UserProvider({ children }) {
  17. const [user] = useScopeValue('user', true)
  18. return <UserContext.Provider value={user}>{children}</UserContext.Provider>
  19. }
  20. UserProvider.propTypes = {
  21. children: PropTypes.any,
  22. }
  23. export function useUserContext(propTypes) {
  24. const data = useContext(UserContext)
  25. PropTypes.checkPropTypes(propTypes, data, 'data', 'UserContext.Provider')
  26. return data
  27. }