35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import {Module} from "@/interfaces";
|
|
import {Exam, UserSolution} from "@/interfaces/exam";
|
|
import {Stat} from "@/interfaces/user";
|
|
import {create} from "zustand";
|
|
|
|
export interface ExamState {
|
|
exams: Exam[];
|
|
userSolutions: UserSolution[];
|
|
showSolutions: boolean;
|
|
selectedModules: Module[];
|
|
setUserSolutions: (userSolutions: UserSolution[]) => void;
|
|
setExams: (exams: Exam[]) => void;
|
|
setShowSolutions: (showSolutions: boolean) => void;
|
|
setSelectedModules: (modules: Module[]) => void;
|
|
reset: () => void;
|
|
}
|
|
|
|
export const initialState = {
|
|
exams: [],
|
|
userSolutions: [],
|
|
showSolutions: false,
|
|
selectedModules: [],
|
|
};
|
|
|
|
const useExamStore = create<ExamState>((set) => ({
|
|
...initialState,
|
|
setUserSolutions: (userSolutions: UserSolution[]) => set(() => ({userSolutions})),
|
|
setExams: (exams: Exam[]) => set(() => ({exams})),
|
|
setShowSolutions: (showSolutions: boolean) => set(() => ({showSolutions})),
|
|
setSelectedModules: (modules: Module[]) => set(() => ({selectedModules: modules})),
|
|
reset: () => set(() => initialState),
|
|
}));
|
|
|
|
export default useExamStore;
|