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:
Will Stott 2019-10-19 12:42:23 +01:00
parent 551daadc44
commit 8b8032634a

View file

@ -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) {