From 378356d9d04c41581afb2e51bfea6a0fcc4313e7 Mon Sep 17 00:00:00 2001 From: Chris Fulljames Date: Thu, 30 Jan 2025 07:36:16 -0500 Subject: [PATCH] Add Media Session integration --- static/player.js | 27 ++++++++++++++++++++++++--- todo.txt | 1 + 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/static/player.js b/static/player.js index 9b37b92..572b2bf 100644 --- a/static/player.js +++ b/static/player.js @@ -7,7 +7,6 @@ function play(event) { while (!songElement.classList.contains("song")) { songElement = songElement.parentElement; - console.log(songElement); } m_songIndex = m_allSongs.indexOf(songElement); playCurrentSong(); @@ -15,7 +14,6 @@ function play(event) { function playCurrentSong() { var song = m_allSongs[m_songIndex]; - console.log(song); var songData = JSON.parse(song.dataset.song); var player = document.getElementById("player") @@ -37,6 +35,30 @@ function playCurrentSong() { artist.textContent = songData.username; artist.href = `/users/${songData.username}`; artist.hidden = false; + + if ("mediaSession" in navigator) { + navigator.mediaSession.metadata = new MediaMetadata({ + title: songData.title, + artist: songData.username, + album: "Little Song Place", + artwork: [{src: "/static/lsp_notes.png"}], + }); + navigator.mediaSession.setActionHandler('nexttrack', () => { + songNext(); + }); + + navigator.mediaSession.setActionHandler('previoustrack', () => { + songPrevious(); + }); + + navigator.mediaSession.setActionHandler('play', async () => { + songPlayPause(); + }); + + navigator.mediaSession.setActionHandler('pause', () => { + songPlayPause(); + }); + } } // Play or pause the current song in the player @@ -176,7 +198,6 @@ document.addEventListener("DOMContentLoaded", (event) => { // Song queue for (const element of document.getElementsByClassName("song")) { - console.log(element); m_allSongs.push(element); } }); diff --git a/todo.txt b/todo.txt index ff6466a..fcf51ca 100644 --- a/todo.txt +++ b/todo.txt @@ -6,6 +6,7 @@ - Additional song info in player (collabs, description, tags) - Tips and Tricks (or html helper for bio/descriptions?) - Multiline/html descriptions +- Profile pictures - Dark mode/site color customization - Admin accounts - Account deletion -- 2.39.5