ConceptPortal-public/rsconcept/frontend/src/context/AccessModeContext.tsx

36 lines
881 B
TypeScript
Raw Normal View History

2023-12-16 19:20:26 +03:00
'use client';
import { createContext, useContext, useState } from 'react';
2023-12-26 14:23:51 +03:00
import { UserAccessMode } from '@/models/miscellaneous';
2023-12-16 19:20:26 +03:00
interface IAccessModeContext {
mode: UserAccessMode
setMode: React.Dispatch<React.SetStateAction<UserAccessMode>>
}
const AccessContext = createContext<IAccessModeContext | null>(null);
export const useAccessMode = () => {
const context = useContext(AccessContext);
if (!context) {
throw new Error(
'useAccessMode has to be used within <AccessModeState.Provider>'
);
}
return context;
}
interface AccessModeStateProps {
children: React.ReactNode
}
export const AccessModeState = ({ children }: AccessModeStateProps) => {
const [mode, setMode] = useState<UserAccessMode>(UserAccessMode.READER);
return (
<AccessContext.Provider
value={{ mode, setMode }}
>
{children}
</AccessContext.Provider>);
};