Added check
This commit is contained in:
parent
feba6faedf
commit
0648c75a01
1 changed files with 12 additions and 9 deletions
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue