diff --git a/front/src/store/player.js b/front/src/store/player.js
index df8d159f40b4fe3287f9f6252df0ecfdb9023830..d1de34d38828f8487e88aa7d8cfd3209576b30f7 100644
--- a/front/src/store/player.js
+++ b/front/src/store/player.js
@@ -78,8 +78,15 @@ export default {
         logger.default.error('Could not record track in history')
       })
     },
-    trackEnded ({dispatch}, track) {
+    trackEnded ({dispatch, rootState}, track) {
       dispatch('trackListened', track)
+      let queueState = rootState.queue
+      if (queueState.currentIndex === queueState.tracks.length - 1) {
+        // we've reached last track of queue, trigger a reload
+        // from radio if any
+        dispatch('radios/populateQueue', null, {root: true})
+      }
+      dispatch('queue/next', null, {root: true})
       dispatch('queue/next', null, {root: true})
     },
     trackErrored ({commit, dispatch}) {
diff --git a/front/test/unit/specs/store/player.spec.js b/front/test/unit/specs/store/player.spec.js
index af0b6b4354394dbc9c1c62186796e62653ca52fb..f87b83cd3e61915e44e970e21ee88a892d23ba90 100644
--- a/front/test/unit/specs/store/player.spec.js
+++ b/front/test/unit/specs/store/player.spec.js
@@ -122,12 +122,25 @@ describe('store/player', () => {
       testAction({
         action: store.actions.trackEnded,
         payload: {test: 'track'},
+        params: {rootState: {queue: {currentIndex:0, tracks: [1, 2]}}},
         expectedActions: [
           { type: 'trackListened', payload: {test: 'track'} },
           { type: 'queue/next', payload: null, options: {root: true} }
         ]
       }, done)
     })
+    it('trackEnded calls populateQueue if last', (done) => {
+      testAction({
+        action: store.actions.trackEnded,
+        payload: {test: 'track'},
+        params: {rootState: {queue: {currentIndex:1, tracks: [1, 2]}}},
+        expectedActions: [
+          { type: 'trackListened', payload: {test: 'track'} },
+          { type: 'radios/populateQueue', payload: null, options: {root: true} },
+          { type: 'queue/next', payload: null, options: {root: true} }
+        ]
+      }, done)
+    })
     it('trackErrored', (done) => {
       testAction({
         action: store.actions.trackErrored,