Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.6 kB · 62 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import { useState, useEffect } from "react";import { useStore, AgentSession } from "../../stores/useStore";
interface AgentNodeData { sessionId: string;}
export function useAgentNodeState( id: string, nodeData: AgentNodeData, session: AgentSession | undefined) { const { removeNode, removeSession, setSelectedNodeId, setSidebarOpen } = useStore();
const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);
// Close context menu on outside click useEffect(() => { const handleClick = (e: MouseEvent) => { const target = e.target as HTMLElement; if (target.closest(".context-menu-container")) { return; } setContextMenu(null); }; if (contextMenu) { setTimeout(() => { window.addEventListener("click", handleClick); }, 0); return () => window.removeEventListener("click", handleClick); } }, [contextMenu]);
const handleContextMenu = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); setContextMenu({ x: e.clientX, y: e.clientY }); };
const handleArchive = async () => { const sessionId = session?.sessionId || nodeData.sessionId; if (sessionId) { await fetch(`/api/sessions/${sessionId}`, { method: "DELETE" }); } removeSession(id); removeNode(id); setSelectedNodeId(null); setSidebarOpen(false); };
const closeContextMenu = () => { setContextMenu(null); };
return { contextMenu, handleContextMenu, handleArchive, closeContextMenu, };}