user-context.js 835 B

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