mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
feat(store): persist language setting in code editor state
This commit is contained in:
parent
10a0c7ab99
commit
1893faad00
@ -3,6 +3,7 @@ import * as monaco from "monaco-editor";
|
|||||||
import { CODE_EDITOR_OPTIONS } from "@/constants/option";
|
import { CODE_EDITOR_OPTIONS } from "@/constants/option";
|
||||||
import { SupportedLanguage } from "@/constants/language";
|
import { SupportedLanguage } from "@/constants/language";
|
||||||
import { MonacoLanguageClient } from "monaco-languageclient";
|
import { MonacoLanguageClient } from "monaco-languageclient";
|
||||||
|
import { persist, createJSONStorage } from "zustand/middleware";
|
||||||
import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor/language";
|
import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor/language";
|
||||||
|
|
||||||
interface CodeEditorState {
|
interface CodeEditorState {
|
||||||
@ -18,18 +19,27 @@ interface CodeEditorState {
|
|||||||
setResult: (result: string) => void;
|
setResult: (result: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useCodeEditorState = create<CodeEditorState>((set) => ({
|
export const useCodeEditorState = create<CodeEditorState>()(
|
||||||
editor: null,
|
persist(
|
||||||
language: DEFAULT_EDITOR_LANGUAGE,
|
(set) => ({
|
||||||
languageClient: null,
|
editor: null,
|
||||||
loading: true,
|
language: DEFAULT_EDITOR_LANGUAGE,
|
||||||
result: null,
|
languageClient: null,
|
||||||
setEditor: (editor) => set({ editor }),
|
loading: true,
|
||||||
setLanguage: (language) => set({ language }),
|
result: null,
|
||||||
setLanguageClient: (languageClient) => set({ languageClient }),
|
setEditor: (editor) => set({ editor }),
|
||||||
setLoading: (loading) => set({ loading }),
|
setLanguage: (language) => set({ language }),
|
||||||
setResult: (result) => set({ result }),
|
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<monaco.editor.IEditorConstructionOptions>((set) => ({
|
export const useCodeEditorOption = create<monaco.editor.IEditorConstructionOptions>((set) => ({
|
||||||
fontSize: CODE_EDITOR_OPTIONS.fontSize,
|
fontSize: CODE_EDITOR_OPTIONS.fontSize,
|
||||||
|
Loading…
Reference in New Issue
Block a user