Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
petitminion
funkwhale
Commits
7df783a7
Verified
Commit
7df783a7
authored
Jun 05, 2018
by
Eliot Berriot
Browse files
Fix #281: broken "play all" button that played only 25 tracks
parent
a16bd2a4
Changes
2
Hide whitespace changes
Inline
Side-by-side
changes/changelog.d/281.bugfix
0 → 100644
View file @
7df783a7
Fix broken "play all" button that played only 25 tracks (#281)
front/src/components/audio/PlayButton.vue
View file @
7df783a7
...
...
@@ -67,8 +67,31 @@ export default {
}
},
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
()
{
let
self
=
this
this
.
isLoading
=
true
let
getTracks
=
new
Promise
((
resolve
,
reject
)
=>
{
if
(
self
.
track
)
{
resolve
([
self
.
track
])
...
...
@@ -82,44 +105,30 @@ export default {
}))
})
}
else
if
(
self
.
artist
)
{
let
params
=
{
params
:
{
'
artist
'
:
self
.
artist
,
'
ordering
'
:
'
album__release_date,position
'
}
}
axios
.
get
(
'
tracks
'
,
params
).
then
((
response
)
=>
{
resolve
(
response
.
data
.
results
)
})
let
params
=
{
'
artist
'
:
self
.
artist
,
'
ordering
'
:
'
album__release_date,position
'
}
self
.
getTracksPage
(
1
,
params
,
resolve
)
}
else
if
(
self
.
album
)
{
let
params
=
{
params
:
{
'
album
'
:
self
.
album
,
'
ordering
'
:
'
position
'
}
}
axios
.
get
(
'
tracks
'
,
params
).
then
((
response
)
=>
{
resolve
(
response
.
data
.
results
)
})
let
params
=
{
'
album
'
:
self
.
album
,
'
ordering
'
:
'
position
'
}
self
.
getTracksPage
(
1
,
params
,
resolve
)
}
})
return
getTracks
.
then
((
tracks
)
=>
{
setTimeout
(
e
=>
{
self
.
isLoading
=
false
},
250
)
return
tracks
.
filter
(
e
=>
{
return
e
.
files
.
length
>
0
})
})
},
triggerLoad
()
{
let
self
=
this
this
.
isLoading
=
true
setTimeout
(()
=>
{
self
.
isLoading
=
false
},
500
)
},
add
()
{
let
self
=
this
this
.
triggerLoad
()
this
.
getPlayableTracks
().
then
((
tracks
)
=>
{
self
.
$store
.
dispatch
(
'
queue/appendMany
'
,
{
tracks
:
tracks
})
})
},
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
})
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment