mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
feat(store): add zustand store for tabs state management
This commit is contained in:
parent
dcbfe4c3d7
commit
466caed5bd
36
src/store/useTabsStore.ts
Normal file
36
src/store/useTabsStore.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import { create } from "zustand";
|
||||||
|
import { persist } from "zustand/middleware";
|
||||||
|
|
||||||
|
interface TabsState {
|
||||||
|
problemTab: string;
|
||||||
|
workspaceTab: string;
|
||||||
|
hydrated: boolean;
|
||||||
|
setProblemTab: (value: string) => void;
|
||||||
|
setWorkspaceTab: (value: string) => void;
|
||||||
|
setHydrated: (value: boolean) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useTabsStore = create<TabsState>()(
|
||||||
|
persist(
|
||||||
|
(set) => ({
|
||||||
|
problemTab: "description",
|
||||||
|
workspaceTab: "editor",
|
||||||
|
hydrated: false,
|
||||||
|
setProblemTab: (value) => set({ problemTab: value }),
|
||||||
|
setWorkspaceTab: (value) => set({ workspaceTab: value }),
|
||||||
|
setHydrated: (value) => set({ hydrated: value }),
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
name: "tabs-active",
|
||||||
|
onRehydrateStorage:
|
||||||
|
() =>
|
||||||
|
(state, error) => {
|
||||||
|
if (error) {
|
||||||
|
console.error("hydrate error", error);
|
||||||
|
} else if (state) {
|
||||||
|
state.setHydrated(true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
Loading…
Reference in New Issue
Block a user