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