From 0648c75a014465b3b19ab7d95d5ce510bbf12fcf Mon Sep 17 00:00:00 2001 From: Core Date: Wed, 21 Sep 2022 22:53:58 +0100 Subject: [PATCH] Added check --- src/preload/cider-preload.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index 3de6cf72..c5852484 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -6,8 +6,6 @@ let cache = { playParams: { id: 0 }, status: null, remainingTime: 0 }, const MusicKitInterop = { init: function () { - this.initMediaSession(); - /* MusicKit.Events.playbackStateDidChange */ MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => { const attributes = MusicKitInterop.getAttributes(); @@ -38,7 +36,7 @@ const MusicKitInterop = { const attributes = MusicKitInterop.getAttributes(); if (!attributes) return; ipcRenderer.send("playbackTimeDidChange", attributes); - if ("mediaSession" in navigator) { + if ("mediaSession" in navigator && attributes.currentPlaybackTime <= attributes.durationInMillis / 1000) { navigator.mediaSession.setPositionState({ duration: attributes.durationInMillis / 1000, playbackRate: app?.cfg?.audio?.playbackRate ?? 1, @@ -237,6 +235,8 @@ const MusicKitInterop = { initMediaSession: () => { if ("mediaSession" in navigator) { + const defaultSkipTime = 10; + console.debug("[cider:preload] [initMediaSession] Media Session API supported"); navigator.mediaSession.setActionHandler("play", () => { MusicKitInterop.play(); @@ -250,13 +250,15 @@ const MusicKitInterop = { MusicKit.getInstance().stop(); console.log("[cider:preload] [initMediaSession] Stop"); }); - navigator.mediaSession.setActionHandler("seekbackward", ({ seekOffset }) => { - MusicKit.getInstance().seekToTime(MusicKit.getInstance().currentPlaybackTime - seekOffset); - console.log(`[cider:preload] [initMediaSession] Seek Backward ${seekOffset}`); + navigator.mediaSession.setActionHandler("seekbackward", (details) => { + const skipTime = details.seekOffset || defaultSkipTime; + MusicKit.getInstance().seekToTime(Math.max(MusicKit.getInstance().currentPlaybackTime - skipTime, 0)); + console.log(`[cider:preload] [initMediaSession] Seek Backward ${skipTime}`); }); - navigator.mediaSession.setActionHandler("seekforward", ({ seekOffset }) => { - MusicKit.getInstance().seekToTime(MusicKit.getInstance().currentPlaybackTime + seekOffset); - console.log(`[cider:preload] [initMediaSession] Seek Forward ${seekOffset}`); + navigator.mediaSession.setActionHandler("seekforward", (details) => { + const skipTime = details.seekOffset || defaultSkipTime; + MusicKit.getInstance().seekToTime(Math.max(MusicKit.getInstance().currentPlaybackTime + skipTime, 0)); + console.log(`[cider:preload] [initMediaSession] Seek Forward ${skipTime}`); }); navigator.mediaSession.setActionHandler("seekto", ({ seekTime, fastSeek }) => { MusicKit.getInstance().seekToTime(seekTime); @@ -319,6 +321,7 @@ const MusicKitInterop = { updateMediaState: (a) => { if ("mediaSession" in navigator) { + console.log("[cider:preload] [updateMediaState] Updating Media State to " + a.status); switch (a.status) { default: case null: