diff --git a/src/app/(app)/dashboard/@admin/problemset/new/store.ts b/src/app/(app)/dashboard/@admin/problemset/new/store.ts index e2497f1..030d92b 100644 --- a/src/app/(app)/dashboard/@admin/problemset/new/store.ts +++ b/src/app/(app)/dashboard/@admin/problemset/new/store.ts @@ -2,18 +2,34 @@ import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { ProblemSchema } from "@/components/features/dashboard/admin/problemset/new/schema"; -type NewProblemState = Partial & { +interface NewProblemActions { + setHydrated: (value: boolean) => void; setData: (data: Partial) => void; -}; +} + +type NewProblemState = Partial & { + hydrated: boolean; +} & NewProblemActions; export const useNewProblemStore = create()( persist( (set) => ({ + hydrated: false, + setHydrated: (value) => set({ hydrated: value }), setData: (data) => set(data), }), { - name: "new-problem-storage", + name: "zustand:new-problem", storage: createJSONStorage(() => localStorage), + // eslint-disable-next-line @typescript-eslint/no-unused-vars + partialize: ({ hydrated, ...rest }) => rest, + onRehydrateStorage: () => (state, error) => { + if (error) { + console.error("An error happened during hydration", error); + } else if (state) { + state.setHydrated(true); + } + }, } ) );