diff --git a/web/app/src/hooks/workspace/useAgentController.ts b/web/app/src/hooks/workspace/useAgentController.ts index a6854cf3..5afe2397 100644 --- a/web/app/src/hooks/workspace/useAgentController.ts +++ b/web/app/src/hooks/workspace/useAgentController.ts @@ -2183,10 +2183,6 @@ export function useAgentController({ if (!teamID || teamActionBusy) { return false; } - const teamTitle = item ? displayTeam(item) : teamID; - if (!window.confirm(t("teamDeleteConfirm", { title: teamTitle }))) { - return false; - } setTeamActionBusy(true); setTeamActionError(""); try { diff --git a/web/app/src/pages/TeamPage/components/TeamDetailPane/TeamDetailPane.tsx b/web/app/src/pages/TeamPage/components/TeamDetailPane/TeamDetailPane.tsx index 30ec2b93..5d152943 100644 --- a/web/app/src/pages/TeamPage/components/TeamDetailPane/TeamDetailPane.tsx +++ b/web/app/src/pages/TeamPage/components/TeamDetailPane/TeamDetailPane.tsx @@ -3,7 +3,17 @@ import type { ReactNode } from "react"; import { AgentAvatarContent, RoomAvatar } from "@/components/business"; import { ListChecks, Trash2, UserPlus, Users } from "lucide-react"; import { TaskSubtaskIndicator } from "@/components/business"; -import { Button } from "@/components/ui"; +import { + Button, + DialogBody, + DialogCloseButton, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogRoot, + DialogTitle, +} from "@/components/ui"; import { isAgentRunning } from "@/models/agents"; import type { AgentLike } from "@/models/agents"; import type { IMUser, TranslateFn, UsersById } from "@/models/conversations"; @@ -56,6 +66,17 @@ export function TeamDetailPane({ onSelectTask = () => {}, }: TeamDetailPaneProps) { const [activeTab, setActiveTab] = useState("members"); + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); + + async function handleDeleteTeam(): Promise { + if (!team) { + return; + } + const deleted = await onDeleteTeam(team); + if (deleted !== false) { + setDeleteDialogOpen(false); + } + } if (!team) { return ( @@ -107,7 +128,7 @@ export function TeamDetailPane({ variant="outlineDanger" size="md" disabled={teamActionBusy} - onClick={() => void onDeleteTeam(team)} + onClick={() => setDeleteDialogOpen(true)} >