back button & media keys improvement

This commit is contained in:
vapormusic 2022-02-18 22:50:02 +07:00
parent 99425e65c3
commit bb8e22cf93
3 changed files with 19 additions and 2 deletions

View file

@ -183,6 +183,9 @@ export class wsapi {
break; break;
case "next": case "next":
this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) { this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) {
try {
app.prevButtonBackIndicator = false;
} catch (e) { }
MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`); MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`);
response.message = "Next"; response.message = "Next";
break; break;

View file

@ -136,6 +136,9 @@ const MusicKitInterop = {
}, },
next: () => { next: () => {
try {
app.prevButtonBackIndicator = false;
} catch (e) { }
if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) 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}`));

View file

@ -250,7 +250,8 @@ const app = new Vue({
items: {}, items: {},
headerItems: {} headerItems: {}
} }
} },
pauseButtonTimer : null
}, },
watch: { watch: {
cfg: { cfg: {
@ -813,6 +814,8 @@ const app = new Vue({
this.page = "home" this.page = "home"
} }
this.mediaKeyFixes()
setTimeout(() => { setTimeout(() => {
this.getSocialBadges() this.getSocialBadges()
this.getBrowsePage(); this.getBrowsePage();
@ -1355,8 +1358,11 @@ const app = new Vue({
prevButton() { prevButton() {
if (!app.prevButtonBackIndicator && app.mk.nowPlayingItem && app.mk.currentPlaybackTime > 2) { if (!app.prevButtonBackIndicator && app.mk.nowPlayingItem && app.mk.currentPlaybackTime > 2) {
app.prevButtonBackIndicator = true; app.prevButtonBackIndicator = true;
try{clearTimeout(app.pauseButtonTimer)} catch (e){ }
app.mk.seekToTime(0); app.mk.seekToTime(0);
app.pauseButtonTimer = setTimeout(app.prevButtonBackIndicator = false,3000);
} else { } else {
try{clearTimeout(app.pauseButtonTimer)} catch (e){ }
app.prevButtonBackIndicator = false; app.prevButtonBackIndicator = false;
app.skipToPreviousItem() app.skipToPreviousItem()
} }
@ -3743,6 +3749,7 @@ const app = new Vue({
} }
}, },
skipToNextItem(){ skipToNextItem(){
app.prevButtonBackIndicator = false;
// app.mk.skipToNextItem() is buggy somehow so use this // app.mk.skipToNextItem() is buggy somehow so use this
if (this.mk.queue.nextPlayableItemIndex != -1 && this.mk.queue.nextPlayableItemIndex != null) 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);
@ -3751,6 +3758,10 @@ const app = new Vue({
// app.mk.skipToPreviousItem() is buggy somehow so use this // app.mk.skipToPreviousItem() is buggy somehow so use this
if (this.mk.queue.previousPlayableItemIndex != -1 && this.mk.queue.previousPlayableItemIndex != null) if (this.mk.queue.previousPlayableItemIndex != -1 && this.mk.queue.previousPlayableItemIndex != null)
this.mk.changeToMediaAtIndex(this.mk.queue.previousPlayableItemIndex); this.mk.changeToMediaAtIndex(this.mk.queue.previousPlayableItemIndex);
},
mediaKeyFixes(){
navigator.mediaSession.setActionHandler('previoustrack', function() { app.prevButton() });
navigator.mediaSession.setActionHandler('nexttrack', function() { app.skipToNextItem() });
} }
} }
}) })