From 089fef215c9193097a08a01dd638135bc833455f Mon Sep 17 00:00:00 2001 From: peterino2 Date: Sun, 5 Jul 2026 10:11:27 -0700 Subject: [PATCH] Add recently added library section --- init.ts | 41 +++++++++--------- public/index.html | 11 +++++ public/queue.js | 92 ++++++++++++++++++++++++++++++++++------ public/styles.css | 20 +++++++-- public/trackContainer.js | 8 ++-- routes/tracks.ts | 1 + 6 files changed, 132 insertions(+), 41 deletions(-) diff --git a/init.ts b/init.ts index 526f978..9acaf49 100644 --- a/init.ts +++ b/init.ts @@ -85,6 +85,21 @@ export function getAllLibraryTracks(lib: Library): Track[] { })); } +function serializeLibraryTrack(track: ReturnType[number]) { + return { + id: track.id, + filename: track.filename, + title: track.title, + artist: track.artist, + album: track.album, + duration: track.duration, + replayGainDb: track.replayGainDb, + replayPeak: track.replayPeak, + createdAt: track.created_at, + available: track.available, + }; +} + export async function init(): Promise { // Initialize yt-dlp if configured const ytdlpConfig = config.ytdlp || DEFAULT_CONFIG.ytdlp!; @@ -352,22 +367,10 @@ export async function init(): Promise { // Listen for library changes and notify clients library.on("added", (track) => { console.log(`New track detected: ${track.title}`); - const allTracks = library.getAllTracks().map(t => ({ - id: t.id, - title: t.title, - duration: t.duration, - replayGainDb: t.replayGainDb, - replayPeak: t.replayPeak, - })); + const allTracks = library.getAllTracks().map(serializeLibraryTrack); broadcastToAll({ type: "track_added", - track: { - id: track.id, - title: track.title, - duration: track.duration, - replayGainDb: track.replayGainDb, - replayPeak: track.replayPeak, - }, + track: serializeLibraryTrack(track), library: allTracks }); }); @@ -375,16 +378,10 @@ export async function init(): Promise { library.on("removed", (track) => { console.log(`Track removed: ${track.title}`); removeTrackFromQueues(track.id); - const allTracks = library.getAllTracks().map(t => ({ - id: t.id, - title: t.title, - duration: t.duration, - replayGainDb: t.replayGainDb, - replayPeak: t.replayPeak, - })); + const allTracks = library.getAllTracks().map(serializeLibraryTrack); broadcastToAll({ type: "track_removed", - track: { id: track.id, title: track.title }, + track: serializeLibraryTrack(track), library: allTracks }); }); diff --git a/public/index.html b/public/index.html index 5b58ad1..858b39e 100644 --- a/public/index.html +++ b/public/index.html @@ -108,6 +108,17 @@ +
+
+

Recently added

+ +
+
+
+
+

All songs

+ +