diff --git a/lib/tasks.ts b/lib/tasks.ts index 6b7558c..48f25b9 100644 --- a/lib/tasks.ts +++ b/lib/tasks.ts @@ -303,6 +303,9 @@ export async function updateTask(id: number, input: Partial) { return null; } + const hasField = (field: K) => + Object.prototype.hasOwnProperty.call(input, field); + const mergedTags = Array.isArray(input.tags) ? input.tags.filter((tag) => typeof tag === "string") : existing.tags; const nextStatus = input.status ?? existing.status; const nextDispatchState = deriveDispatchState({ ...existing, ...input, tags: mergedTags }, existing); @@ -334,9 +337,9 @@ export async function updateTask(id: number, input: Partial) { input.priority ?? existing.priority, nextStatus, JSON.stringify(mergedTags), - input.last_dispatch_at ?? existing.last_dispatch_at, + hasField("last_dispatch_at") ? input.last_dispatch_at ?? null : existing.last_dispatch_at, acknowledgedAt, - input.last_error ?? existing.last_error, + hasField("last_error") ? input.last_error ?? null : existing.last_error, completedAt, id, ],