Fix #281: broken "play all" button that played only 25 tracks
This commit is contained in:
parent
a16bd2a409
commit
7df783a700
|
@ -0,0 +1 @@
|
||||||
|
Fix broken "play all" button that played only 25 tracks (#281)
|
|
@ -67,8 +67,31 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getTracksPage (page, params, resolve, tracks) {
|
||||||
|
if (page > 10) {
|
||||||
|
// it's 10 * 100 tracks already, let's stop here
|
||||||
|
resolve(tracks)
|
||||||
|
}
|
||||||
|
// when fetching artists/or album tracks, sometimes, we may have to fetch
|
||||||
|
// multiple pages
|
||||||
|
let self = this
|
||||||
|
params['page_size'] = 100
|
||||||
|
params['page'] = page
|
||||||
|
tracks = tracks || []
|
||||||
|
axios.get('tracks/', {params: params}).then((response) => {
|
||||||
|
response.data.results.forEach(t => {
|
||||||
|
tracks.push(t)
|
||||||
|
})
|
||||||
|
if (response.data.next) {
|
||||||
|
self.getTracksPage(page + 1, params, resolve, tracks)
|
||||||
|
} else {
|
||||||
|
resolve(tracks)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
getPlayableTracks () {
|
getPlayableTracks () {
|
||||||
let self = this
|
let self = this
|
||||||
|
this.isLoading = true
|
||||||
let getTracks = new Promise((resolve, reject) => {
|
let getTracks = new Promise((resolve, reject) => {
|
||||||
if (self.track) {
|
if (self.track) {
|
||||||
resolve([self.track])
|
resolve([self.track])
|
||||||
|
@ -82,44 +105,30 @@ export default {
|
||||||
}))
|
}))
|
||||||
})
|
})
|
||||||
} else if (self.artist) {
|
} else if (self.artist) {
|
||||||
let params = {
|
let params = {'artist': self.artist, 'ordering': 'album__release_date,position'}
|
||||||
params: {'artist': self.artist, 'ordering': 'album__release_date,position'}
|
self.getTracksPage(1, params, resolve)
|
||||||
}
|
|
||||||
axios.get('tracks', params).then((response) => {
|
|
||||||
resolve(response.data.results)
|
|
||||||
})
|
|
||||||
} else if (self.album) {
|
} else if (self.album) {
|
||||||
let params = {
|
let params = {'album': self.album, 'ordering': 'position'}
|
||||||
params: {'album': self.album, 'ordering': 'position'}
|
self.getTracksPage(1, params, resolve)
|
||||||
}
|
|
||||||
axios.get('tracks', params).then((response) => {
|
|
||||||
resolve(response.data.results)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return getTracks.then((tracks) => {
|
return getTracks.then((tracks) => {
|
||||||
|
setTimeout(e => {
|
||||||
|
self.isLoading = false
|
||||||
|
}, 250)
|
||||||
return tracks.filter(e => {
|
return tracks.filter(e => {
|
||||||
return e.files.length > 0
|
return e.files.length > 0
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
triggerLoad () {
|
|
||||||
let self = this
|
|
||||||
this.isLoading = true
|
|
||||||
setTimeout(() => {
|
|
||||||
self.isLoading = false
|
|
||||||
}, 500)
|
|
||||||
},
|
|
||||||
add () {
|
add () {
|
||||||
let self = this
|
let self = this
|
||||||
this.triggerLoad()
|
|
||||||
this.getPlayableTracks().then((tracks) => {
|
this.getPlayableTracks().then((tracks) => {
|
||||||
self.$store.dispatch('queue/appendMany', {tracks: tracks})
|
self.$store.dispatch('queue/appendMany', {tracks: tracks})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
addNext (next) {
|
addNext (next) {
|
||||||
let self = this
|
let self = this
|
||||||
this.triggerLoad()
|
|
||||||
let wasEmpty = this.$store.state.queue.tracks.length === 0
|
let wasEmpty = this.$store.state.queue.tracks.length === 0
|
||||||
this.getPlayableTracks().then((tracks) => {
|
this.getPlayableTracks().then((tracks) => {
|
||||||
self.$store.dispatch('queue/appendMany', {tracks: tracks, index: self.$store.state.queue.currentIndex + 1})
|
self.$store.dispatch('queue/appendMany', {tracks: tracks, index: self.$store.state.queue.currentIndex + 1})
|
||||||
|
|
Loading…
Reference in New Issue