2025-04-02 01:28:09 +00:00
|
|
|
import { create } from "zustand";
|
|
|
|
import { createJSONStorage, persist } from "zustand/middleware";
|
|
|
|
import { ProblemSchema } from "@/components/features/dashboard/admin/problemset/new/schema";
|
|
|
|
|
2025-04-04 13:13:12 +00:00
|
|
|
interface NewProblemActions {
|
|
|
|
setHydrated: (value: boolean) => void;
|
2025-04-02 01:28:09 +00:00
|
|
|
setData: (data: Partial<ProblemSchema>) => void;
|
2025-04-04 13:13:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type NewProblemState = Partial<ProblemSchema> & {
|
|
|
|
hydrated: boolean;
|
|
|
|
} & NewProblemActions;
|
2025-04-02 01:28:09 +00:00
|
|
|
|
|
|
|
export const useNewProblemStore = create<NewProblemState>()(
|
|
|
|
persist(
|
|
|
|
(set) => ({
|
2025-04-04 13:13:12 +00:00
|
|
|
hydrated: false,
|
|
|
|
setHydrated: (value) => set({ hydrated: value }),
|
2025-04-02 01:28:09 +00:00
|
|
|
setData: (data) => set(data),
|
|
|
|
}),
|
|
|
|
{
|
2025-04-04 13:13:12 +00:00
|
|
|
name: "zustand:new-problem",
|
2025-04-02 01:28:09 +00:00
|
|
|
storage: createJSONStorage(() => localStorage),
|
2025-04-04 13:13:12 +00:00
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
},
|
2025-04-02 01:28:09 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
);
|