fix(trash): implement robust ancestor-preserving restore and filterActiveTree for trash reliability
Build and Push Docker Image / build-and-push (push) Successful in 9m29s

This commit is contained in:
2026-08-21 23:34:23 +09:00
parent fc70b1e8cb
commit 72fefe89b0
3 changed files with 59 additions and 20 deletions
+11 -4
View File
@@ -20,6 +20,7 @@ import {
findTaskInTree,
getAllTrashTasks,
filterTasksByTag,
filterActiveTree,
} from "@/lib/mockData";
interface AppShellProps {
@@ -126,10 +127,10 @@ export function AppShell({ user, isDemo = false }: AppShellProps) {
} else if (selectedTag) {
setTasks(filterTasksByTag(store.tasks, selectedTag) as Task[]);
} else if (selectedListId) {
const listTasks = (store.tasks as Task[]).filter(
(t) => !t.isDeleted && t.listId === selectedListId && (showCompleted ? true : !t.completed)
const listTasks = filterActiveTree(store.tasks as MockTask[], showCompleted).filter(
(t) => t.listId === selectedListId
);
setTasks(listTasks);
setTasks(listTasks as Task[]);
} else {
setTasks([]);
}
@@ -337,7 +338,13 @@ export function AppShell({ user, isDemo = false }: AppShellProps) {
const store = getDemoStore();
const newTasks = moveToTrashInTree(store.tasks, task.id);
saveDemoStore(store.lists, newTasks);
setTasks((prev) => prev.filter((t) => t.id !== task.id));
if (isTrashActive) {
setTasks(getAllTrashTasks(newTasks) as Task[]);
} else if (selectedListId) {
setTasks(filterActiveTree(newTasks, showCompleted).filter((t) => t.listId === selectedListId) as Task[]);
} else if (selectedTag) {
setTasks(filterTasksByTag(newTasks, selectedTag) as Task[]);
}
if (selectedTask?.id === task.id) setSelectedTask(null);
} else {
setTasks((prev) => prev.filter((t) => t.id !== task.id));