ComposeProvider.tsx raw

   1  import { createContext, ReactNode, useCallback, useContext, useState } from 'react'
   2  
   3  type TComposeContext = {
   4    composeOpen: boolean
   5    openCompose: () => void
   6    closeCompose: () => void
   7  }
   8  
   9  const ComposeContext = createContext<TComposeContext>({
  10    composeOpen: false,
  11    openCompose: () => {},
  12    closeCompose: () => {}
  13  })
  14  
  15  export function useCompose() {
  16    return useContext(ComposeContext)
  17  }
  18  
  19  export function ComposeProvider({ children }: { children: ReactNode }) {
  20    const [composeOpen, setComposeOpen] = useState(false)
  21  
  22    const openCompose = useCallback(() => setComposeOpen(true), [])
  23    const closeCompose = useCallback(() => setComposeOpen(false), [])
  24  
  25    return (
  26      <ComposeContext.Provider value={{ composeOpen, openCompose, closeCompose }}>
  27        {children}
  28      </ComposeContext.Provider>
  29    )
  30  }
  31