"use client"; import React, { createContext, FC, useContext } from "react"; import { useBoardsContext } from "@/app/deals/contexts/BoardsContext"; import { StatusesCrud, useStatusesCrud } from "@/hooks/useStatusesCrud"; import useStatusesList from "@/hooks/useStatusesList"; import { StatusSchema } from "@/lib/client"; type StatusesContextState = { statuses: StatusSchema[]; setStatuses: React.Dispatch>; refetchStatuses: () => void; statusesCrud: StatusesCrud; }; const StatusesContext = createContext( undefined ); const useStatusesContextState = () => { const { selectedBoard } = useBoardsContext(); const { statuses, setStatuses, refetch: refetchStatuses, } = useStatusesList({ boardId: selectedBoard?.id, }); const statusesCrud = useStatusesCrud({ statuses, setStatuses, refetchStatuses, boardId: selectedBoard?.id, }); return { statuses, setStatuses, refetchStatuses, statusesCrud, }; }; type StatusesContextProviderProps = { children: React.ReactNode; }; export const StatusesContextProvider: FC = ({ children, }) => { const state = useStatusesContextState(); return ( {children} ); }; export const useStatusesContext = () => { const context = useContext(StatusesContext); if (!context) { throw new Error( "useStatusesContext must be used within a StatusesContextProvider" ); } return context; };