diff --git a/src/library/TrackContextMenu.vue b/src/library/TrackContextMenu.vue index e0c46e4..c09bc12 100644 --- a/src/library/TrackContextMenu.vue +++ b/src/library/TrackContextMenu.vue @@ -3,6 +3,9 @@ + + Play next + {{ starred ? 'Unstar' : 'Star' }} @@ -30,6 +33,9 @@ } this.starred = !this.starred; }, + playNext() { + return this.$store.dispatch("player/playNext", this.track); + }, } }); diff --git a/src/player/Player.vue b/src/player/Player.vue index 91371e9..5985fcf 100644 --- a/src/player/Player.vue +++ b/src/player/Player.vue @@ -25,13 +25,13 @@
- + - +
@@ -73,8 +73,8 @@ export default Vue.extend({ methods: { ...mapActions("player", [ "playPause", - "playNext", - "playPrevious", + "next", + "previous", ]), seek(event: any) { if (event.target) { diff --git a/src/player/store.ts b/src/player/store.ts index cff5c8d..7d33790 100644 --- a/src/player/store.ts +++ b/src/player/store.ts @@ -72,6 +72,9 @@ export const playerModule: Module = { state.queueIndex--; } }, + setNextInQueue(state, track) { + state.queue.splice(state.queueIndex + 1, 0, track); + }, setProgress(state, value: any) { state.currentTime = value; }, @@ -95,12 +98,12 @@ export const playerModule: Module = { audio.pause(); commit("setPaused"); }, - async playNext({ commit, state }) { + async next({ commit, state }) { commit("setQueueIndex", state.queueIndex + 1); commit("setPlaying"); await audio.play(); }, - async playPrevious({ commit, state }) { + async previous({ commit, state }) { commit("setQueueIndex", state.queueIndex - 1); commit("setPlaying"); await audio.play(); @@ -114,6 +117,9 @@ export const playerModule: Module = { seek({ commit, state }, value) { commit("setPosition", state.duration * value); }, + playNext({ commit }, track) { + commit("setNextInQueue", track); + }, }, getters: { @@ -150,7 +156,7 @@ export function setupAudio(store: Store) { store.commit("player/setDuration", audio.duration); } audio.onended = (event) => { - store.dispatch("player/playNext"); + store.dispatch("player/next"); } audio.onerror = (event) => { store.commit("player/setPaused"); @@ -168,10 +174,10 @@ export function setupAudio(store: Store) { store.dispatch("player/pause"); }); mediaSession.setActionHandler('nexttrack', () => { - store.dispatch("player/playNext"); + store.dispatch("player/next"); }); mediaSession.setActionHandler('previoustrack', () => { - store.dispatch("player/playPrevious"); + store.dispatch("player/previous"); }); mediaSession.setActionHandler('stop', () => { store.dispatch("player/pause");