From c70dc9b778ce3f124cea0610359330cfc19655a6 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sun, 6 May 2018 23:50:09 +0200
Subject: [PATCH] Fix #99 and #156: Play button now play tracks immediately
 instead of appending them to the queue

---
 changes/changelog.d/99.enhancement        |  1 +
 front/src/components/audio/PlayButton.vue | 10 +++++-----
 2 files changed, 6 insertions(+), 5 deletions(-)
 create mode 100644 changes/changelog.d/99.enhancement

diff --git a/changes/changelog.d/99.enhancement b/changes/changelog.d/99.enhancement
new file mode 100644
index 0000000000..3b5666ac44
--- /dev/null
+++ b/changes/changelog.d/99.enhancement
@@ -0,0 +1 @@
+Play button now play tracks immediately instead of appending them to the queue (#99, #156)
diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue
index 14d381ca19..2662f30b33 100644
--- a/front/src/components/audio/PlayButton.vue
+++ b/front/src/components/audio/PlayButton.vue
@@ -2,7 +2,7 @@
   <div :class="['ui', {'tiny': discrete}, 'buttons']">
     <button
       :title="$t('Add to current queue')"
-      @click="add"
+      @click="addNext(true)"
       :class="['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}, 'button']">
       <i class="ui play icon"></i>
       <template v-if="!discrete"><slot><i18next path="Play"/></slot></template>
@@ -42,9 +42,7 @@ export default {
     }
   },
   mounted () {
-    if (!this.discrete) {
-      jQuery(this.$el).find('.ui.dropdown').dropdown()
-    }
+    jQuery(this.$el).find('.ui.dropdown').dropdown()
   },
   computed: {
     playable () {
@@ -98,9 +96,11 @@ export default {
     addNext (next) {
       let self = this
       this.triggerLoad()
+      let wasEmpty = this.$store.state.queue.tracks.length === 0
       this.getPlayableTracks().then((tracks) => {
         self.$store.dispatch('queue/appendMany', {tracks: tracks, index: self.$store.state.queue.currentIndex + 1})
-        if (next) {
+        let goNext = next && !wasEmpty
+        if (goNext) {
           self.$store.dispatch('queue/next')
         }
       })
-- 
GitLab