ide-redesign-switcher-context.tsx 968 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {
  2. createContext,
  3. Dispatch,
  4. FC,
  5. SetStateAction,
  6. useContext,
  7. useState,
  8. } from 'react'
  9. type IdeRedesignSwitcherContextValue = {
  10. showSwitcherModal: boolean
  11. setShowSwitcherModal: Dispatch<SetStateAction<boolean>>
  12. }
  13. export const IdeRedesignSwitcherContext = createContext<
  14. IdeRedesignSwitcherContextValue | undefined
  15. >(undefined)
  16. export const IdeRedesignSwitcherProvider: FC<React.PropsWithChildren> = ({
  17. children,
  18. }) => {
  19. const [showSwitcherModal, setShowSwitcherModal] = useState(false)
  20. return (
  21. <IdeRedesignSwitcherContext.Provider
  22. value={{ showSwitcherModal, setShowSwitcherModal }}
  23. >
  24. {children}
  25. </IdeRedesignSwitcherContext.Provider>
  26. )
  27. }
  28. export const useIdeRedesignSwitcherContext = () => {
  29. const context = useContext(IdeRedesignSwitcherContext)
  30. if (!context) {
  31. throw new Error(
  32. 'useIdeRedesignSwitcherContext is only available inside IdeRedesignSwitcherProvider'
  33. )
  34. }
  35. return context
  36. }