From 9872a10bfac96e66e71ed5d36b4191e6fb19992a Mon Sep 17 00:00:00 2001 From: Moshe Sherman Date: Wed, 26 Aug 2020 13:49:48 +0300 Subject: [PATCH] adhere to repeat/shuffle settings on previous track --- src/queue.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/queue.rs b/src/queue.rs index ae07500..91efebf 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -269,15 +269,25 @@ impl Queue { } pub fn previous(&self) { + let q = self.queue.read().unwrap(); + let current = *self.current_track.read().unwrap(); + let repeat = *self.repeat.read().unwrap(); + if let Some(index) = self.previous_index() { self.play(index, false, false); - } else { - let current = *self.current_track.read().unwrap(); - if let Some(index) = current { - self.play(index, false, false); + } else if repeat == RepeatSetting::RepeatPlaylist && q.len() > 0 { + if self.get_shuffle() { + let random_order = self.random_order.read().unwrap(); + self.play( + random_order.as_ref().map(|o| o[q.len() - 1]).unwrap_or(0), + false, + false, + ); } else { - self.spotify.stop(); + self.play(q.len() - 1, false, false); } + } else if let Some(index) = current { + self.play(index, false, false); } }