From a83328bc274c4d0178760a44d1cf3e6a46714681 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Mon, 19 Feb 2018 20:14:39 +0100 Subject: [PATCH] Smarter play button, disabled for unplayable tracks --- front/src/components/audio/PlayButton.vue | 25 ++++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue index 4767255e..451cdcf0 100644 --- a/front/src/components/audio/PlayButton.vue +++ b/front/src/components/audio/PlayButton.vue @@ -1,6 +1,6 @@ <template> <div :class="['ui', {'tiny': discrete}, 'buttons']"> - <button title="Add to current queue" @click="add" :class="['ui', {'mini': discrete}, 'button']"> + <button title="Add to current queue" @click="add" :class="['ui', {'mini': discrete}, {disabled: playableTracks.length === 0}, 'button']"> <i class="ui play icon"></i> <template v-if="!discrete"><slot>Play</slot></template> </button> @@ -36,20 +36,25 @@ export default { jQuery(this.$el).find('.ui.dropdown').dropdown() } }, - methods: { - add () { + computed: { + playableTracks () { + let tracks if (this.track) { - this.$store.dispatch('queue/append', {track: this.track}) + tracks = [this.track] } else { - this.$store.dispatch('queue/appendMany', {tracks: this.tracks}) + tracks = this.tracks } + return tracks.filter(e => { + return e.files.length > 0 + }) + } + }, + methods: { + add () { + this.$store.dispatch('queue/appendMany', {tracks: this.playableTracks}) }, addNext (next) { - if (this.track) { - this.$store.dispatch('queue/append', {track: this.track, index: this.$store.state.queue.currentIndex + 1}) - } else { - this.$store.dispatch('queue/appendMany', {tracks: this.tracks, index: this.$store.state.queue.currentIndex + 1}) - } + this.$store.dispatch('queue/appendMany', {tracks: this.playableTracks, index: this.$store.state.queue.currentIndex + 1}) if (next) { this.$store.dispatch('queue/next') } -- GitLab