42 lines
895 B
TypeScript
42 lines
895 B
TypeScript
|
|
import {
|
||
|
|
createContext,
|
||
|
|
useState,
|
||
|
|
useContext,
|
||
|
|
type PropsWithChildren,
|
||
|
|
type SetStateAction,
|
||
|
|
type Dispatch,
|
||
|
|
} from 'react'
|
||
|
|
|
||
|
|
type AdminProfile = {
|
||
|
|
name: string
|
||
|
|
}
|
||
|
|
|
||
|
|
type AdminContextProperties = {
|
||
|
|
adminProfile: AdminProfile
|
||
|
|
setAdminProfile: Dispatch<SetStateAction<AdminProfile>>
|
||
|
|
}
|
||
|
|
|
||
|
|
const AdminContext = createContext<AdminContextProperties | undefined>(
|
||
|
|
undefined,
|
||
|
|
)
|
||
|
|
|
||
|
|
export const AdminProvider = ({ children }: PropsWithChildren) => {
|
||
|
|
const [adminProfile, setAdminProfile] = useState<AdminProfile>({
|
||
|
|
name: '',
|
||
|
|
})
|
||
|
|
|
||
|
|
return (
|
||
|
|
<AdminContext.Provider value={{ adminProfile, setAdminProfile }}>
|
||
|
|
{children}
|
||
|
|
</AdminContext.Provider>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
export const useAdminContext = (): AdminContextProperties => {
|
||
|
|
const context = useContext(AdminContext)
|
||
|
|
if (!context) {
|
||
|
|
throw new Error('useAdminContext must be used within a AdminProvider')
|
||
|
|
}
|
||
|
|
return context
|
||
|
|
}
|