diff --git a/client/src/components/task_item.tsx b/client/src/components/task_item.tsx
index 13c957f..8cf8e84 100644
--- a/client/src/components/task_item.tsx
+++ b/client/src/components/task_item.tsx
@@ -30,6 +30,7 @@ type ItemProps = {
item: Item;
onToggle?: (id: number) => void;
onUpdate: (item: Item) => void;
+ onDelete: (id: number) => void;
availableTopics: Topic[];
};
@@ -41,6 +42,7 @@ export function TaskItem({
item,
onToggle,
onUpdate,
+ onDelete,
availableTopics,
}: ItemProps) {
{
@@ -210,6 +212,8 @@ export function TaskItem({
)}
+
+ {/* Edit Button */}
{isEditing ? (
<>
@@ -222,6 +226,18 @@ export function TaskItem({
)}
+
+ {/* Delete Button */}
+
+ {!isEditing && (
+
+ )}
+
);
}
diff --git a/client/src/components/task_list.tsx b/client/src/components/task_list.tsx
index 17827c4..f9edc08 100644
--- a/client/src/components/task_list.tsx
+++ b/client/src/components/task_list.tsx
@@ -27,6 +27,7 @@ type ListProps = {
items: Item[];
onToggleTask?: (id: number) => void;
onUpdate: (item: Item) => void;
+ onDelete: (id: number) => void;
availableTopics: Topic[];
};
@@ -34,6 +35,7 @@ export function TaskList({
items,
onToggleTask,
onUpdate,
+ onDelete,
availableTopics,
}: ListProps) {
if (items.length === 0) {
@@ -52,6 +54,7 @@ export function TaskList({
item={item}
onToggle={onToggleTask}
onUpdate={onUpdate}
+ onDelete={onDelete}
availableTopics={availableTopics}
/>
diff --git a/client/src/pages/tasks.tsx b/client/src/pages/tasks.tsx
index 3da6179..eaca766 100644
--- a/client/src/pages/tasks.tsx
+++ b/client/src/pages/tasks.tsx
@@ -126,6 +126,25 @@ export default function TasksPage() {
setItems((prev) => prev.map((t) => (t.id === updated.id ? updated : t)));
}
+ async function handleTaskDeleted(id: number) {
+ if (!window.confirm("Delete this task?")) return;
+
+ try {
+ const response = await fetch(
+ `http://localhost:8000/api/planner/tasks/${id}/`,
+ { method: "DELETE" },
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to delete task");
+ }
+
+ setItems((prev) => prev.filter((item) => item.id !== id));
+ } catch (error) {
+ console.error("Error deleting task:", error);
+ }
+ }
+
return (
@@ -134,6 +153,7 @@ export default function TasksPage() {
items={items}
onToggleTask={handleToggleTask}
onUpdate={handleTaskUpdated}
+ onDelete={handleTaskDeleted}
availableTopics={availableTopics}
/>
diff --git a/server/package-lock.json b/server/package-lock.json
new file mode 100644
index 0000000..b280e8b
--- /dev/null
+++ b/server/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "server",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}