import { Task, TaskPriority, TaskStatus } from "@/model/task"; export type TaskFilter = { statuses?: TaskStatus[]; priorities?: TaskPriority[]; query?: string; tags?: string[]; }; export function filterTasks(tasks: Task[], filter: TaskFilter): Task[] { const statuses = filter.statuses; const priorities = filter.priorities; const tags = filter.tags; const query = filter.query?.trim().toLowerCase() ?? ""; return tasks.filter((task) => { if (statuses && statuses.length > 0 && !statuses.includes(task.status)) { return false; } if ( priorities && priorities.length > 0 && !priorities.includes(task.priority) ) { return false; } if (tags && tags.length > 0) { const hasAll = tags.every((tag) => task.tags.includes(tag)); if (!hasAll) return false; } if (query) { const inTitle = task.title.toLowerCase().includes(query); const inDescription = task.description.toLowerCase().includes(query); if (!inTitle && !inDescription) return false; } return true; }); }