add album+artist and playback controls to mediasession
Mwebclient/src/App.tsx
@@ -122,6 +122,11 @@ const App: Component = () => {
createEffect(async () => {
if (!playerState.currentTrack) {
navigator.mediaSession.metadata = new MediaMetadata();
navigator.mediaSession.setActionHandler("pause", null);
navigator.mediaSession.setActionHandler("play", null);
navigator.mediaSession.setActionHandler("stop", null);
navigator.mediaSession.setActionHandler("previoustrack", null);
navigator.mediaSession.setActionHandler("nexttrack", null);
return;
}
const oldSrc = navigator.mediaSession.metadata?.artwork[0]?.src ?? "";
@@ -134,12 +139,33 @@ const App: Component = () => {
);
navigator.mediaSession.metadata = new MediaMetadata({
title: formatFilename(playerState.currentTrack, options.controlsDisplay),
album: playerState.currentTrack.metadata.album,
artist: playerState.currentTrack.metadata.artist,
artwork: [
{
src: artwork ?? "",
},
],
});
navigator.mediaSession.setActionHandler("nexttrack", playNext)
navigator.mediaSession.setActionHandler("previoustrack", playPrevious)
navigator.mediaSession.setActionHandler("stop", stopPlaying)
});
createEffect(() => {
if (!playerState.currentTrack) {
navigator.mediaSession.setActionHandler("pause", null);
navigator.mediaSession.setActionHandler("play", null);
return;
}
if(playerState.isPlaying) {
navigator.mediaSession.setActionHandler("pause", togglePlay);
navigator.mediaSession.setActionHandler("play", null);
} else {
navigator.mediaSession.setActionHandler("pause", null);
navigator.mediaSession.setActionHandler("play", togglePlay);
}
});
}