From 35a008bd1ecffd481a74b40f7150d5e5ecf1dc67 Mon Sep 17 00:00:00 2001 From: Pengyi Peng Date: Thu, 3 Sep 2026 02:00:32 +0800 Subject: [PATCH] fix(webhooks): include subtasks in delivery scan --- packages/livekit-cf/src/do/livestore-client/do.ts | 4 ++-- .../livekit/src/livestore/default-queries.test.ts | 12 ++++++++++++ packages/livekit/src/livestore/default-queries.ts | 7 +++++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 packages/livekit/src/livestore/default-queries.test.ts diff --git a/packages/livekit-cf/src/do/livestore-client/do.ts b/packages/livekit-cf/src/do/livestore-client/do.ts index 741fc29a5a..f3d0f30523 100644 --- a/packages/livekit-cf/src/do/livestore-client/do.ts +++ b/packages/livekit-cf/src/do/livestore-client/do.ts @@ -105,7 +105,7 @@ export class LiveStoreClientDO await this.getStore(); // // Make sure to only subscribe once // if (this.storeSubscription === undefined) { - // this.storeSubscription = store.subscribe(catalog.queries.tasks$, { + // this.storeSubscription = store.subscribe(catalog.queries.allTasks$, { // // FIXME(meng): implement this with store.events stream when it's ready // onUpdate: (tasks) => this.onTasksUpdateThrottled.call(tasks), // }); @@ -126,7 +126,7 @@ export class LiveStoreClientDO private onTasksUpdate = async (force?: boolean) => { const store = await this.getStore(); - const tasks = store.query(catalog.queries.tasks$); + const tasks = store.query(catalog.queries.allTasks$); const oneMinuteAgo = moment().subtract(1, "minute"); const updatedTasks = tasks.filter( diff --git a/packages/livekit/src/livestore/default-queries.test.ts b/packages/livekit/src/livestore/default-queries.test.ts new file mode 100644 index 0000000000..75b520bdf8 --- /dev/null +++ b/packages/livekit/src/livestore/default-queries.test.ts @@ -0,0 +1,12 @@ +import { describe, expect, it } from "vitest"; +import { allTasks$, tasks$ } from "./default-queries"; + +describe("task queries", () => { + it("keeps the task-list query scoped to root tasks", () => { + expect(tasks$.hash).toContain('.where("parentId", "=", null)'); + }); + + it("does not exclude child tasks from the all-tasks query", () => { + expect(allTasks$.hash).not.toContain("parentId"); + }); +}); diff --git a/packages/livekit/src/livestore/default-queries.ts b/packages/livekit/src/livestore/default-queries.ts index bf3492f0cc..053f80e266 100644 --- a/packages/livekit/src/livestore/default-queries.ts +++ b/packages/livekit/src/livestore/default-queries.ts @@ -24,6 +24,13 @@ export const tasks$ = queryDb( }, ); +export const allTasks$ = queryDb( + () => tables.tasks.orderBy("createdAt", "desc"), + { + label: "allTasks", + }, +); + export const makeSubTaskQuery = (taskId: string) => queryDb(() => tables.tasks.where("parentId", "=", taskId), { label: "subTasks",