From d025d07e0741da42e425017238197b606d24f30e Mon Sep 17 00:00:00 2001 From: Zerebos Date: Thu, 21 May 2026 00:53:11 +0000 Subject: [PATCH] Fix updates page data flow --- .../updates/components/Updates.svelte | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/features/updates/components/Updates.svelte b/src/features/updates/components/Updates.svelte index 636a290..5c874e9 100644 --- a/src/features/updates/components/Updates.svelte +++ b/src/features/updates/components/Updates.svelte @@ -33,11 +33,15 @@ ctrl?.abort(); }); + function fetchedAtMs(item: Pick): number { + const ts = item.fetchedAt ? new Date(item.fetchedAt).getTime() : Date.now(); + return Number.isFinite(ts) ? ts : Date.now(); + } + const groups = $derived.by(() => { const map = new Map(); for (const item of updates) { - const ts = item.fetchedAt ? new Date(item.fetchedAt).getTime() : 0; - const label = dayLabel(Number.isFinite(ts) ? ts : 0); + const label = dayLabel(fetchedAtMs(item)); if (!map.has(label)) map.set(label, []); map.get(label)!.push(item); } @@ -61,23 +65,24 @@ async function loadUpdates() { ctrl?.abort(); - ctrl = new AbortController(); + const nextCtrl = new AbortController(); + ctrl = nextCtrl; loading = true; error = null; try { - const res = await gql<{ chapters: { nodes: RecentUpdate[] } }>(GET_RECENTLY_UPDATED, {}, ctrl.signal); - if (ctrl.signal.aborted) return; + const res = await gql<{ chapters: { nodes: RecentUpdate[] } }>(GET_RECENTLY_UPDATED, {}, nextCtrl.signal); + if (nextCtrl.signal.aborted) return; updates = res.chapters.nodes .filter(item => item.manga?.inLibrary) - .sort((a, b) => new Date(b.fetchedAt ?? 0).getTime() - new Date(a.fetchedAt ?? 0).getTime()); + .sort((a, b) => fetchedAtMs(b) - fetchedAtMs(a)); } catch (e: any) { - if (ctrl.signal.aborted) return; + if (nextCtrl.signal.aborted) return; error = e?.message ?? "Failed to load updates"; updates = []; } finally { - if (!ctrl.signal.aborted) loading = false; + if (!nextCtrl.signal.aborted) loading = false; } } @@ -169,7 +174,7 @@ {chapterLabel(item)}
- {timeAgo(new Date(item.fetchedAt ?? 0).getTime())} + {timeAgo(fetchedAtMs(item))} {#if (item.lastPageRead ?? 0) > 0 && !item.isRead} ยท Resume p.{item.lastPageRead} {/if}