Added check

This commit is contained in:
Core 2022-09-21 22:53:58 +01:00
parent feba6faedf
commit 0648c75a01
No known key found for this signature in database
GPG key ID: 2AB8327FBA02D1C0

View file

@ -6,8 +6,6 @@ let cache = { playParams: { id: 0 }, status: null, remainingTime: 0 },
const MusicKitInterop = { const MusicKitInterop = {
init: function () { init: function () {
this.initMediaSession();
/* MusicKit.Events.playbackStateDidChange */ /* MusicKit.Events.playbackStateDidChange */
MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => { MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => {
const attributes = MusicKitInterop.getAttributes(); const attributes = MusicKitInterop.getAttributes();
@ -38,7 +36,7 @@ const MusicKitInterop = {
const attributes = MusicKitInterop.getAttributes(); const attributes = MusicKitInterop.getAttributes();
if (!attributes) return; if (!attributes) return;
ipcRenderer.send("playbackTimeDidChange", attributes); ipcRenderer.send("playbackTimeDidChange", attributes);
if ("mediaSession" in navigator) { if ("mediaSession" in navigator && attributes.currentPlaybackTime <= attributes.durationInMillis / 1000) {
navigator.mediaSession.setPositionState({ navigator.mediaSession.setPositionState({
duration: attributes.durationInMillis / 1000, duration: attributes.durationInMillis / 1000,
playbackRate: app?.cfg?.audio?.playbackRate ?? 1, playbackRate: app?.cfg?.audio?.playbackRate ?? 1,
@ -237,6 +235,8 @@ const MusicKitInterop = {
initMediaSession: () => { initMediaSession: () => {
if ("mediaSession" in navigator) { if ("mediaSession" in navigator) {
const defaultSkipTime = 10;
console.debug("[cider:preload] [initMediaSession] Media Session API supported"); console.debug("[cider:preload] [initMediaSession] Media Session API supported");
navigator.mediaSession.setActionHandler("play", () => { navigator.mediaSession.setActionHandler("play", () => {
MusicKitInterop.play(); MusicKitInterop.play();
@ -250,13 +250,15 @@ const MusicKitInterop = {
MusicKit.getInstance().stop(); MusicKit.getInstance().stop();
console.log("[cider:preload] [initMediaSession] Stop"); console.log("[cider:preload] [initMediaSession] Stop");
}); });
navigator.mediaSession.setActionHandler("seekbackward", ({ seekOffset }) => { navigator.mediaSession.setActionHandler("seekbackward", (details) => {
MusicKit.getInstance().seekToTime(MusicKit.getInstance().currentPlaybackTime - seekOffset); const skipTime = details.seekOffset || defaultSkipTime;
console.log(`[cider:preload] [initMediaSession] Seek Backward ${seekOffset}`); MusicKit.getInstance().seekToTime(Math.max(MusicKit.getInstance().currentPlaybackTime - skipTime, 0));
console.log(`[cider:preload] [initMediaSession] Seek Backward ${skipTime}`);
}); });
navigator.mediaSession.setActionHandler("seekforward", ({ seekOffset }) => { navigator.mediaSession.setActionHandler("seekforward", (details) => {
MusicKit.getInstance().seekToTime(MusicKit.getInstance().currentPlaybackTime + seekOffset); const skipTime = details.seekOffset || defaultSkipTime;
console.log(`[cider:preload] [initMediaSession] Seek Forward ${seekOffset}`); MusicKit.getInstance().seekToTime(Math.max(MusicKit.getInstance().currentPlaybackTime + skipTime, 0));
console.log(`[cider:preload] [initMediaSession] Seek Forward ${skipTime}`);
}); });
navigator.mediaSession.setActionHandler("seekto", ({ seekTime, fastSeek }) => { navigator.mediaSession.setActionHandler("seekto", ({ seekTime, fastSeek }) => {
MusicKit.getInstance().seekToTime(seekTime); MusicKit.getInstance().seekToTime(seekTime);
@ -319,6 +321,7 @@ const MusicKitInterop = {
updateMediaState: (a) => { updateMediaState: (a) => {
if ("mediaSession" in navigator) { if ("mediaSession" in navigator) {
console.log("[cider:preload] [updateMediaState] Updating Media State to " + a.status);
switch (a.status) { switch (a.status) {
default: default:
case null: case null: