From 5c8aff20edf425bb0e7d17a3b48723d7e65aae34 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sun, 21 Oct 2018 16:51:53 +0200
Subject: [PATCH] Fix #585: Now start radios immediatly, skipping any existing
 tracks in queue

---
 changes/changelog.d/585.enhancement  |  1 +
 front/src/components/radios/Card.vue |  2 +-
 front/src/store/queue.js             |  3 +++
 front/src/store/radios.js            | 11 ++++++++---
 4 files changed, 13 insertions(+), 4 deletions(-)
 create mode 100644 changes/changelog.d/585.enhancement

diff --git a/changes/changelog.d/585.enhancement b/changes/changelog.d/585.enhancement
new file mode 100644
index 000000000..51c6aa821
--- /dev/null
+++ b/changes/changelog.d/585.enhancement
@@ -0,0 +1 @@
+Now start radios immediatly, skipping any existing tracks in queue (#585)
diff --git a/front/src/components/radios/Card.vue b/front/src/components/radios/Card.vue
index 20300f7ec..ba612f50e 100644
--- a/front/src/components/radios/Card.vue
+++ b/front/src/components/radios/Card.vue
@@ -14,7 +14,7 @@
         </div>
       </div>
       <div class="extra content">
-        <user-link :user="radio.user" class="left floated" />
+        <user-link v-if="radio.user" :user="radio.user" class="left floated" />
         <radio-button class="right floated button" :type="type" :custom-radio-id="customRadioId"></radio-button>
         <router-link
           class="ui basic yellow button right floated"
diff --git a/front/src/store/queue.js b/front/src/store/queue.js
index 0435c867e..b6edb2242 100644
--- a/front/src/store/queue.js
+++ b/front/src/store/queue.js
@@ -135,6 +135,9 @@ export default {
         }
       }
     },
+    last ({state, dispatch}) {
+      dispatch('currentIndex', state.tracks.length - 1)
+    },
     currentIndex ({commit, state, rootState, dispatch}, index) {
       commit('ended', false)
       commit('player/currentTime', 0, {root: true})
diff --git a/front/src/store/radios.js b/front/src/store/radios.js
index 49bbd4f94..c27421ed0 100644
--- a/front/src/store/radios.js
+++ b/front/src/store/radios.js
@@ -48,7 +48,7 @@ export default {
         logger.default.info('Successfully started radio ', type)
         commit('current', {type, objectId, session: response.data.id, customRadioId})
         commit('running', true)
-        dispatch('populateQueue')
+        dispatch('populateQueue', true)
       }, (response) => {
         logger.default.error('Error while starting radio', type)
       })
@@ -57,7 +57,7 @@ export default {
       commit('current', null)
       commit('running', false)
     },
-    populateQueue ({rootState, state, dispatch}) {
+    populateQueue ({rootState, state, dispatch}, playNow) {
       if (!state.running) {
         return
       }
@@ -69,7 +69,12 @@ export default {
       }
       return axios.post('radios/tracks/', params).then((response) => {
         logger.default.info('Adding track to queue from radio')
-        dispatch('queue/append', {track: response.data.track}, {root: true})
+        let append = dispatch('queue/append', {track: response.data.track}, {root: true})
+        if (playNow) {
+          append.then(() => {
+            dispatch('queue/last', null, {root: true})
+          })
+        }
       }, (response) => {
         logger.default.error('Error while adding track to queue from radio')
       })
-- 
GitLab