feat: Support for toggling the monitoring of a given artist via the CLI and TUI

This commit is contained in:
2026-01-06 09:40:16 -07:00
parent 059fa48bd9
commit 5afee1998b
12 changed files with 583 additions and 12 deletions
+24 -2
View File
@@ -11,6 +11,7 @@ use crate::{
},
stateful_table::SortOption,
},
network::lidarr_network::LidarrEvent,
};
use super::handle_change_tab_left_right_keys;
@@ -31,6 +32,12 @@ pub(super) struct LibraryHandler<'a, 'b> {
_context: Option<ActiveLidarrBlock>,
}
impl LibraryHandler<'_, '_> {
fn extract_artist_id(&self) -> i64 {
self.app.data.lidarr_data.artists.current_selection().id
}
}
impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveLidarrBlock> for LibraryHandler<'a, 'b> {
fn handle(&mut self) {
let artists_table_handling_config = TableHandlingConfig::new(ActiveLidarrBlock::Artists.into())
@@ -114,8 +121,23 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveLidarrBlock> for LibraryHandler<'a, '
fn handle_char_key_event(&mut self) {
let key = self.key;
if self.active_lidarr_block == ActiveLidarrBlock::Artists && matches_key!(refresh, key) {
self.app.should_refresh = true;
if self.active_lidarr_block == ActiveLidarrBlock::Artists {
match key {
_ if matches_key!(toggle_monitoring, key) => {
self.app.data.lidarr_data.prompt_confirm = true;
self.app.data.lidarr_data.prompt_confirm_action = Some(
LidarrEvent::ToggleArtistMonitoring(self.extract_artist_id()),
);
self
.app
.pop_and_push_navigation_stack(self.active_lidarr_block.into());
}
_ if matches_key!(refresh, key) => {
self.app.should_refresh = true;
}
_ => (),
}
}
}