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