"use client"; import setAvatarStore from "@/avatar/setAvatarStore"; import setEtcStore from "@/etc/setEtcStore"; import setHallStore from "@/hall/setHallStore"; import setNoteStore from "@/note/setNoteStore"; import setSiteStore from "@/site/setSiteStore"; import { useLocalObservable } from "mobx-react-lite"; import { createContext, FC, PropsWithChildren, useContext } from "react"; type QwilightStore = { noteStore: ReturnType<typeof setNoteStore>; siteStore: ReturnType<typeof setSiteStore>; avatarStore: ReturnType<typeof setAvatarStore>; hallStore: ReturnType<typeof setHallStore>; etcStore: ReturnType<typeof setEtcStore>; }; const qwilightStore = createContext<QwilightStore>({} as QwilightStore); const { Provider } = qwilightStore; export const Stores: FC<PropsWithChildren> = ({ children }) => ( <Provider value={{ noteStore: useLocalObservable(setNoteStore), siteStore: useLocalObservable(setSiteStore), avatarStore: useLocalObservable(setAvatarStore), hallStore: useLocalObservable(setHallStore), etcStore: useLocalObservable(setEtcStore), }} > {children} </Provider> ); export const useSiteStore = () => useContext(qwilightStore).siteStore; export const useNoteStore = () => useContext(qwilightStore).noteStore; export const useAvatarStore = () => useContext(qwilightStore).avatarStore; export const useHallStore = () => useContext(qwilightStore).hallStore; export const useEtcStore = () => useContext(qwilightStore).etcStore;