skipToPreviousItem bug mitigation

This commit is contained in:
vapormusic 2022-02-13 19:08:31 +07:00
parent 590357dfcf
commit 942aa1b1b4
4 changed files with 14 additions and 8 deletions

View file

@ -217,11 +217,11 @@ export class BrowserWindow {
res.send("Stopped") res.send("Stopped")
break; break;
case "next": 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") res.send("Next")
break; break;
case "previous": 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") res.send("Previous")
break; break;
default: { default: {

View file

@ -182,12 +182,12 @@ export class wsapi {
response.message = "Unmuted"; response.message = "Unmuted";
break; break;
case "next": 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);}`); MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`);
response.message = "Next"; response.message = "Next";
break; break;
case "previous": 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"; response.message = "Previous";
break; break;
case "musickit-api": case "musickit-api":

View file

@ -127,13 +127,14 @@ const MusicKitInterop = {
}, },
next: () => { 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().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);
// MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`)); // MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`));
}, },
previous: () => { 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);
} }
} }

View file

@ -1350,7 +1350,7 @@ const app = new Vue({
app.mk.seekToTime(0); app.mk.seekToTime(0);
} else { } else {
app.prevButtonBackIndicator = false; app.prevButtonBackIndicator = false;
app.mk.skipToPreviousItem() app.skipToPreviousItem()
} }
}, },
async getNowPlayingItemDetailed(target) { async getNowPlayingItemDetailed(target) {
@ -3735,8 +3735,13 @@ const app = new Vue({
}, },
skipToNextItem(){ skipToNextItem(){
// app.mk.skipToNextItem() is buggy somehow so use this // 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); 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);
} }
} }
}) })