"use client";

import setForumStore from "@/app/[language]/forum/state/setForumStore";
import setWantStore from "@/app/[language]/want/state/setWantStore";
import setTaehuiStore from "@/state/setTaehuiStore";
import { useLocalObservable } from "mobx-react-lite";
import { createContext, FC, PropsWithChildren, useContext } from "react";

type MainStore = {
  taehuiStore: ReturnType<typeof setTaehuiStore>;
  wantStore: ReturnType<typeof setWantStore>;
  forumStore: ReturnType<typeof setForumStore>;
};

const mainStore = createContext<MainStore>({} as MainStore);
const { Provider } = mainStore;

export const Stores: FC<PropsWithChildren> = ({ children }) => (
  <Provider
    value={{
      taehuiStore: useLocalObservable(setTaehuiStore),
      wantStore: useLocalObservable(setWantStore),
      forumStore: useLocalObservable(setForumStore),
    }}
  >
    {children}
  </Provider>
);

export const useWantStore = () => useContext(mainStore).wantStore;

export const useTaehuiStore = () => useContext(mainStore).taehuiStore;

export const useForumStore = () => useContext(mainStore).forumStore;
