Skip to content

Commit dd588c0

Browse files
committed
added a delete button to complete CRUD
1 parent e6fc224 commit dd588c0

4 files changed

Lines changed: 45 additions & 0 deletions

File tree

client/src/components/task_item.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type ItemProps = {
3030
item: Item;
3131
onToggle?: (id: number) => void;
3232
onUpdate: (item: Item) => void;
33+
onDelete: (id: number) => void;
3334
availableTopics: Topic[];
3435
};
3536

@@ -41,6 +42,7 @@ export function TaskItem({
4142
item,
4243
onToggle,
4344
onUpdate,
45+
onDelete,
4446
availableTopics,
4547
}: ItemProps) {
4648
{
@@ -210,6 +212,8 @@ export function TaskItem({
210212
</span>
211213
)}
212214
</div>
215+
216+
{/* Edit Button */}
213217
<div className="mt-2 flex gap-2">
214218
{isEditing ? (
215219
<>
@@ -222,6 +226,18 @@ export function TaskItem({
222226
<button onClick={startEdit}>Edit</button>
223227
)}
224228
</div>
229+
230+
{/* Delete Button */}
231+
<div>
232+
{!isEditing && (
233+
<button
234+
onClick={() => onDelete(item.id)}
235+
className="mt-2 text-red-500"
236+
>
237+
Delete Task
238+
</button>
239+
)}
240+
</div>
225241
</div>
226242
);
227243
}

client/src/components/task_list.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ type ListProps = {
2727
items: Item[];
2828
onToggleTask?: (id: number) => void;
2929
onUpdate: (item: Item) => void;
30+
onDelete: (id: number) => void;
3031
availableTopics: Topic[];
3132
};
3233

3334
export function TaskList({
3435
items,
3536
onToggleTask,
3637
onUpdate,
38+
onDelete,
3739
availableTopics,
3840
}: ListProps) {
3941
if (items.length === 0) {
@@ -52,6 +54,7 @@ export function TaskList({
5254
item={item}
5355
onToggle={onToggleTask}
5456
onUpdate={onUpdate}
57+
onDelete={onDelete}
5558
availableTopics={availableTopics}
5659
/>
5760
</li>

client/src/pages/[id]/tasks.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,25 @@ export default function TasksPage() {
103103
setItems((prev) => prev.map((t) => (t.id === updated.id ? updated : t)));
104104
}
105105

106+
async function handleTaskDeleted(id: number) {
107+
if (!window.confirm("Delete this task?")) return;
108+
109+
try {
110+
const response = await fetch(
111+
`http://localhost:8000/api/planner/tasks/${id}/`,
112+
{ method: "DELETE" },
113+
);
114+
115+
if (!response.ok) {
116+
throw new Error("Failed to delete task");
117+
}
118+
119+
setItems((prev) => prev.filter((item) => item.id !== id));
120+
} catch (error) {
121+
console.error("Error deleting task:", error);
122+
}
123+
}
124+
106125
return (
107126
<div className="container mx-auto flex flex-row items-center justify-center p-4">
108127
<div className="m-4 h-fit w-fit rounded-xl bg-zinc-700 p-4 text-center">
@@ -111,6 +130,7 @@ export default function TasksPage() {
111130
items={items}
112131
onToggleTask={handleToggleTask}
113132
onUpdate={handleTaskUpdated}
133+
onDelete={handleTaskDeleted}
114134
availableTopics={availableTopics}
115135
/>
116136
</div>

server/package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)