feat(store): add useAdminSettingsStore for managing admin settings

This commit is contained in:
cfngc4594 2025-03-18 19:34:45 +08:00
parent 449dfd56f2
commit 1acd915459

View File

@ -0,0 +1,39 @@
import { create } from "zustand";
import { EditorLanguage } from "@prisma/client";
import { createJSONStorage, persist } from "zustand/middleware";
import { DEFAULT_EDITOR_LANGUAGE } from "@/config/editor-language";
interface AdminSettingsState {
hydrated: boolean;
activeLanguageServerSetting: EditorLanguage;
setHydrated: (value: boolean) => void;
setActiveLanguageServerSetting: (language: EditorLanguage) => void;
}
export const useAdminSettingsStore = create<AdminSettingsState>()(
persist(
(set) => ({
hydrated: false,
activeLanguageServerSetting: DEFAULT_EDITOR_LANGUAGE,
setHydrated: (value) => set({ hydrated: value }),
setActiveLanguageServerSetting: (language) =>
set({ activeLanguageServerSetting: language }),
}),
{
name: "settings-admin",
storage: createJSONStorage(() => localStorage),
partialize: (state) => ({
activeLanguageServerSetting: state.activeLanguageServerSetting,
}),
onRehydrateStorage: () => {
return (state, error) => {
if (error) {
console.error("An error happened during hydration", error);
} else if (state) {
state.setHydrated(true);
}
};
},
}
)
);