From 1893faad007c5f524bbab020eb706d51cb3f43f8 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Sat, 1 Mar 2025 23:14:29 +0800 Subject: [PATCH] feat(store): persist language setting in code editor state --- src/store/useCodeEditor.ts | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/store/useCodeEditor.ts b/src/store/useCodeEditor.ts index 613c4e8..aae083e 100644 --- a/src/store/useCodeEditor.ts +++ b/src/store/useCodeEditor.ts @@ -3,6 +3,7 @@ import * as monaco from "monaco-editor"; import { CODE_EDITOR_OPTIONS } from "@/constants/option"; import { SupportedLanguage } from "@/constants/language"; import { MonacoLanguageClient } from "monaco-languageclient"; +import { persist, createJSONStorage } from "zustand/middleware"; import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor/language"; interface CodeEditorState { @@ -18,18 +19,27 @@ interface CodeEditorState { setResult: (result: string) => void; } -export const useCodeEditorState = create((set) => ({ - editor: null, - language: DEFAULT_EDITOR_LANGUAGE, - languageClient: null, - loading: true, - result: null, - setEditor: (editor) => set({ editor }), - setLanguage: (language) => set({ language }), - setLanguageClient: (languageClient) => set({ languageClient }), - setLoading: (loading) => set({ loading }), - setResult: (result) => set({ result }), -})); +export const useCodeEditorState = create()( + persist( + (set) => ({ + editor: null, + language: DEFAULT_EDITOR_LANGUAGE, + languageClient: null, + loading: true, + result: null, + setEditor: (editor) => set({ editor }), + setLanguage: (language) => set({ language }), + setLanguageClient: (languageClient) => set({ languageClient }), + setLoading: (loading) => set({ loading }), + setResult: (result) => set({ result }), + }), + { + name: "code-editor-language", + storage: createJSONStorage(() => localStorage), + partialize: (state) => ({ language: state.language }), + } + ) +); export const useCodeEditorOption = create((set) => ({ fontSize: CODE_EDITOR_OPTIONS.fontSize,