add album+artist and playback controls to mediasession

AuthorKonata <konata@posteo.jp>
Date
Commit22969b9e36276129c63921aa087ed29da97dbc4a
Parentf62ef0c
2 files changed, 27 insertions(+), 1 deletion(-)
▾Mserver/src/shared.ts
@@ -15,7 +15,7 @@ if (!path.isAbsolute(musicRoot)) {
}
export const excludeExtension =
process.env.EXCLUDE_EXTENSION === undefined ? ["txt", "log", "nfo", "m3u"] : process.env.EXCLUDE_EXTENSION.split(",");
process.env.EXCLUDE_EXTENSION === undefined ? ["txt", "log", "nfo", "m3u", "htm", "html"] : process.env.EXCLUDE_EXTENSION.split(",");
if (!commandExists.sync("ffmpeg")) {
console.error("Required command ffmpeg not found in PATH");
▾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);
}
});
}