application-context.js 1013 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, { createContext, useContext } from 'react'
  2. import PropTypes from 'prop-types'
  3. export const ApplicationContext = createContext()
  4. ApplicationContext.Provider.propTypes = {
  5. value: PropTypes.shape({
  6. user: PropTypes.shape({
  7. id: PropTypes.string.isRequired,
  8. firstName: PropTypes.string,
  9. lastName: PropTypes.string,
  10. }),
  11. gitBridgePublicBaseUrl: PropTypes.string.isRequired,
  12. }),
  13. }
  14. export function ApplicationProvider({ children }) {
  15. const applicationContextValue = {
  16. user: window.user,
  17. gitBridgePublicBaseUrl: window.gitBridgePublicBaseUrl,
  18. }
  19. return (
  20. <ApplicationContext.Provider value={applicationContextValue}>
  21. {children}
  22. </ApplicationContext.Provider>
  23. )
  24. }
  25. ApplicationProvider.propTypes = {
  26. children: PropTypes.any,
  27. }
  28. export function useApplicationContext(propTypes) {
  29. const data = useContext(ApplicationContext)
  30. PropTypes.checkPropTypes(
  31. propTypes,
  32. data,
  33. 'data',
  34. 'ApplicationContext.Provider'
  35. )
  36. return data
  37. }