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

30 lines
862 B
TypeScript
Raw Normal View History

2023-12-16 19:20:26 +03:00
'use client';
import { createContext, useContext, useState } from 'react';
2024-05-27 20:42:34 +03:00
import { UserLevel } from '@/models/user';
2023-12-16 19:20:26 +03:00
interface IAccessModeContext {
2024-05-27 20:42:34 +03:00
accessLevel: UserLevel;
setAccessLevel: React.Dispatch<React.SetStateAction<UserLevel>>;
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) => {
2024-05-27 20:42:34 +03:00
const [accessLevel, setAccessLevel] = useState<UserLevel>(UserLevel.READER);
2023-12-16 19:20:26 +03:00
2024-05-27 20:42:34 +03:00
return <AccessContext.Provider value={{ accessLevel, setAccessLevel }}>{children}</AccessContext.Provider>;
2023-12-28 14:04:44 +03:00
};