import { Dispatch, SetStateAction, useEffect } from "react"; import { eventContextMenu } from "shared/lib/slickgrid"; import { makeVisible } from "entities/popup"; import { CONTEXT_MENU } from "../../model"; export function useSubscribeToEvent( setIsOpened: Dispatch>, tableId: string, ) { useEffect(() => { function callback() { const { table, x, y } = eventContextMenu; if (table?.id !== tableId) return; setIsOpened(true); setTimeout(() => { const menu = document.getElementById(CONTEXT_MENU); if (!menu) return; makeVisible(menu, x, y); }, 0); } eventContextMenu.subscribe(callback); return () => { eventContextMenu.unsubscribe(callback); }; }, [tableId]); }