diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 824d7a85ea..05faa13834 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -2309,16 +2309,6 @@ export class ClineProvider implements vscode.WebviewViewProvider { } async deleteTaskWithId(id: string) { - const answer = await vscode.window.showInformationMessage( - "Are you sure you want to delete this task? This action cannot be undone.", - { modal: true }, - "Delete", - ) - - if (answer !== "Delete") { - return - } - if (id === this.cline?.taskId) { await this.clearTask() } diff --git a/webview-ui/src/components/history/DeleteTaskDialog.tsx b/webview-ui/src/components/history/DeleteTaskDialog.tsx new file mode 100644 index 0000000000..b40adeae3d --- /dev/null +++ b/webview-ui/src/components/history/DeleteTaskDialog.tsx @@ -0,0 +1,49 @@ +import React from "react" +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog" +import { Button } from "@/components/ui" +import { vscode } from "@/utils/vscode" + +interface DeleteTaskDialogProps { + taskId: string + open: boolean + onOpenChange: (open: boolean) => void +} + +export const DeleteTaskDialog = ({ taskId, open, onOpenChange }: DeleteTaskDialogProps) => { + const handleDelete = () => { + vscode.postMessage({ type: "deleteTaskWithId", text: taskId }) + onOpenChange(false) + } + + return ( + + + + Delete Task + + Are you sure you want to delete this task? This action cannot be undone. + + + + + + + + + + + + + ) +} diff --git a/webview-ui/src/components/history/HistoryView.tsx b/webview-ui/src/components/history/HistoryView.tsx index 38ca14df46..ca60e1fcb8 100644 --- a/webview-ui/src/components/history/HistoryView.tsx +++ b/webview-ui/src/components/history/HistoryView.tsx @@ -1,4 +1,5 @@ import React, { memo, useMemo, useState, useEffect } from "react" +import { DeleteTaskDialog } from "./DeleteTaskDialog" import { Fzf } from "fzf" import prettyBytes from "pretty-bytes" import { Virtuoso } from "react-virtuoso" @@ -37,8 +38,12 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { vscode.postMessage({ type: "showTaskWithId", text: id }) } + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false) + const [taskToDelete, setTaskToDelete] = useState(null) + const handleDeleteHistoryItem = (id: string) => { - vscode.postMessage({ type: "deleteTaskWithId", text: id }) + setTaskToDelete(id) + setDeleteDialogOpen(true) } const formatDate = (timestamp: number) => { @@ -398,6 +403,18 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { )} /> + {taskToDelete && ( + { + setDeleteDialogOpen(open) + if (!open) { + setTaskToDelete(null) + } + }} + /> + )} ) }