fix(ui): fix NaNd ago - return full QueueItem from POST /api/queue + defensive relTime
All checks were successful
Build & Push Docker Image / test-and-build (push) Successful in 1m3s
All checks were successful
Build & Push Docker Image / test-and-build (push) Successful in 1m3s
- 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>
This commit is contained in:
@@ -58,12 +58,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|||||||
return json({
|
return json({
|
||||||
duplicate: true,
|
duplicate: true,
|
||||||
message: 'This recipe is already in the queue',
|
message: 'This recipe is already in the queue',
|
||||||
item: {
|
item: existingItem
|
||||||
id: existingItem.id,
|
|
||||||
url: existingItem.url,
|
|
||||||
status: existingItem.status,
|
|
||||||
enqueuedAt: existingItem.enqueuedAt
|
|
||||||
}
|
|
||||||
}, { status: 200 }); // 200 OK, not an error
|
}, { status: 200 }); // 200 OK, not an error
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,12 +68,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|||||||
// Return success response
|
// Return success response
|
||||||
return json({
|
return json({
|
||||||
duplicate: false,
|
duplicate: false,
|
||||||
item: {
|
item: queueItem
|
||||||
id: queueItem.id,
|
|
||||||
url: queueItem.url,
|
|
||||||
status: queueItem.status,
|
|
||||||
enqueuedAt: queueItem.enqueuedAt
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return handleApiError(error);
|
return handleApiError(error);
|
||||||
|
|||||||
@@ -22,8 +22,10 @@
|
|||||||
return m ? '@' + m[1] : '@instagram';
|
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;
|
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 < 60) return 'just now';
|
||||||
if (diff < 3600) return Math.floor(diff / 60) + 'm ago';
|
if (diff < 3600) return Math.floor(diff / 60) + 'm ago';
|
||||||
if (diff < 86400) return Math.floor(diff / 3600) + 'h ago';
|
if (diff < 86400) return Math.floor(diff / 3600) + 'h ago';
|
||||||
@@ -62,7 +64,7 @@
|
|||||||
<div class="meta">
|
<div class="meta">
|
||||||
<span class="uname">{username(item.url)}</span>
|
<span class="uname">{username(item.url)}</span>
|
||||||
<span class="sep">·</span>
|
<span class="sep">·</span>
|
||||||
<span>{relTime(item.createdAt)}</span>
|
<span>{relTime(item.createdAt ?? item.enqueuedAt)}</span>
|
||||||
</div>
|
</div>
|
||||||
{#if isError && item.error}
|
{#if isError && item.error}
|
||||||
<div class="error-line">{item.error.message?.slice(0, 60)}…</div>
|
<div class="error-line">{item.error.message?.slice(0, 60)}…</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user