diff --git a/web/src/app/queue.tsx b/web/src/app/queue.tsx index b5066dd..e959809 100644 --- a/web/src/app/queue.tsx +++ b/web/src/app/queue.tsx @@ -70,8 +70,9 @@ function jobOf(r: Row) { } function pressedMark(r: Row): string { - if (!r.createdAt) return "Lyra"; - const d = new Date(r.createdAt); + const when = r.job?.updatedAt ?? r.createdAt; // when it was pressed, not when it was requested + if (!when) return "Lyra"; + const d = new Date(when); return `Lyra · ${d.toLocaleDateString("en-GB", { day: "2-digit", month: "short" }).toUpperCase()}`; } @@ -204,16 +205,21 @@ export function Queue() { const activeTab: Tab = tab ?? defaultTab; const shown = buckets[activeTab]; - // Dedupe by artist+album — re-requesting/re-downloading the same album leaves several - // completed Requests; show each album once (rows arrive newest-first, so keep the first). + // "Recently Pressed": imported albums ordered by when they were PRESSED (job.updatedAt ≈ import + // time), newest first — an album requested long ago but imported just now is recently pressed + // even though its Request is old (rows arrive by request createdAt, which buried fresh imports). + // Dedupe by artist+album (re-downloads leave several completed Requests; keep the most recent). const seenPressed = new Set(); - const pressed = rows.filter((r) => { - if (jobOf(r).state !== "imported") return false; - const key = `${r.artist} ${r.album}`.toLowerCase(); - if (seenPressed.has(key)) return false; - seenPressed.add(key); - return true; - }); + const pressedAll = rows + .filter((r) => jobOf(r).state === "imported") + .sort((a, b) => new Date(jobOf(b).updatedAt ?? 0).getTime() - new Date(jobOf(a).updatedAt ?? 0).getTime()) + .filter((r) => { + const key = `${r.artist} ${r.album}`.toLowerCase(); + if (seenPressed.has(key)) return false; + seenPressed.add(key); + return true; + }); + const pressed = pressedAll.slice(0, 10); // show only the 10 most recently pressed const now = Date.now(); function renderRow(r: Row) { @@ -310,7 +316,7 @@ export function Queue() { 0 ? ( <> - + ({ id: r.id, artist: r.artist, album: r.album, matrix: pressedMark(r), rgMbid: r.rgMbid ?? null }))} />