diff --git a/connect/src/spirc.rs b/connect/src/spirc.rs index 37576a9e..edb7c29b 100644 --- a/connect/src/spirc.rs +++ b/connect/src/spirc.rs @@ -807,8 +807,16 @@ impl SpircTask { self.state.set_playing_track_index(index); self.state.set_track(tracks.into_iter().cloned().collect()); self.state.set_context_uri(context_uri); - self.state.set_repeat(frame.get_state().get_repeat()); - self.state.set_shuffle(frame.get_state().get_shuffle()); + // has_shuffle/repeat seem to always be true in these replace msgs, + // 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) {