mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 15:26:33 +00:00
feat(problem-store): add WebSocket to store and update actions
This commit is contained in:
parent
6df93de3ca
commit
3fbec8cd24
@ -7,12 +7,11 @@ import type {
|
|||||||
import type { editor } from "monaco-editor";
|
import type { editor } from "monaco-editor";
|
||||||
import { createStore } from "zustand/vanilla";
|
import { createStore } from "zustand/vanilla";
|
||||||
import { createJSONStorage, persist } from "zustand/middleware";
|
import { createJSONStorage, persist } from "zustand/middleware";
|
||||||
import type { MonacoLanguageClient } from "monaco-languageclient";
|
|
||||||
|
|
||||||
export type ProblemState = {
|
export type ProblemState = {
|
||||||
hydrated: boolean;
|
hydrated: boolean;
|
||||||
editor: editor.IStandaloneCodeEditor | null;
|
editor: editor.IStandaloneCodeEditor | null;
|
||||||
monacoLanguageClient: MonacoLanguageClient | null;
|
webSocket: WebSocket | null;
|
||||||
globalLang: EditorLanguage;
|
globalLang: EditorLanguage;
|
||||||
currentLang: EditorLanguage;
|
currentLang: EditorLanguage;
|
||||||
currentValue: string;
|
currentValue: string;
|
||||||
@ -25,7 +24,7 @@ export type ProblemState = {
|
|||||||
export type ProblemActions = {
|
export type ProblemActions = {
|
||||||
setHydrated: (value: boolean) => void;
|
setHydrated: (value: boolean) => void;
|
||||||
setEditor: (editor: editor.IStandaloneCodeEditor) => void;
|
setEditor: (editor: editor.IStandaloneCodeEditor) => void;
|
||||||
setMonacoLanguageClient: (client: MonacoLanguageClient | null) => void;
|
setWebSocket: (webSocket: WebSocket | null) => void;
|
||||||
setGlobalLang: (lang: EditorLanguage) => void;
|
setGlobalLang: (lang: EditorLanguage) => void;
|
||||||
setCurrentLang: (lang: EditorLanguage) => void;
|
setCurrentLang: (lang: EditorLanguage) => void;
|
||||||
setCurrentValue: (value: string) => void;
|
setCurrentValue: (value: string) => void;
|
||||||
@ -40,7 +39,7 @@ export const createProblemStore = (initState: ProblemState) => {
|
|||||||
...initState,
|
...initState,
|
||||||
setHydrated: (value) => set({ hydrated: value }),
|
setHydrated: (value) => set({ hydrated: value }),
|
||||||
setEditor: (editor) => set({ editor }),
|
setEditor: (editor) => set({ editor }),
|
||||||
setMonacoLanguageClient: (client) => set({ monacoLanguageClient: client }),
|
setWebSocket: (webSocket) => set({ webSocket }),
|
||||||
setGlobalLang: (lang) => set({ globalLang: lang }),
|
setGlobalLang: (lang) => set({ globalLang: lang }),
|
||||||
setCurrentLang: (lang) => set({ currentLang: lang }),
|
setCurrentLang: (lang) => set({ currentLang: lang }),
|
||||||
setCurrentValue: (value) => set({ currentValue: value }),
|
setCurrentValue: (value) => set({ currentValue: value }),
|
||||||
@ -51,14 +50,12 @@ export const createProblemStore = (initState: ProblemState) => {
|
|||||||
partialize: (state) => ({
|
partialize: (state) => ({
|
||||||
globalLang: state.globalLang,
|
globalLang: state.globalLang,
|
||||||
}),
|
}),
|
||||||
onRehydrateStorage: () => {
|
onRehydrateStorage: () => (state, error) => {
|
||||||
return (state, error) => {
|
if (error) {
|
||||||
if (error) {
|
console.error("An error happened during hydration", error);
|
||||||
console.error("An error happened during hydration", error);
|
} else if (state) {
|
||||||
} else if (state) {
|
state.setHydrated(true);
|
||||||
state.setHydrated(true);
|
}
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user