diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 960dac7e..c62488e0 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -217,11 +217,11 @@ export class BrowserWindow { res.send("Stopped") break; case "next": - BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}") + BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}") res.send("Next") break; case "previous": - BrowserWindow.win.webContents.executeJavaScript("MusicKit.getInstance().skipToPreviousItem()") + BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex);}") res.send("Previous") break; default: { diff --git a/src/main/base/wsapi.ts b/src/main/base/wsapi.ts index bbda8716..619a0ac6 100644 --- a/src/main/base/wsapi.ts +++ b/src/main/base/wsapi.ts @@ -182,12 +182,12 @@ export class wsapi { response.message = "Unmuted"; break; case "next": - this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1) { + this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) { MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`); response.message = "Next"; break; case "previous": - this._win.webContents.executeJavaScript(`MusicKit.getInstance().skipToPreviousItem()`); + this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex)}`); response.message = "Previous"; break; case "musickit-api": diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index 7afff035..dea3f90c 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -127,13 +127,14 @@ const MusicKitInterop = { }, next: () => { - if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1) + if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex); // MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`)); }, previous: () => { - MusicKit.getInstance().skipToPreviousItem().then(r => console.log(`[MusicKitInterop.previous] Skipping to Previous ${r}`)); + if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) + MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex); } } diff --git a/src/renderer/index.js b/src/renderer/index.js index 45822f53..2e0da967 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -1350,7 +1350,7 @@ const app = new Vue({ app.mk.seekToTime(0); } else { app.prevButtonBackIndicator = false; - app.mk.skipToPreviousItem() + app.skipToPreviousItem() } }, async getNowPlayingItemDetailed(target) { @@ -3735,8 +3735,13 @@ const app = new Vue({ }, skipToNextItem(){ // app.mk.skipToNextItem() is buggy somehow so use this - if (this.mk.queue.nextPlayableItemIndex != -1) + if (this.mk.queue.nextPlayableItemIndex != -1 && this.mk.queue.nextPlayableItemIndex != null) this.mk.changeToMediaAtIndex(this.mk.queue.nextPlayableItemIndex); + }, + skipToPreviousItem(){ + // app.mk.skipToPreviousItem() is buggy somehow so use this + if (this.mk.queue.previousPlayableItemIndex != -1 && this.mk.queue.previousPlayableItemIndex != null) + this.mk.changeToMediaAtIndex(this.mk.queue.previousPlayableItemIndex); } } })