import { create } from "zustand"; import { persist } from "zustand/middleware"; interface QuizStore { listQuizes: {[key: number]: Quizes}; updateQuizesList: (newQuiz: Quizes) => void; removeQuiz:(id: number) => void; } interface Quizes { id: number, qid: string, deleted: boolean, archived: boolean, fingerprinting: boolean, repeatable: boolean, note_prevented: boolean, mail_notifications: boolean, unique_answers: boolean, name: string, description: string, config: string, status: string, limit: number, due_to: number, time_of_passing: number, pausable: boolean, version: number, version_comment: string, created_at: string, updated_at: string, question_cnt: number, passed_count: number, average_time: number, super: true, group_id: number } export const quizStore = create()( persist( (set, get) => ({ listQuizes: { 1: { "id": 0, "qid": "string", "deleted": false, "archived": true, "fingerprinting": true, "repeatable": true, "note_prevented": true, "mail_notifications": true, "unique_answers": true, "name": "string", "description": "string", "config": "string", "status": "string", "limit": 0, "due_to": 0, "time_of_passing": 0, "pausable": true, "version": 0, "version_comment": "string", "created_at": "string", "updated_at": "string", "question_cnt": 0, "passed_count": 0, "average_time": 0, "super": true, "group_id": 0 } }, updateQuizesList: (newQuiz) => { const state = get()["listQuizes"] || {}; const newState = { ...state, [newQuiz["id"]]: newQuiz }; set({listQuizes:newState}); }, removeQuiz: (id) => { const state = get()["listQuizes"] || {}; const newState = Object.entries(state).reduce((accumulator, [key, value], index, array) => { if (key !== id.toString()) { accumulator[key] = value; } return accumulator; }, {}); set({listQuizes:newState}); } }), { name: "quizes", } ) );