Add playlist bounds validation and search mode visual indicator
All checks were successful
Build and Release / build-and-release (push) Successful in 1m1s
All checks were successful
Build and Release / build-and-release (push) Successful in 1m1s
- Add bounds checking to prevent accessing invalid playlist indices - Yellow/orange selection bar when in search mode - Validate playlist index after navigation operations - Handle empty playlists gracefully
This commit is contained in:
@@ -271,6 +271,10 @@ impl AppState {
|
||||
if let Some(first) = self.playlist.first() {
|
||||
self.current_file = Some(first.clone());
|
||||
self.player_state = PlayerState::Playing;
|
||||
} else {
|
||||
// Empty playlist
|
||||
self.current_file = None;
|
||||
self.player_state = PlayerState::Stopped;
|
||||
}
|
||||
} else if let Some(item) = self.get_selected_item() {
|
||||
let node = item.node.clone();
|
||||
@@ -281,6 +285,10 @@ impl AppState {
|
||||
if let Some(first) = self.playlist.first() {
|
||||
self.current_file = Some(first.clone());
|
||||
self.player_state = PlayerState::Playing;
|
||||
} else {
|
||||
// Empty directory
|
||||
self.current_file = None;
|
||||
self.player_state = PlayerState::Stopped;
|
||||
}
|
||||
} else {
|
||||
// Play single file
|
||||
@@ -296,8 +304,11 @@ impl AppState {
|
||||
pub fn play_next(&mut self) {
|
||||
if self.playlist_index + 1 < self.playlist.len() {
|
||||
self.playlist_index += 1;
|
||||
self.current_file = Some(self.playlist[self.playlist_index].clone());
|
||||
self.player_state = PlayerState::Playing;
|
||||
// Double-check index is valid before accessing
|
||||
if self.playlist_index < self.playlist.len() {
|
||||
self.current_file = Some(self.playlist[self.playlist_index].clone());
|
||||
self.player_state = PlayerState::Playing;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user