mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Fix shuffle and repeat when changing contexts to match Android behaviour
Seems strange that these fields return true in the has_ methods when as far as I can tell it's impossible to remove the shuffle/repeat state in the client without explicitly toggling them with their dedicated buttons
This commit is contained in:
parent
551daadc44
commit
8b8032634a
1 changed files with 10 additions and 2 deletions
|
@ -807,8 +807,16 @@ impl SpircTask {
|
||||||
self.state.set_playing_track_index(index);
|
self.state.set_playing_track_index(index);
|
||||||
self.state.set_track(tracks.into_iter().cloned().collect());
|
self.state.set_track(tracks.into_iter().cloned().collect());
|
||||||
self.state.set_context_uri(context_uri);
|
self.state.set_context_uri(context_uri);
|
||||||
self.state.set_repeat(frame.get_state().get_repeat());
|
// has_shuffle/repeat seem to always be true in these replace msgs,
|
||||||
self.state.set_shuffle(frame.get_state().get_shuffle());
|
// but to replicate the behaviour of the Android client we have to
|
||||||
|
// ignore false values.
|
||||||
|
let state = frame.get_state();
|
||||||
|
if state.get_repeat() {
|
||||||
|
self.state.set_repeat(true);
|
||||||
|
}
|
||||||
|
if state.get_shuffle() {
|
||||||
|
self.state.set_shuffle(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_track(&mut self, play: bool) {
|
fn load_track(&mut self, play: bool) {
|
||||||
|
|
Loading…
Reference in a new issue