From 71227b08909cd2921d0e6cc1dab973c1ba7b6d75 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Wed, 19 Mar 2025 15:13:34 +0800 Subject: [PATCH] feat(store): add problem editor state management with zustand --- src/store/useProblemEditorStore.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/store/useProblemEditorStore.ts diff --git a/src/store/useProblemEditorStore.ts b/src/store/useProblemEditorStore.ts new file mode 100644 index 0000000..4c7a0cb --- /dev/null +++ b/src/store/useProblemEditorStore.ts @@ -0,0 +1,26 @@ +import { create } from "zustand"; +import { EditorLanguage } from "@prisma/client"; +import { createJSONStorage, persist } from "zustand/middleware"; +import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor-language"; + +/** + * State management for problem editor settings. + */ +interface ProblemEditorState { + globalEditorLanguage: EditorLanguage; + setGlobalEditorLanguage: (language: EditorLanguage) => void; +} + +export const useProblemEditorStore = create()( + persist( + (set) => ({ + globalEditorLanguage: DEFAULT_EDITOR_LANGUAGE, + setGlobalEditorLanguage: (language) => set({ globalEditorLanguage: language }), + }), + { + name: "problem-editor", + storage: createJSONStorage(() => localStorage), + partialize: (state) => ({ globalEditorLanguage: state.globalEditorLanguage }), + } + ) +);