42 lines
900 B
TypeScript
42 lines
900 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: 'Admin',
|
|
})
|
|
|
|
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
|
|
}
|