From 1f3bfe2119622a81899d3ccaf057e9cda6e43e15 Mon Sep 17 00:00:00 2001 From: Giancarmine Salucci Date: Tue, 12 May 2026 23:00:52 +0200 Subject: [PATCH] fix(ui): fix NaNd ago - return full QueueItem from POST /api/queue + defensive relTime - POST /api/queue now returns the full QueueItem (with createdAt, phases, etc.) instead of a stripped {id,url,status,enqueuedAt} subset - TimelineRow.relTime() now handles undefined/NaN gracefully, falls back to 'just now' - TimelineRow timestamp uses item.createdAt ?? item.enqueuedAt as fallback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/routes/api/queue/+server.ts | 14 ++------------ src/routes/components/TimelineRow.svelte | 6 ++++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/routes/api/queue/+server.ts b/src/routes/api/queue/+server.ts index 07f74c0..a5aad12 100644 --- a/src/routes/api/queue/+server.ts +++ b/src/routes/api/queue/+server.ts @@ -58,12 +58,7 @@ export const POST: RequestHandler = async ({ request }) => { return json({ duplicate: true, message: 'This recipe is already in the queue', - item: { - id: existingItem.id, - url: existingItem.url, - status: existingItem.status, - enqueuedAt: existingItem.enqueuedAt - } + item: existingItem }, { status: 200 }); // 200 OK, not an error } @@ -73,12 +68,7 @@ export const POST: RequestHandler = async ({ request }) => { // Return success response return json({ duplicate: false, - item: { - id: queueItem.id, - url: queueItem.url, - status: queueItem.status, - enqueuedAt: queueItem.enqueuedAt - } + item: queueItem }); } catch (error) { return handleApiError(error); diff --git a/src/routes/components/TimelineRow.svelte b/src/routes/components/TimelineRow.svelte index f9d176f..3d96340 100644 --- a/src/routes/components/TimelineRow.svelte +++ b/src/routes/components/TimelineRow.svelte @@ -22,8 +22,10 @@ return m ? '@' + m[1] : '@instagram'; } - function relTime(iso: string): string { + function relTime(iso: string | undefined): string { + if (!iso) return 'just now'; const diff = (Date.now() - new Date(iso).getTime()) / 1000; + if (isNaN(diff) || diff < 0) return 'just now'; if (diff < 60) return 'just now'; if (diff < 3600) return Math.floor(diff / 60) + 'm ago'; if (diff < 86400) return Math.floor(diff / 3600) + 'h ago'; @@ -62,7 +64,7 @@
{username(item.url)} · - {relTime(item.createdAt)} + {relTime(item.createdAt ?? item.enqueuedAt)}
{#if isError && item.error}
{item.error.message?.slice(0, 60)}…