64 lines
1.8 KiB
TypeScript
Raw Normal View History

import {
createContext,
useState,
useContext,
type PropsWithChildren,
type Dispatch,
type SetStateAction,
} from 'react'
import type { ModalProperties } from '~/components/popup/success-modal'
export type NewsContextProperties = {
isLoginOpen: boolean
setIsLoginOpen: Dispatch<SetStateAction<boolean>>
isRegisterOpen: boolean
setIsRegisterOpen: Dispatch<SetStateAction<boolean>>
2025-02-22 21:17:56 +07:00
isForgetOpen: boolean
setForgetOpen: Dispatch<SetStateAction<boolean>>
isSuccessModalOpen?: ModalProperties['isOpen']
setIsSuccessModalOpen?: Dispatch<
SetStateAction<ModalProperties['isOpen'] | undefined>
>
isInitSubscribeOpen: boolean
setIsInitSubscribeOpen: Dispatch<SetStateAction<boolean>>
}
const NewsContext = createContext<NewsContextProperties | undefined>(undefined)
export const NewsProvider = ({ children }: PropsWithChildren) => {
const [isLoginOpen, setIsLoginOpen] = useState(false)
const [isRegisterOpen, setIsRegisterOpen] = useState(false)
2025-02-22 21:17:56 +07:00
const [isForgetOpen, setForgetOpen] = useState(false)
const [isSuccessModalOpen, setIsSuccessModalOpen] =
useState<ModalProperties['isOpen']>()
const [isInitSubscribeOpen, setIsInitSubscribeOpen] = useState(false)
return (
<NewsContext.Provider
2025-02-22 21:17:56 +07:00
value={{
isLoginOpen,
setIsLoginOpen,
isRegisterOpen,
setIsRegisterOpen,
isForgetOpen,
setForgetOpen,
isSuccessModalOpen,
setIsSuccessModalOpen,
isInitSubscribeOpen,
setIsInitSubscribeOpen,
2025-02-22 21:17:56 +07:00
}}
>
{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
}