From 466caed5bda706b7a21878e83165787c2b6f890b Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Mon, 3 Mar 2025 13:55:33 +0800 Subject: [PATCH] feat(store): add zustand store for tabs state management --- src/store/useTabsStore.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/store/useTabsStore.ts diff --git a/src/store/useTabsStore.ts b/src/store/useTabsStore.ts new file mode 100644 index 0000000..9ef48f8 --- /dev/null +++ b/src/store/useTabsStore.ts @@ -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()( + 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); + } + }, + } + ) +);