54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import {
|
|
createContext,
|
|
useState,
|
|
useContext,
|
|
type PropsWithChildren,
|
|
type Dispatch,
|
|
type SetStateAction,
|
|
} from 'react'
|
|
|
|
type NewsContextProperties = {
|
|
isLoginOpen: boolean
|
|
setIsLoginOpen: Dispatch<SetStateAction<boolean>>
|
|
isRegisterOpen: boolean
|
|
setIsRegisterOpen: Dispatch<SetStateAction<boolean>>
|
|
isForgetOpen: boolean
|
|
setForgetOpen: Dispatch<SetStateAction<boolean>>
|
|
isSuccessModalOpen: boolean
|
|
setIsSuccessModalOpen: Dispatch<SetStateAction<boolean>>
|
|
}
|
|
|
|
const NewsContext = createContext<NewsContextProperties | undefined>(undefined)
|
|
|
|
export const NewsProvider = ({ children }: PropsWithChildren) => {
|
|
const [isLoginOpen, setIsLoginOpen] = useState(false)
|
|
const [isRegisterOpen, setIsRegisterOpen] = useState(false)
|
|
const [isForgetOpen, setForgetOpen] = useState(false)
|
|
const [isSuccessModalOpen, setIsSuccessModalOpen] = useState(false)
|
|
|
|
return (
|
|
<NewsContext.Provider
|
|
value={{
|
|
isLoginOpen,
|
|
setIsLoginOpen,
|
|
isRegisterOpen,
|
|
setIsRegisterOpen,
|
|
isForgetOpen,
|
|
setForgetOpen,
|
|
isSuccessModalOpen,
|
|
setIsSuccessModalOpen,
|
|
}}
|
|
>
|
|
{children}
|
|
</NewsContext.Provider>
|
|
)
|
|
}
|
|
|
|
export const useNewsContext = (): NewsContextProperties => {
|
|
const context = useContext(NewsContext)
|
|
if (!context) {
|
|
throw new Error('useNewsContext must be used within a NewsProvider')
|
|
}
|
|
return context
|
|
}
|