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

30 lines
854 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 {
2023-12-28 14:04:44 +03:00
mode: UserAccessMode;
setMode: React.Dispatch<React.SetStateAction<UserAccessMode>>;
2023-12-16 19:20:26 +03:00
}
const AccessContext = createContext<IAccessModeContext | null>(null);
export const useAccessMode = () => {
const context = useContext(AccessContext);
if (!context) {
2023-12-28 14:04:44 +03:00
throw new Error('useAccessMode has to be used within <AccessModeState.Provider>');
2023-12-16 19:20:26 +03:00
}
return context;
2023-12-28 14:04:44 +03:00
};
2023-12-16 19:20:26 +03:00
interface AccessModeStateProps {
2023-12-28 14:04:44 +03:00
children: React.ReactNode;
2023-12-16 19:20:26 +03:00
}
export const AccessModeState = ({ children }: AccessModeStateProps) => {
const [mode, setMode] = useState<UserAccessMode>(UserAccessMode.READER);
2023-12-28 14:04:44 +03:00
return <AccessContext.Provider value={{ mode, setMode }}>{children}</AccessContext.Provider>;
};