From e00741e48c88ec56697fdead389263ad84aba8c6 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Wed, 26 Feb 2025 15:57:49 +0800 Subject: [PATCH] feat(code-editor): add loading state management to improve editor initialization --- src/store/useCodeEditor.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/store/useCodeEditor.ts b/src/store/useCodeEditor.ts index 2c4694f..0c08585 100644 --- a/src/store/useCodeEditor.ts +++ b/src/store/useCodeEditor.ts @@ -1,26 +1,30 @@ import { create } from "zustand"; import * as monaco from "monaco-editor"; -import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor/language"; import { CODE_EDITOR_OPTIONS } from "@/constants/option"; import { SupportedLanguage } from "@/constants/language"; import { MonacoLanguageClient } from "monaco-languageclient"; +import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor/language"; interface CodeEditorState { editor: monaco.editor.IStandaloneCodeEditor | null; language: SupportedLanguage; languageClient: MonacoLanguageClient | null; + loading: boolean; setEditor: (editor: monaco.editor.IStandaloneCodeEditor | null) => void; setLanguage: (language: SupportedLanguage) => void; setLanguageClient: (languageClient: MonacoLanguageClient | null) => void; + setLoading: (loading: boolean) => void; } export const useCodeEditorState = create((set) => ({ editor: null, language: DEFAULT_EDITOR_LANGUAGE, languageClient: null, + loading: true, setEditor: (editor) => set({ editor }), setLanguage: (language) => set({ language }), setLanguageClient: (languageClient) => set({ languageClient }), + setLoading: (loading) => set({ loading }), })); export const useCodeEditorOption = create((set) => ({ @@ -29,3 +33,9 @@ export const useCodeEditorOption = create set({ fontSize }), setLineHeight: (lineHeight: number) => set({ lineHeight }), })); + +async function initializeEditor() { + useCodeEditorState.getState().setLoading(false); +} + +initializeEditor();