feat(tasks): filter by parent note

This commit is contained in:
Elian Doran 2025-02-19 22:13:13 +02:00
parent bb822126cd
commit c0d3e8d834
No known key found for this signature in database
6 changed files with 12 additions and 12 deletions

View File

@ -217,9 +217,7 @@ export default class Becca {
}
getTasks(): BTask[] {
return Object
.values(this.tasks)
.filter((task) => !task.isDone);
return Object.values(this.tasks);
}
getTask(taskId: string): BTask | null {

View File

@ -372,8 +372,8 @@ class FrocaImpl implements Froca {
});
}
async getTasks() {
const taskRows = await server.get<FTaskRow[]>(`tasks`);
async getTasks(parentNoteId: string) {
const taskRows = await server.get<FTaskRow[]>(`tasks/${parentNoteId}`);
return this.processTaskRow(taskRows);
}

View File

@ -108,13 +108,13 @@ export default class TaskListWidget extends TypeWidget {
async doRefresh(note: FNote) {
this.$widget.show();
if (!this.note) {
if (!this.note || !this.noteId) {
return;
}
this.$taskContainer.html("");
const tasks = await froca.getTasks();
const tasks = await froca.getTasks(this.noteId);
for (const task of tasks) {
this.$taskContainer.append($(buildTask(task)));
}

View File

@ -1,8 +1,9 @@
import type { Request } from "express";
import * as tasksService from "../../services/tasks.js";
export function getTasks() {
return tasksService.getTasks();
export function getTasks(req: Request) {
const { parentNoteId } = req.params;
return tasksService.getTasks(parentNoteId);
}
export function createNewTask(req: Request) {

View File

@ -280,7 +280,7 @@ function register(app: express.Application) {
apiRoute(PATCH, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.patchToken);
apiRoute(DEL, "/api/etapi-tokens/:etapiTokenId", etapiTokensApiRoutes.deleteToken);
apiRoute(GET, "/api/tasks", tasksRoute.getTasks);
apiRoute(GET, "/api/tasks/:parentNoteId", tasksRoute.getTasks);
apiRoute(PST, "/api/tasks", tasksRoute.createNewTask);
apiRoute(PST, "/api/tasks/:taskId/toggle", tasksRoute.toggleTaskDone);

View File

@ -1,8 +1,9 @@
import becca from "../becca/becca.js";
import BTask from "../becca/entities/btask.js";
export function getTasks() {
return becca.getTasks();
export function getTasks(parentNoteId: string) {
return becca.getTasks()
.filter((task) => task.parentNoteId === parentNoteId && !task.isDone);
}
interface CreateTaskParams {