diff options
| author | krolxon <krolyxon@tutanota.com> | 2024-04-24 12:52:32 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2024-04-24 12:52:32 +0530 |
| commit | 3f6b2bfefd54a53e675e0cffc98b704d3b8ad244 (patch) | |
| tree | 0a94c5b91cf6c2f57bddec3df24a63b5ec6b9c6c | |
| parent | bf11d5967fd52453292e8a5a0d9a0c618a03c4ad (diff) | |
Fix wrong songs playing when queue is not empty
if we are playing a song which is in the middle of somewhere in queue.
it will play the wrong song, since the index points to wrong song
| -rwxr-xr-x | src/app.rs | 8 | ||||
| -rwxr-xr-x | src/connection.rs | 3 | ||||
| -rwxr-xr-x | src/list.rs | 4 |
3 files changed, 8 insertions, 7 deletions
@@ -12,7 +12,6 @@ pub struct App { /// check if app is running pub running: bool, pub conn: Connection, - pub play_deque: ContentList<String>, pub song_list: ContentList<String>, pub queue_list: ContentList<String>, pub pl_list: ContentList<String>, @@ -21,11 +20,11 @@ pub struct App { impl App { pub fn builder(addrs: &str) -> AppResult<Self> { let mut conn = Connection::new(addrs).unwrap(); - let mut queue = ContentList::new(); + let mut queue_list = ContentList::new(); let mut pl_list = ContentList::new(); pl_list.list = Self::get_playlist(&mut conn.conn)?; - Self::get_queue(&mut conn, &mut queue.list); + Self::get_queue(&mut conn, &mut queue_list.list); let mut song_list = ContentList::new(); song_list.list = conn.songs_filenames.clone(); @@ -33,9 +32,8 @@ impl App { Ok(Self { running: true, conn, - play_deque: ContentList::new(), song_list, - queue_list: ContentList::new(), + queue_list, pl_list, }) } diff --git a/src/connection.rs b/src/connection.rs index e0e788d..fa8cc78 100755 --- a/src/connection.rs +++ b/src/connection.rs @@ -70,10 +70,11 @@ impl Connection { self.conn.play().unwrap(); } else { self.conn.push(song)?; + let len: u32 = (self.conn.queue().unwrap().len() - 1).try_into().unwrap(); + self.conn.switch(len)?; if self.conn.status()?.state == State::Stop { self.conn.play()?; } - self.conn.next().unwrap(); } Ok(()) diff --git a/src/list.rs b/src/list.rs index d5d5524..452907d 100755 --- a/src/list.rs +++ b/src/list.rs @@ -27,7 +27,9 @@ impl<T> ContentList<T> { /// Go to previous item in list pub fn prev(&mut self) { - if self.index != 0 { + if self.index == 0 { + self.index = self.list.len() - 1; + } else { self.index -= 1; } } |
