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");