mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 15:26:33 +00:00
refactor(problem-editor): modify LSP connection logic to manage WebSocket state
This commit is contained in:
parent
1796d21a09
commit
09a8276d39
@ -32,7 +32,7 @@ export function CodeEditor() {
|
||||
hydrated,
|
||||
editor,
|
||||
setEditor,
|
||||
setMonacoLanguageClient,
|
||||
setWebSocket,
|
||||
currentLang,
|
||||
currentPath,
|
||||
currentTheme,
|
||||
@ -52,19 +52,19 @@ export function CodeEditor() {
|
||||
if (monacoLanguageClientRef.current) {
|
||||
monacoLanguageClientRef.current.stop();
|
||||
monacoLanguageClientRef.current = null;
|
||||
setMonacoLanguageClient(null);
|
||||
setWebSocket(null);
|
||||
}
|
||||
|
||||
if (!currentEditorLanguageConfig || !currentLanguageServerConfig) return;
|
||||
|
||||
// Create a new language client
|
||||
try {
|
||||
const monacoLanguageClient = await connectToLanguageServer(
|
||||
const { client: monacoLanguageClient, webSocket } = await connectToLanguageServer(
|
||||
currentEditorLanguageConfig,
|
||||
currentLanguageServerConfig
|
||||
);
|
||||
monacoLanguageClientRef.current = monacoLanguageClient;
|
||||
setMonacoLanguageClient(monacoLanguageClient);
|
||||
setWebSocket(webSocket);
|
||||
} catch (error) {
|
||||
console.error("Failed to connect to LSP:", error);
|
||||
}
|
||||
@ -73,7 +73,7 @@ export function CodeEditor() {
|
||||
currentLang,
|
||||
currentLanguageServerConfig,
|
||||
editor,
|
||||
setMonacoLanguageClient,
|
||||
setWebSocket,
|
||||
]);
|
||||
|
||||
// Reconnect to the LSP whenever language or lspConfig changes
|
||||
@ -87,10 +87,10 @@ export function CodeEditor() {
|
||||
if (monacoLanguageClientRef.current) {
|
||||
monacoLanguageClientRef.current.stop();
|
||||
monacoLanguageClientRef.current = null;
|
||||
setMonacoLanguageClient(null);
|
||||
setWebSocket(null);
|
||||
}
|
||||
};
|
||||
}, [setMonacoLanguageClient]);
|
||||
}, [setWebSocket]);
|
||||
|
||||
const handleEditorWillMount = useCallback((monaco: Monaco) => {
|
||||
shikiToMonaco(highlighter, monaco);
|
||||
|
Loading…
Reference in New Issue
Block a user