From 412cb2408e9cf4790bcbb9d9f6fc00f5683b502d Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Fri, 13 Dec 2024 19:48:22 -0700 Subject: [PATCH] fix(style): Addressed linter complaints on formatting --- src/app/sonarr/sonarr_context_clues.rs | 10 +- src/cli/sonarr/mod.rs | 13 ++- src/cli/sonarr/sonarr_command_tests.rs | 37 +++---- src/handlers/handler_test_utils.rs | 99 ++++++++++++++----- .../library/episode_details_handler_tests.rs | 2 +- .../library/library_handler_tests.rs | 9 +- src/handlers/sonarr_handlers/library/mod.rs | 4 +- .../library/season_details_handler.rs | 9 +- .../library/season_details_handler_tests.rs | 9 +- .../library/series_details_handler.rs | 6 +- .../library/series_details_handler_tests.rs | 9 +- src/handlers/table_handler.rs | 8 +- src/handlers/table_handler_tests.rs | 4 +- .../servarr_data/radarr/radarr_test_utils.rs | 27 +++-- src/models/servarr_data/sonarr/modals.rs | 18 ++-- .../servarr_data/sonarr/modals_tests.rs | 10 +- .../servarr_data/sonarr/sonarr_data_tests.rs | 9 +- .../servarr_data/sonarr/sonarr_test_utils.rs | 20 ++-- src/ui/radarr_ui/blocklist/mod.rs | 2 +- .../collection_details_ui_tests.rs | 10 +- .../collections/edit_collection_ui.rs | 2 +- .../collections/edit_collection_ui_tests.rs | 8 +- src/ui/radarr_ui/downloads/mod.rs | 2 +- src/ui/radarr_ui/indexers/edit_indexer_ui.rs | 7 +- src/ui/radarr_ui/indexers/mod.rs | 9 +- src/ui/radarr_ui/library/add_movie_ui.rs | 9 +- src/ui/radarr_ui/library/edit_movie_ui.rs | 2 +- src/ui/radarr_ui/library/movie_details_ui.rs | 12 +-- .../library/movie_details_ui_tests.rs | 3 +- src/ui/radarr_ui/root_folders/mod.rs | 11 +-- src/ui/radarr_ui/system/mod.rs | 2 +- src/ui/radarr_ui/system/system_details_ui.rs | 19 +--- src/ui/sonarr_ui/blocklist/mod.rs | 2 +- src/ui/sonarr_ui/indexers/edit_indexer_ui.rs | 7 +- .../sonarr_ui/indexers/indexer_settings_ui.rs | 7 +- src/ui/sonarr_ui/indexers/mod.rs | 11 ++- .../indexers/test_all_indexers_ui.rs | 7 +- src/ui/sonarr_ui/library/add_series_ui.rs | 2 +- src/ui/sonarr_ui/library/edit_series_ui.rs | 33 +++---- .../library/episode_details_ui_tests.rs | 32 +++--- .../library/season_details_ui_tests.rs | 36 +++---- .../library/series_details_ui_tests.rs | 6 +- src/ui/sonarr_ui/root_folders/mod.rs | 11 +-- src/ui/sonarr_ui/system/mod.rs | 2 +- src/ui/sonarr_ui/system/system_details_ui.rs | 19 +--- src/ui/styles_tests.rs | 5 +- src/ui/utils_tests.rs | 7 +- src/ui/widgets/checkbox.rs | 2 +- src/ui/widgets/confirmation_prompt.rs | 2 +- src/ui/widgets/managarr_table.rs | 8 +- src/ui/widgets/mod.rs | 2 +- 51 files changed, 343 insertions(+), 259 deletions(-) diff --git a/src/app/sonarr/sonarr_context_clues.rs b/src/app/sonarr/sonarr_context_clues.rs index bb5dc4a..cfb1945 100644 --- a/src/app/sonarr/sonarr_context_clues.rs +++ b/src/app/sonarr/sonarr_context_clues.rs @@ -31,7 +31,10 @@ pub static SERIES_DETAILS_CONTEXT_CLUES: [ContextClue; 8] = [ DEFAULT_KEYBINDINGS.refresh.desc, ), (DEFAULT_KEYBINDINGS.edit, DEFAULT_KEYBINDINGS.edit.desc), - (DEFAULT_KEYBINDINGS.toggle_monitoring, DEFAULT_KEYBINDINGS.toggle_monitoring.desc), + ( + DEFAULT_KEYBINDINGS.toggle_monitoring, + DEFAULT_KEYBINDINGS.toggle_monitoring.desc, + ), (DEFAULT_KEYBINDINGS.submit, "season details"), (DEFAULT_KEYBINDINGS.search, DEFAULT_KEYBINDINGS.search.desc), (DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc), @@ -82,7 +85,10 @@ pub static SEASON_DETAILS_CONTEXT_CLUES: [ContextClue; 5] = [ DEFAULT_KEYBINDINGS.refresh, DEFAULT_KEYBINDINGS.refresh.desc, ), - (DEFAULT_KEYBINDINGS.toggle_monitoring, DEFAULT_KEYBINDINGS.toggle_monitoring.desc), + ( + DEFAULT_KEYBINDINGS.toggle_monitoring, + DEFAULT_KEYBINDINGS.toggle_monitoring.desc, + ), (DEFAULT_KEYBINDINGS.search, DEFAULT_KEYBINDINGS.search.desc), ( DEFAULT_KEYBINDINGS.auto_search, diff --git a/src/cli/sonarr/mod.rs b/src/cli/sonarr/mod.rs index 4b2305f..3a19110 100644 --- a/src/cli/sonarr/mod.rs +++ b/src/cli/sonarr/mod.rs @@ -120,9 +120,7 @@ pub enum SonarrCommand { }, #[command(about = "Test all Sonarr indexers")] TestAllIndexers, - #[command( - about = "Toggle monitoring for the specified episode" - )] + #[command(about = "Toggle monitoring for the specified episode")] ToggleEpisodeMonitoring { #[arg( long, @@ -280,10 +278,15 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, SonarrCommand> for SonarrCliHandler<'a, ' .await?; serde_json::to_string_pretty(&resp)? } - SonarrCommand::ToggleSeasonMonitoring {series_id, season_number } => { + SonarrCommand::ToggleSeasonMonitoring { + series_id, + season_number, + } => { let resp = self .network - .handle_network_event(SonarrEvent::ToggleSeasonMonitoring(Some((series_id, season_number))).into()) + .handle_network_event( + SonarrEvent::ToggleSeasonMonitoring(Some((series_id, season_number))).into(), + ) .await?; serde_json::to_string_pretty(&resp)? } diff --git a/src/cli/sonarr/sonarr_command_tests.rs b/src/cli/sonarr/sonarr_command_tests.rs index c7cfaf8..7599274 100644 --- a/src/cli/sonarr/sonarr_command_tests.rs +++ b/src/cli/sonarr/sonarr_command_tests.rs @@ -145,11 +145,8 @@ mod tests { #[test] fn test_toggle_episode_monitoring_requires_episode_id() { - let result = Cli::command().try_get_matches_from([ - "managarr", - "sonarr", - "toggle-episode-monitoring", - ]); + let result = + Cli::command().try_get_matches_from(["managarr", "sonarr", "toggle-episode-monitoring"]); assert!(result.is_err()); assert_eq!( @@ -710,14 +707,16 @@ mod tests { ))) }); let app_arc = Arc::new(Mutex::new(App::default())); - let toggle_episode_monitoring_command = SonarrCommand::ToggleEpisodeMonitoring { - episode_id: 1, - }; + let toggle_episode_monitoring_command = + SonarrCommand::ToggleEpisodeMonitoring { episode_id: 1 }; - let result = - SonarrCliHandler::with(&app_arc, toggle_episode_monitoring_command, &mut mock_network) - .handle() - .await; + let result = SonarrCliHandler::with( + &app_arc, + toggle_episode_monitoring_command, + &mut mock_network, + ) + .handle() + .await; assert!(result.is_ok()); } @@ -730,7 +729,8 @@ mod tests { mock_network .expect_handle_network_event() .with(eq::( - SonarrEvent::ToggleSeasonMonitoring(Some((expected_series_id, expected_season_number))).into(), + SonarrEvent::ToggleSeasonMonitoring(Some((expected_series_id, expected_season_number))) + .into(), )) .times(1) .returning(|_| { @@ -744,10 +744,13 @@ mod tests { season_number: 1, }; - let result = - SonarrCliHandler::with(&app_arc, toggle_season_monitoring_command, &mut mock_network) - .handle() - .await; + let result = SonarrCliHandler::with( + &app_arc, + toggle_season_monitoring_command, + &mut mock_network, + ) + .handle() + .await; assert!(result.is_ok()); } diff --git a/src/handlers/handler_test_utils.rs b/src/handlers/handler_test_utils.rs index bf70390..b3e8986 100644 --- a/src/handlers/handler_test_utils.rs +++ b/src/handlers/handler_test_utils.rs @@ -331,38 +331,89 @@ mod test_utils { macro_rules! test_handler_delegation { ($handler:ident, $base:expr, $active_block:expr) => { let mut app = App::default(); - app.data.sonarr_data.history.set_items(vec![$crate::models::sonarr_models::SonarrHistoryItem::default()]); - app.data.sonarr_data.root_folders.set_items(vec![$crate::models::servarr_models::RootFolder::default()]); - app.data.sonarr_data.indexers.set_items(vec![$crate::models::servarr_models::Indexer::default()]); - app.data.sonarr_data.blocklist.set_items(vec![$crate::models::sonarr_models::BlocklistItem::default()]); - app.data.sonarr_data.add_searched_series = Some($crate::models::stateful_table::StatefulTable::default()); - app.data.radarr_data.movies.set_items(vec![$crate::models::radarr_models::Movie::default()]); - app.data.radarr_data.collections.set_items(vec![$crate::models::radarr_models::Collection::default()]); - app.data.radarr_data.collection_movies.set_items(vec![$crate::models::radarr_models::CollectionMovie::default()]); - app.data.radarr_data.indexers.set_items(vec![$crate::models::servarr_models::Indexer::default()]); - app.data.radarr_data.root_folders.set_items(vec![$crate::models::servarr_models::RootFolder::default()]); - app.data.radarr_data.blocklist.set_items(vec![$crate::models::radarr_models::BlocklistItem::default()]); - app.data.radarr_data.add_searched_movies = Some($crate::models::stateful_table::StatefulTable::default()); - let mut movie_details_modal = $crate::models::servarr_data::radarr::modals::MovieDetailsModal::default(); + app.data.sonarr_data.history.set_items(vec![ + $crate::models::sonarr_models::SonarrHistoryItem::default(), + ]); + app + .data + .sonarr_data + .root_folders + .set_items(vec![$crate::models::servarr_models::RootFolder::default()]); + app + .data + .sonarr_data + .indexers + .set_items(vec![$crate::models::servarr_models::Indexer::default()]); + app + .data + .sonarr_data + .blocklist + .set_items(vec![$crate::models::sonarr_models::BlocklistItem::default()]); + app.data.sonarr_data.add_searched_series = + Some($crate::models::stateful_table::StatefulTable::default()); + app + .data + .radarr_data + .movies + .set_items(vec![$crate::models::radarr_models::Movie::default()]); + app + .data + .radarr_data + .collections + .set_items(vec![$crate::models::radarr_models::Collection::default()]); + app.data.radarr_data.collection_movies.set_items(vec![ + $crate::models::radarr_models::CollectionMovie::default(), + ]); + app + .data + .radarr_data + .indexers + .set_items(vec![$crate::models::servarr_models::Indexer::default()]); + app + .data + .radarr_data + .root_folders + .set_items(vec![$crate::models::servarr_models::RootFolder::default()]); + app + .data + .radarr_data + .blocklist + .set_items(vec![$crate::models::radarr_models::BlocklistItem::default()]); + app.data.radarr_data.add_searched_movies = + Some($crate::models::stateful_table::StatefulTable::default()); + let mut movie_details_modal = + $crate::models::servarr_data::radarr::modals::MovieDetailsModal::default(); + movie_details_modal.movie_history.set_items(vec![ + $crate::models::radarr_models::MovieHistoryItem::default(), + ]); movie_details_modal - .movie_history - .set_items(vec![$crate::models::radarr_models::MovieHistoryItem::default()]); - movie_details_modal.movie_cast.set_items(vec![$crate::models::radarr_models::Credit::default()]); - movie_details_modal.movie_crew.set_items(vec![$crate::models::radarr_models::Credit::default()]); - movie_details_modal.movie_releases.set_items(vec![$crate::models::radarr_models::RadarrRelease::default()]); + .movie_cast + .set_items(vec![$crate::models::radarr_models::Credit::default()]); + movie_details_modal + .movie_crew + .set_items(vec![$crate::models::radarr_models::Credit::default()]); + movie_details_modal + .movie_releases + .set_items(vec![$crate::models::radarr_models::RadarrRelease::default()]); app.data.radarr_data.movie_details_modal = Some(movie_details_modal); - let mut season_details_modal = $crate::models::servarr_data::sonarr::modals::SeasonDetailsModal::default(); - season_details_modal.season_history.set_items(vec![$crate::models::sonarr_models::SonarrHistoryItem::default()]); - season_details_modal.episode_details_modal = Some($crate::models::servarr_data::sonarr::modals::EpisodeDetailsModal::default()); + let mut season_details_modal = + $crate::models::servarr_data::sonarr::modals::SeasonDetailsModal::default(); + season_details_modal.season_history.set_items(vec![ + $crate::models::sonarr_models::SonarrHistoryItem::default(), + ]); + season_details_modal.episode_details_modal = + Some($crate::models::servarr_data::sonarr::modals::EpisodeDetailsModal::default()); app.data.sonarr_data.season_details_modal = Some(season_details_modal); let mut series_history = $crate::models::stateful_table::StatefulTable::default(); series_history.set_items(vec![ $crate::models::sonarr_models::SonarrHistoryItem::default(), ]); app.data.sonarr_data.series_history = Some(series_history); - app.data.sonarr_data.series.set_items(vec![ - $crate::models::sonarr_models::Series::default(), - ]); + app + .data + .sonarr_data + .series + .set_items(vec![$crate::models::sonarr_models::Series::default()]); app.push_navigation_stack($base.into()); app.push_navigation_stack($active_block.into()); diff --git a/src/handlers/sonarr_handlers/library/episode_details_handler_tests.rs b/src/handlers/sonarr_handlers/library/episode_details_handler_tests.rs index 2bf88bf..c5d31f3 100644 --- a/src/handlers/sonarr_handlers/library/episode_details_handler_tests.rs +++ b/src/handlers/sonarr_handlers/library/episode_details_handler_tests.rs @@ -577,7 +577,7 @@ mod tests { ActiveSonarrBlock::ManualEpisodeSearchConfirmPrompt, None, ) - .handle(); + .handle(); assert!(app.data.sonarr_data.prompt_confirm); assert_eq!( diff --git a/src/handlers/sonarr_handlers/library/library_handler_tests.rs b/src/handlers/sonarr_handlers/library/library_handler_tests.rs index 30577ea..c79a107 100644 --- a/src/handlers/sonarr_handlers/library/library_handler_tests.rs +++ b/src/handlers/sonarr_handlers/library/library_handler_tests.rs @@ -10,7 +10,10 @@ mod tests { use crate::event::Key; use crate::handlers::sonarr_handlers::library::{series_sorting_options, LibraryHandler}; use crate::handlers::KeyEventHandler; - use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, ADD_SERIES_BLOCKS, DELETE_SERIES_BLOCKS, EDIT_SERIES_BLOCKS, EPISODE_DETAILS_BLOCKS, LIBRARY_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS}; + use crate::models::servarr_data::sonarr::sonarr_data::{ + ActiveSonarrBlock, ADD_SERIES_BLOCKS, DELETE_SERIES_BLOCKS, EDIT_SERIES_BLOCKS, + EPISODE_DETAILS_BLOCKS, LIBRARY_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS, + }; use crate::models::sonarr_models::{Series, SeriesStatus, SeriesType}; use crate::test_handler_delegation; @@ -556,7 +559,7 @@ mod tests { ActiveSonarrBlock::SeasonHistoryDetails, ActiveSonarrBlock::ManualSeasonSearch, ActiveSonarrBlock::ManualSeasonSearchSortPrompt, - ActiveSonarrBlock::DeleteEpisodeFilePrompt, + ActiveSonarrBlock::DeleteEpisodeFilePrompt )] active_sonarr_block: ActiveSonarrBlock, ) { @@ -576,7 +579,7 @@ mod tests { ActiveSonarrBlock::EpisodeHistoryDetails, ActiveSonarrBlock::ManualEpisodeSearch, ActiveSonarrBlock::ManualEpisodeSearchSortPrompt, - ActiveSonarrBlock::DeleteEpisodeFilePrompt, + ActiveSonarrBlock::DeleteEpisodeFilePrompt )] active_sonarr_block: ActiveSonarrBlock, ) { diff --git a/src/handlers/sonarr_handlers/library/mod.rs b/src/handlers/sonarr_handlers/library/mod.rs index 7f01a39..ef1f00c 100644 --- a/src/handlers/sonarr_handlers/library/mod.rs +++ b/src/handlers/sonarr_handlers/library/mod.rs @@ -30,12 +30,12 @@ use crate::handlers::table_handler::TableHandlingConfig; mod add_series_handler; mod delete_series_handler; +mod episode_details_handler; #[cfg(test)] #[path = "library_handler_tests.rs"] mod library_handler_tests; -mod series_details_handler; mod season_details_handler; -mod episode_details_handler; +mod series_details_handler; pub(super) struct LibraryHandler<'a, 'b> { key: Key, diff --git a/src/handlers/sonarr_handlers/library/season_details_handler.rs b/src/handlers/sonarr_handlers/library/season_details_handler.rs index a04d288..c66ab09 100644 --- a/src/handlers/sonarr_handlers/library/season_details_handler.rs +++ b/src/handlers/sonarr_handlers/library/season_details_handler.rs @@ -342,8 +342,10 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for SeasonDetailsHandler self.app.data.sonarr_data.prompt_confirm = true; self.app.data.sonarr_data.prompt_confirm_action = Some(SonarrEvent::ToggleEpisodeMonitoring(None)); - - self.app.pop_and_push_navigation_stack(self.active_sonarr_block.into()); + + self + .app + .pop_and_push_navigation_stack(self.active_sonarr_block.into()); } ActiveSonarrBlock::SeasonDetails | ActiveSonarrBlock::SeasonHistory @@ -416,7 +418,8 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for SeasonDetailsHandler } } -pub(in crate::handlers::sonarr_handlers::library) fn releases_sorting_options() -> Vec> { +pub(in crate::handlers::sonarr_handlers::library) fn releases_sorting_options( +) -> Vec> { vec![ SortOption { name: "Source", diff --git a/src/handlers/sonarr_handlers/library/season_details_handler_tests.rs b/src/handlers/sonarr_handlers/library/season_details_handler_tests.rs index aabf913..dfe2a88 100644 --- a/src/handlers/sonarr_handlers/library/season_details_handler_tests.rs +++ b/src/handlers/sonarr_handlers/library/season_details_handler_tests.rs @@ -559,7 +559,7 @@ mod tests { ActiveSonarrBlock::SeasonDetails, None, ) - .handle(); + .handle(); assert_eq!( app.get_current_route(), @@ -586,9 +586,12 @@ mod tests { ActiveSonarrBlock::SeasonDetails, None, ) - .handle(); + .handle(); - assert_eq!(app.get_current_route(), ActiveSonarrBlock::SeasonDetails.into()); + assert_eq!( + app.get_current_route(), + ActiveSonarrBlock::SeasonDetails.into() + ); assert!(!app.data.sonarr_data.prompt_confirm); assert!(app.data.sonarr_data.prompt_confirm_action.is_none()); assert!(!app.is_routing); diff --git a/src/handlers/sonarr_handlers/library/series_details_handler.rs b/src/handlers/sonarr_handlers/library/series_details_handler.rs index 00224b4..d3201d2 100644 --- a/src/handlers/sonarr_handlers/library/series_details_handler.rs +++ b/src/handlers/sonarr_handlers/library/series_details_handler.rs @@ -261,8 +261,10 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for SeriesDetailsHandler self.app.data.sonarr_data.prompt_confirm = true; self.app.data.sonarr_data.prompt_confirm_action = Some(SonarrEvent::ToggleSeasonMonitoring(None)); - - self.app.pop_and_push_navigation_stack(self.active_sonarr_block.into()); + + self + .app + .pop_and_push_navigation_stack(self.active_sonarr_block.into()); } _ => (), }, diff --git a/src/handlers/sonarr_handlers/library/series_details_handler_tests.rs b/src/handlers/sonarr_handlers/library/series_details_handler_tests.rs index 56210fb..3973547 100644 --- a/src/handlers/sonarr_handlers/library/series_details_handler_tests.rs +++ b/src/handlers/sonarr_handlers/library/series_details_handler_tests.rs @@ -388,7 +388,7 @@ mod tests { ActiveSonarrBlock::SeriesDetails, None, ) - .handle(); + .handle(); assert_eq!( app.get_current_route(), @@ -415,9 +415,12 @@ mod tests { ActiveSonarrBlock::SeriesDetails, None, ) - .handle(); + .handle(); - assert_eq!(app.get_current_route(), ActiveSonarrBlock::SeriesDetails.into()); + assert_eq!( + app.get_current_route(), + ActiveSonarrBlock::SeriesDetails.into() + ); assert!(!app.data.sonarr_data.prompt_confirm); assert!(app.data.sonarr_data.prompt_confirm_action.is_none()); assert!(!app.is_routing); diff --git a/src/handlers/table_handler.rs b/src/handlers/table_handler.rs index abe26fe..56b77b1 100644 --- a/src/handlers/table_handler.rs +++ b/src/handlers/table_handler.rs @@ -78,7 +78,7 @@ macro_rules! handle_table_events { fn [](&mut $self, config: $crate::handlers::table_handler::TableHandlingConfig<$row>) -> bool { use $crate::models::Scrollable; - + match $self.app.get_current_route() { _ if config.table_block == $self.app.get_current_route() => { $table.scroll_up(); @@ -96,7 +96,7 @@ macro_rules! handle_table_events { fn [](&mut $self, config: $crate::handlers::table_handler::TableHandlingConfig<$row>) -> bool { use $crate::models::Scrollable; - + match $self.app.get_current_route() { _ if config.table_block == $self.app.get_current_route() => { $table.scroll_down(); @@ -118,7 +118,7 @@ macro_rules! handle_table_events { fn [](&mut $self, config: $crate::handlers::table_handler::TableHandlingConfig<$row>) -> bool { use $crate::models::Scrollable; - + match $self.app.get_current_route() { _ if config.table_block == $self.app.get_current_route() => { $table.scroll_to_top(); @@ -160,7 +160,7 @@ macro_rules! handle_table_events { fn [](&mut $self, config: $crate::handlers::table_handler::TableHandlingConfig<$row>) -> bool { use $crate::models::Scrollable; - + match $self.app.get_current_route() { _ if config.table_block == $self.app.get_current_route() => { $table.scroll_to_bottom(); diff --git a/src/handlers/table_handler_tests.rs b/src/handlers/table_handler_tests.rs index c908454..2861ce8 100644 --- a/src/handlers/table_handler_tests.rs +++ b/src/handlers/table_handler_tests.rs @@ -37,10 +37,10 @@ mod tests { match self.active_radarr_block { ActiveRadarrBlock::MovieDetails => { self.handle_movies_table_events(minimal_movie_table_handling_config); - } + } _ => { self.handle_movies_table_events(movie_table_handling_config); - }, + } } } diff --git a/src/models/servarr_data/radarr/radarr_test_utils.rs b/src/models/servarr_data/radarr/radarr_test_utils.rs index aae4098..1f00a3d 100644 --- a/src/models/servarr_data/radarr/radarr_test_utils.rs +++ b/src/models/servarr_data/radarr/radarr_test_utils.rs @@ -1,11 +1,14 @@ #[cfg(test)] pub mod utils { - use crate::models::radarr_models::{AddMovieSearchResult, BlocklistItem, Collection, CollectionMovie, Credit, DownloadRecord, Movie, MovieHistoryItem, RadarrRelease}; + use crate::models::radarr_models::{ + AddMovieSearchResult, BlocklistItem, Collection, CollectionMovie, Credit, DownloadRecord, + Movie, MovieHistoryItem, RadarrRelease, + }; use crate::models::servarr_data::radarr::modals::MovieDetailsModal; use crate::models::servarr_data::radarr::radarr_data::RadarrData; + use crate::models::servarr_models::{Indexer, RootFolder}; use crate::models::stateful_table::StatefulTable; use crate::models::{HorizontallyScrollableText, ScrollableText}; - use crate::models::servarr_models::{Indexer, RootFolder}; pub fn create_test_radarr_data<'a>() -> RadarrData<'a> { let mut movie_details_modal = MovieDetailsModal { @@ -35,11 +38,21 @@ pub mod utils { ..RadarrData::default() }; radarr_data.movies.set_items(vec![Movie::default()]); - radarr_data.collection_movies.set_items(vec![CollectionMovie::default()]); - radarr_data.collections.set_items(vec![Collection::default()]); - radarr_data.downloads.set_items(vec![DownloadRecord::default()]); - radarr_data.blocklist.set_items(vec![BlocklistItem::default()]); - radarr_data.root_folders.set_items(vec![RootFolder::default()]); + radarr_data + .collection_movies + .set_items(vec![CollectionMovie::default()]); + radarr_data + .collections + .set_items(vec![Collection::default()]); + radarr_data + .downloads + .set_items(vec![DownloadRecord::default()]); + radarr_data + .blocklist + .set_items(vec![BlocklistItem::default()]); + radarr_data + .root_folders + .set_items(vec![RootFolder::default()]); radarr_data.indexers.set_items(vec![Indexer::default()]); radarr_data.movie_info_tabs.index = 1; radarr_data diff --git a/src/models/servarr_data/sonarr/modals.rs b/src/models/servarr_data/sonarr/modals.rs index 230a692..4936789 100644 --- a/src/models/servarr_data/sonarr/modals.rs +++ b/src/models/servarr_data/sonarr/modals.rs @@ -1,13 +1,15 @@ use strum::IntoEnumIterator; +use super::sonarr_data::{ActiveSonarrBlock, SonarrData}; +use crate::models::sonarr_models::EpisodeFile; use crate::{ app::{ context_clues::build_context_clue_string, sonarr::sonarr_context_clues::{ DETAILS_CONTEXTUAL_CONTEXT_CLUES, EPISODE_DETAILS_CONTEXT_CLUES, - MANUAL_EPISODE_SEARCH_CONTEXT_CLUES, - MANUAL_SEASON_SEARCH_CONTEXT_CLUES, SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES, - SEASON_DETAILS_CONTEXT_CLUES, SEASON_HISTORY_CONTEXT_CLUES, + MANUAL_EPISODE_SEARCH_CONTEXT_CLUES, MANUAL_SEASON_SEARCH_CONTEXT_CLUES, + SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES, SEASON_DETAILS_CONTEXT_CLUES, + SEASON_HISTORY_CONTEXT_CLUES, }, }, models::{ @@ -19,8 +21,6 @@ use crate::{ HorizontallyScrollableText, ScrollableText, TabRoute, TabState, }, }; -use crate::models::sonarr_models::EpisodeFile; -use super::sonarr_data::{ActiveSonarrBlock, SonarrData}; #[cfg(test)] #[path = "modals_tests.rs"] @@ -330,7 +330,9 @@ impl Default for SeasonDetailsModal { title: "Episodes", route: ActiveSonarrBlock::SeasonDetails.into(), help: build_context_clue_string(&SEASON_DETAILS_CONTEXT_CLUES), - contextual_help: Some(build_context_clue_string(&SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES)), + contextual_help: Some(build_context_clue_string( + &SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES, + )), }, TabRoute { title: "History", @@ -341,9 +343,7 @@ impl Default for SeasonDetailsModal { TabRoute { title: "Manual Search", route: ActiveSonarrBlock::ManualSeasonSearch.into(), - help: build_context_clue_string( - &MANUAL_SEASON_SEARCH_CONTEXT_CLUES, - ), + help: build_context_clue_string(&MANUAL_SEASON_SEARCH_CONTEXT_CLUES), contextual_help: Some(build_context_clue_string(&DETAILS_CONTEXTUAL_CONTEXT_CLUES)), }, ]), diff --git a/src/models/servarr_data/sonarr/modals_tests.rs b/src/models/servarr_data/sonarr/modals_tests.rs index aebffb8..5fa55e3 100644 --- a/src/models/servarr_data/sonarr/modals_tests.rs +++ b/src/models/servarr_data/sonarr/modals_tests.rs @@ -7,7 +7,7 @@ mod tests { use crate::app::context_clues::build_context_clue_string; use crate::app::sonarr::sonarr_context_clues::{ - DETAILS_CONTEXTUAL_CONTEXT_CLUES, EPISODE_DETAILS_CONTEXT_CLUES, + DETAILS_CONTEXTUAL_CONTEXT_CLUES, EPISODE_DETAILS_CONTEXT_CLUES, MANUAL_EPISODE_SEARCH_CONTEXT_CLUES, MANUAL_SEASON_SEARCH_CONTEXT_CLUES, SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES, SEASON_DETAILS_CONTEXT_CLUES, SEASON_HISTORY_CONTEXT_CLUES, @@ -342,7 +342,9 @@ mod tests { ); assert_eq!( season_details_modal.season_details_tabs.tabs[0].contextual_help, - Some(build_context_clue_string(&SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES)) + Some(build_context_clue_string( + &SEASON_DETAILS_CONTEXTUAL_CONTEXT_CLUES + )) ); assert_str_eq!( @@ -376,9 +378,7 @@ mod tests { ); assert_eq!( season_details_modal.season_details_tabs.tabs[2].contextual_help, - Some(build_context_clue_string( - &DETAILS_CONTEXTUAL_CONTEXT_CLUES - )) + Some(build_context_clue_string(&DETAILS_CONTEXTUAL_CONTEXT_CLUES)) ); } } diff --git a/src/models/servarr_data/sonarr/sonarr_data_tests.rs b/src/models/servarr_data/sonarr/sonarr_data_tests.rs index e511d95..36d18bd 100644 --- a/src/models/servarr_data/sonarr/sonarr_data_tests.rs +++ b/src/models/servarr_data/sonarr/sonarr_data_tests.rs @@ -222,7 +222,14 @@ mod tests { } mod active_sonarr_block_tests { - use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, ADD_SERIES_BLOCKS, ADD_SERIES_SELECTION_BLOCKS, BLOCKLIST_BLOCKS, DELETE_SERIES_BLOCKS, DELETE_SERIES_SELECTION_BLOCKS, DOWNLOADS_BLOCKS, EDIT_INDEXER_BLOCKS, EDIT_INDEXER_NZB_SELECTION_BLOCKS, EDIT_INDEXER_TORRENT_SELECTION_BLOCKS, EDIT_SERIES_BLOCKS, EDIT_SERIES_SELECTION_BLOCKS, EPISODE_DETAILS_BLOCKS, HISTORY_BLOCKS, INDEXERS_BLOCKS, INDEXER_SETTINGS_BLOCKS, INDEXER_SETTINGS_SELECTION_BLOCKS, LIBRARY_BLOCKS, ROOT_FOLDERS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS, SYSTEM_DETAILS_BLOCKS}; + use crate::models::servarr_data::sonarr::sonarr_data::{ + ActiveSonarrBlock, ADD_SERIES_BLOCKS, ADD_SERIES_SELECTION_BLOCKS, BLOCKLIST_BLOCKS, + DELETE_SERIES_BLOCKS, DELETE_SERIES_SELECTION_BLOCKS, DOWNLOADS_BLOCKS, EDIT_INDEXER_BLOCKS, + EDIT_INDEXER_NZB_SELECTION_BLOCKS, EDIT_INDEXER_TORRENT_SELECTION_BLOCKS, EDIT_SERIES_BLOCKS, + EDIT_SERIES_SELECTION_BLOCKS, EPISODE_DETAILS_BLOCKS, HISTORY_BLOCKS, INDEXERS_BLOCKS, + INDEXER_SETTINGS_BLOCKS, INDEXER_SETTINGS_SELECTION_BLOCKS, LIBRARY_BLOCKS, + ROOT_FOLDERS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS, SYSTEM_DETAILS_BLOCKS, + }; #[test] fn test_library_blocks_contents() { diff --git a/src/models/servarr_data/sonarr/sonarr_test_utils.rs b/src/models/servarr_data/sonarr/sonarr_test_utils.rs index b7f5885..2dd552a 100644 --- a/src/models/servarr_data/sonarr/sonarr_test_utils.rs +++ b/src/models/servarr_data/sonarr/sonarr_test_utils.rs @@ -1,5 +1,7 @@ #[cfg(test)] pub mod utils { + use crate::models::servarr_models::{Indexer, RootFolder}; + use crate::models::sonarr_models::{BlocklistItem, Series}; use crate::models::{ servarr_data::sonarr::{ modals::{EpisodeDetailsModal, SeasonDetailsModal}, @@ -9,8 +11,6 @@ pub mod utils { stateful_table::StatefulTable, HorizontallyScrollableText, ScrollableText, }; - use crate::models::servarr_models::{Indexer, RootFolder}; - use crate::models::sonarr_models::{BlocklistItem, Series}; pub fn create_test_sonarr_data<'a>() -> SonarrData<'a> { let mut episode_details_modal = EpisodeDetailsModal { @@ -27,7 +27,9 @@ pub mod utils { season_details_modal .episodes .set_items(vec![Episode::default()]); - season_details_modal.season_history.set_items(vec![SonarrHistoryItem::default()]); + season_details_modal + .season_history + .set_items(vec![SonarrHistoryItem::default()]); season_details_modal .season_releases .set_items(vec![SonarrRelease::default()]); @@ -50,9 +52,15 @@ pub mod utils { ..SonarrData::default() }; sonarr_data.series.set_items(vec![Series::default()]); - sonarr_data.history.set_items(vec![SonarrHistoryItem::default()]); - sonarr_data.blocklist.set_items(vec![BlocklistItem::default()]); - sonarr_data.root_folders.set_items(vec![RootFolder::default()]); + sonarr_data + .history + .set_items(vec![SonarrHistoryItem::default()]); + sonarr_data + .blocklist + .set_items(vec![BlocklistItem::default()]); + sonarr_data + .root_folders + .set_items(vec![RootFolder::default()]); sonarr_data.indexers.set_items(vec![Indexer::default()]); sonarr_data.series_info_tabs.index = 1; sonarr_data diff --git a/src/ui/radarr_ui/blocklist/mod.rs b/src/ui/radarr_ui/blocklist/mod.rs index 28165d8..b6b2b57 100644 --- a/src/ui/radarr_ui/blocklist/mod.rs +++ b/src/ui/radarr_ui/blocklist/mod.rs @@ -33,7 +33,7 @@ impl DrawUi for BlocklistUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { if let Route::Radarr(active_radarr_block, _) = app.get_current_route() { draw_blocklist_table(f, app, area); - + match active_radarr_block { ActiveRadarrBlock::BlocklistItemDetails => { draw_blocklist_item_details_popup(f, app); diff --git a/src/ui/radarr_ui/collections/collection_details_ui_tests.rs b/src/ui/radarr_ui/collections/collection_details_ui_tests.rs index 30f721b..b52d666 100644 --- a/src/ui/radarr_ui/collections/collection_details_ui_tests.rs +++ b/src/ui/radarr_ui/collections/collection_details_ui_tests.rs @@ -17,7 +17,13 @@ mod tests { assert!(!CollectionDetailsUi::accepts(active_radarr_block.into())); } }); - - assert!(CollectionDetailsUi::accepts((ActiveRadarrBlock::CollectionDetails, Some(ActiveRadarrBlock::CollectionDetails)).into())); + + assert!(CollectionDetailsUi::accepts( + ( + ActiveRadarrBlock::CollectionDetails, + Some(ActiveRadarrBlock::CollectionDetails) + ) + .into() + )); } } diff --git a/src/ui/radarr_ui/collections/edit_collection_ui.rs b/src/ui/radarr_ui/collections/edit_collection_ui.rs index e2e8197..765bad3 100644 --- a/src/ui/radarr_ui/collections/edit_collection_ui.rs +++ b/src/ui/radarr_ui/collections/edit_collection_ui.rs @@ -35,7 +35,7 @@ impl DrawUi for EditCollectionUi { return EDIT_COLLECTION_BLOCKS.contains(&active_radarr_block) && context == ActiveRadarrBlock::CollectionDetails; } - + return EDIT_COLLECTION_BLOCKS.contains(&active_radarr_block); } diff --git a/src/ui/radarr_ui/collections/edit_collection_ui_tests.rs b/src/ui/radarr_ui/collections/edit_collection_ui_tests.rs index 842737d..6e37d4b 100644 --- a/src/ui/radarr_ui/collections/edit_collection_ui_tests.rs +++ b/src/ui/radarr_ui/collections/edit_collection_ui_tests.rs @@ -18,6 +18,12 @@ mod tests { } }); - assert!(EditCollectionUi::accepts((ActiveRadarrBlock::EditCollectionPrompt, Some(ActiveRadarrBlock::CollectionDetails)).into())); + assert!(EditCollectionUi::accepts( + ( + ActiveRadarrBlock::EditCollectionPrompt, + Some(ActiveRadarrBlock::CollectionDetails) + ) + .into() + )); } } diff --git a/src/ui/radarr_ui/downloads/mod.rs b/src/ui/radarr_ui/downloads/mod.rs index 48ab433..d247ff8 100644 --- a/src/ui/radarr_ui/downloads/mod.rs +++ b/src/ui/radarr_ui/downloads/mod.rs @@ -32,7 +32,7 @@ impl DrawUi for DownloadsUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { if let Route::Radarr(active_radarr_block, _) = app.get_current_route() { draw_downloads(f, app, area); - + match active_radarr_block { ActiveRadarrBlock::DeleteDownloadPrompt => { let prompt = format!( diff --git a/src/ui/radarr_ui/indexers/edit_indexer_ui.rs b/src/ui/radarr_ui/indexers/edit_indexer_ui.rs index dc50d5e..68724e2 100644 --- a/src/ui/radarr_ui/indexers/edit_indexer_ui.rs +++ b/src/ui/radarr_ui/indexers/edit_indexer_ui.rs @@ -34,12 +34,7 @@ impl DrawUi for EditIndexerUi { } fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) { - draw_popup( - f, - app, - draw_edit_indexer_prompt, - Size::WideLargePrompt, - ); + draw_popup(f, app, draw_edit_indexer_prompt, Size::WideLargePrompt); } } diff --git a/src/ui/radarr_ui/indexers/mod.rs b/src/ui/radarr_ui/indexers/mod.rs index 63aaa81..93aad8a 100644 --- a/src/ui/radarr_ui/indexers/mod.rs +++ b/src/ui/radarr_ui/indexers/mod.rs @@ -61,8 +61,13 @@ impl DrawUi for IndexersUi { f.render_widget(loading_popup, f.area()); } else { let popup = { - let result = app.data.radarr_data.indexer_test_errors.as_ref().expect("Test result is unpopulated"); - + let result = app + .data + .radarr_data + .indexer_test_errors + .as_ref() + .expect("Test result is unpopulated"); + if !result.is_empty() { Popup::new(Message::new(result.clone())).size(Size::LargeMessage) } else { diff --git a/src/ui/radarr_ui/library/add_movie_ui.rs b/src/ui/radarr_ui/library/add_movie_ui.rs index 1070b16..c3670f9 100644 --- a/src/ui/radarr_ui/library/add_movie_ui.rs +++ b/src/ui/radarr_ui/library/add_movie_ui.rs @@ -13,6 +13,7 @@ use crate::models::radarr_models::AddMovieSearchResult; use crate::models::servarr_data::radarr::modals::AddMovieModal; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS}; use crate::models::{EnumDisplayStyle, Route}; +use crate::ui::radarr_ui::collections::CollectionsUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{ borderless_block, get_width_from_percentage, layout_block, layout_paragraph_borderless, @@ -27,7 +28,6 @@ use crate::ui::widgets::selectable_list::SelectableList; use crate::ui::{draw_popup, DrawUi}; use crate::utils::convert_runtime; use crate::{render_selectable_input_box, App}; -use crate::ui::radarr_ui::collections::CollectionsUi; #[cfg(test)] #[path = "add_movie_ui_tests.rs"] @@ -59,12 +59,7 @@ impl DrawUi for AddMovieUi { | ActiveRadarrBlock::AddMovieSelectQualityProfile | ActiveRadarrBlock::AddMovieSelectRootFolder | ActiveRadarrBlock::AddMovieTagsInput => { - draw_popup( - f, - app, - draw_confirmation_popup, - Size::Medium, - ); + draw_popup(f, app, draw_confirmation_popup, Size::Medium); } ActiveRadarrBlock::AddMovieAlreadyInLibrary => { f.render_widget( diff --git a/src/ui/radarr_ui/library/edit_movie_ui.rs b/src/ui/radarr_ui/library/edit_movie_ui.rs index f9458e8..09ba302 100644 --- a/src/ui/radarr_ui/library/edit_movie_ui.rs +++ b/src/ui/radarr_ui/library/edit_movie_ui.rs @@ -47,7 +47,7 @@ impl DrawUi for EditMovieUi { draw_popup(f, app, MovieDetailsUi::draw, Size::Large); } } - + draw_popup(f, app, draw_edit_movie_confirmation_prompt, Size::Medium); match active_radarr_block { diff --git a/src/ui/radarr_ui/library/movie_details_ui.rs b/src/ui/radarr_ui/library/movie_details_ui.rs index 74eff7e..b9dd2af 100644 --- a/src/ui/radarr_ui/library/movie_details_ui.rs +++ b/src/ui/radarr_ui/library/movie_details_ui.rs @@ -12,7 +12,10 @@ use crate::models::servarr_data::radarr::modals::MovieDetailsModal; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS}; use crate::models::Route; use crate::ui::styles::ManagarrStyle; -use crate::ui::utils::{borderless_block, decorate_peer_style, get_width_from_percentage, layout_block_bottom_border, layout_block_top_border}; +use crate::ui::utils::{ + borderless_block, decorate_peer_style, get_width_from_percentage, layout_block_bottom_border, + layout_block_top_border, +}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::loading_block::LoadingBlock; use crate::ui::widgets::managarr_table::ManagarrTable; @@ -84,12 +87,7 @@ impl DrawUi for MovieDetailsUi { } }; - draw_popup( - f, - app, - draw_movie_info_popup, - Size::Large, - ); + draw_popup(f, app, draw_movie_info_popup, Size::Large); } } } diff --git a/src/ui/radarr_ui/library/movie_details_ui_tests.rs b/src/ui/radarr_ui/library/movie_details_ui_tests.rs index 18aa2bc..9d99d6f 100644 --- a/src/ui/radarr_ui/library/movie_details_ui_tests.rs +++ b/src/ui/radarr_ui/library/movie_details_ui_tests.rs @@ -6,7 +6,8 @@ mod tests { use strum::IntoEnumIterator; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS}; - use crate::ui::radarr_ui::library::movie_details_ui::{style_from_download_status, MovieDetailsUi, + use crate::ui::radarr_ui::library::movie_details_ui::{ + style_from_download_status, MovieDetailsUi, }; use crate::ui::styles::ManagarrStyle; use crate::ui::DrawUi; diff --git a/src/ui/radarr_ui/root_folders/mod.rs b/src/ui/radarr_ui/root_folders/mod.rs index 683570b..52655ee 100644 --- a/src/ui/radarr_ui/root_folders/mod.rs +++ b/src/ui/radarr_ui/root_folders/mod.rs @@ -32,14 +32,11 @@ impl DrawUi for RootFoldersUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { if let Route::Radarr(active_radarr_block, _) = app.get_current_route() { draw_root_folders(f, app, area); - + match active_radarr_block { - ActiveRadarrBlock::AddRootFolderPrompt => draw_popup( - f, - app, - draw_add_root_folder_prompt_box, - Size::InputBox, - ), + ActiveRadarrBlock::AddRootFolderPrompt => { + draw_popup(f, app, draw_add_root_folder_prompt_box, Size::InputBox) + } ActiveRadarrBlock::DeleteRootFolderPrompt => { let prompt = format!( "Do you really want to delete this root folder: \n{}?", diff --git a/src/ui/radarr_ui/system/mod.rs b/src/ui/radarr_ui/system/mod.rs index 3fbef36..6d90f65 100644 --- a/src/ui/radarr_ui/system/mod.rs +++ b/src/ui/radarr_ui/system/mod.rs @@ -64,7 +64,7 @@ impl DrawUi for SystemUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { let route = app.get_current_route(); draw_system_ui_layout(f, app, area); - + if SystemDetailsUi::accepts(route) { SystemDetailsUi::draw(f, app, area); } diff --git a/src/ui/radarr_ui/system/system_details_ui.rs b/src/ui/radarr_ui/system/system_details_ui.rs index 7eba677..4245d20 100644 --- a/src/ui/radarr_ui/system/system_details_ui.rs +++ b/src/ui/radarr_ui/system/system_details_ui.rs @@ -10,8 +10,7 @@ use crate::models::radarr_models::RadarrTask; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS}; use crate::models::Route; use crate::ui::radarr_ui::system::{ - draw_queued_events, extract_task_props, TASK_TABLE_CONSTRAINTS, - TASK_TABLE_HEADERS, + draw_queued_events, extract_task_props, TASK_TABLE_CONSTRAINTS, TASK_TABLE_HEADERS, }; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{borderless_block, style_log_list_item, title_block}; @@ -44,19 +43,11 @@ impl DrawUi for SystemDetailsUi { draw_logs_popup(f, app); } ActiveRadarrBlock::SystemTasks | ActiveRadarrBlock::SystemTaskStartConfirmPrompt => { - draw_popup( - f, - app, - draw_tasks_popup, - Size::Large, - ) + draw_popup(f, app, draw_tasks_popup, Size::Large) + } + ActiveRadarrBlock::SystemQueuedEvents => { + draw_popup(f, app, draw_queued_events, Size::Medium) } - ActiveRadarrBlock::SystemQueuedEvents => draw_popup( - f, - app, - draw_queued_events, - Size::Medium, - ), ActiveRadarrBlock::SystemUpdates => { draw_updates_popup(f, app); } diff --git a/src/ui/sonarr_ui/blocklist/mod.rs b/src/ui/sonarr_ui/blocklist/mod.rs index 07f2efb..60a952d 100644 --- a/src/ui/sonarr_ui/blocklist/mod.rs +++ b/src/ui/sonarr_ui/blocklist/mod.rs @@ -33,7 +33,7 @@ impl DrawUi for BlocklistUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { if let Route::Sonarr(active_sonarr_block, _) = app.get_current_route() { draw_blocklist_table(f, app, area); - + match active_sonarr_block { ActiveSonarrBlock::BlocklistItemDetails => { draw_blocklist_item_details_popup(f, app); diff --git a/src/ui/sonarr_ui/indexers/edit_indexer_ui.rs b/src/ui/sonarr_ui/indexers/edit_indexer_ui.rs index 0bf48f1..2042890 100644 --- a/src/ui/sonarr_ui/indexers/edit_indexer_ui.rs +++ b/src/ui/sonarr_ui/indexers/edit_indexer_ui.rs @@ -34,12 +34,7 @@ impl DrawUi for EditIndexerUi { } fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) { - draw_popup( - f, - app, - draw_edit_indexer_prompt, - Size::WideLargePrompt, - ); + draw_popup(f, app, draw_edit_indexer_prompt, Size::WideLargePrompt); } } diff --git a/src/ui/sonarr_ui/indexers/indexer_settings_ui.rs b/src/ui/sonarr_ui/indexers/indexer_settings_ui.rs index 9f66133..4d284aa 100644 --- a/src/ui/sonarr_ui/indexers/indexer_settings_ui.rs +++ b/src/ui/sonarr_ui/indexers/indexer_settings_ui.rs @@ -34,12 +34,7 @@ impl DrawUi for IndexerSettingsUi { } fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) { - draw_popup( - f, - app, - draw_edit_indexer_settings_prompt, - Size::LargePrompt, - ); + draw_popup(f, app, draw_edit_indexer_settings_prompt, Size::LargePrompt); } } diff --git a/src/ui/sonarr_ui/indexers/mod.rs b/src/ui/sonarr_ui/indexers/mod.rs index f5df36e..a0f5d67 100644 --- a/src/ui/sonarr_ui/indexers/mod.rs +++ b/src/ui/sonarr_ui/indexers/mod.rs @@ -57,11 +57,16 @@ impl DrawUi for IndexersUi { app.is_loading || app.data.sonarr_data.indexer_test_errors.is_none(), title_block("Testing Indexer"), )) - .size(Size::LargeMessage); + .size(Size::LargeMessage); f.render_widget(loading_popup, f.area()); } else { let popup = { - let result = app.data.sonarr_data.indexer_test_errors.as_ref().expect("Test result is unpopulated"); + let result = app + .data + .sonarr_data + .indexer_test_errors + .as_ref() + .expect("Test result is unpopulated"); if !result.is_empty() { Popup::new(Message::new(result.clone())).size(Size::LargeMessage) @@ -99,7 +104,7 @@ impl DrawUi for IndexersUi { ); } _ => (), - } + }, _ => (), } } diff --git a/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs b/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs index 22befdd..7bc3739 100644 --- a/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs +++ b/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs @@ -28,12 +28,7 @@ impl DrawUi for TestAllIndexersUi { } fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) { - draw_popup( - f, - app, - draw_test_all_indexers_test_results, - Size::Large, - ); + draw_popup(f, app, draw_test_all_indexers_test_results, Size::Large); } } diff --git a/src/ui/sonarr_ui/library/add_series_ui.rs b/src/ui/sonarr_ui/library/add_series_ui.rs index 42b1266..3d95fbd 100644 --- a/src/ui/sonarr_ui/library/add_series_ui.rs +++ b/src/ui/sonarr_ui/library/add_series_ui.rs @@ -46,7 +46,7 @@ impl DrawUi for AddSeriesUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) { if let Route::Sonarr(active_sonarr_block, _) = app.get_current_route() { draw_popup(f, app, draw_add_series_search, Size::Large); - + match active_sonarr_block { ActiveSonarrBlock::AddSeriesPrompt | ActiveSonarrBlock::AddSeriesSelectMonitor diff --git a/src/ui/sonarr_ui/library/edit_series_ui.rs b/src/ui/sonarr_ui/library/edit_series_ui.rs index 394df83..74095da 100644 --- a/src/ui/sonarr_ui/library/edit_series_ui.rs +++ b/src/ui/sonarr_ui/library/edit_series_ui.rs @@ -48,24 +48,23 @@ impl DrawUi for EditSeriesUi { draw_popup(f, app, SeriesDetailsUi::draw, Size::Large); } } - - let draw_edit_series_prompt = - |f: &mut Frame<'_>, app: &mut App<'_>, prompt_area: Rect| { - draw_edit_series_confirmation_prompt(f, app, prompt_area); - - match active_sonarr_block { - ActiveSonarrBlock::EditSeriesSelectSeriesType => { - draw_edit_series_select_series_type_popup(f, app); - } - ActiveSonarrBlock::EditSeriesSelectQualityProfile => { - draw_edit_series_select_quality_profile_popup(f, app); - } - ActiveSonarrBlock::EditSeriesSelectLanguageProfile => { - draw_edit_series_select_language_profile_popup(f, app); - } - _ => (), + + let draw_edit_series_prompt = |f: &mut Frame<'_>, app: &mut App<'_>, prompt_area: Rect| { + draw_edit_series_confirmation_prompt(f, app, prompt_area); + + match active_sonarr_block { + ActiveSonarrBlock::EditSeriesSelectSeriesType => { + draw_edit_series_select_series_type_popup(f, app); } - }; + ActiveSonarrBlock::EditSeriesSelectQualityProfile => { + draw_edit_series_select_quality_profile_popup(f, app); + } + ActiveSonarrBlock::EditSeriesSelectLanguageProfile => { + draw_edit_series_select_language_profile_popup(f, app); + } + _ => (), + } + }; draw_popup(f, app, draw_edit_series_prompt, Size::Long); } diff --git a/src/ui/sonarr_ui/library/episode_details_ui_tests.rs b/src/ui/sonarr_ui/library/episode_details_ui_tests.rs index 21fea80..dc8e654 100644 --- a/src/ui/sonarr_ui/library/episode_details_ui_tests.rs +++ b/src/ui/sonarr_ui/library/episode_details_ui_tests.rs @@ -1,18 +1,20 @@ #[cfg(test)] mod tests { - use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS}; - use crate::ui::sonarr_ui::library::episode_details_ui::EpisodeDetailsUi; - use crate::ui::DrawUi; - use strum::IntoEnumIterator; + use crate::models::servarr_data::sonarr::sonarr_data::{ + ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, + }; + use crate::ui::sonarr_ui::library::episode_details_ui::EpisodeDetailsUi; + use crate::ui::DrawUi; + use strum::IntoEnumIterator; - #[test] - fn test_episode_details_ui_accepts() { - ActiveSonarrBlock::iter().for_each(|active_sonarr_block| { - if EPISODE_DETAILS_BLOCKS.contains(&active_sonarr_block) { - assert!(EpisodeDetailsUi::accepts(active_sonarr_block.into())); - } else { - assert!(!EpisodeDetailsUi::accepts(active_sonarr_block.into())); - } - }); - } -} \ No newline at end of file + #[test] + fn test_episode_details_ui_accepts() { + ActiveSonarrBlock::iter().for_each(|active_sonarr_block| { + if EPISODE_DETAILS_BLOCKS.contains(&active_sonarr_block) { + assert!(EpisodeDetailsUi::accepts(active_sonarr_block.into())); + } else { + assert!(!EpisodeDetailsUi::accepts(active_sonarr_block.into())); + } + }); + } +} diff --git a/src/ui/sonarr_ui/library/season_details_ui_tests.rs b/src/ui/sonarr_ui/library/season_details_ui_tests.rs index ea62998..7145fbc 100644 --- a/src/ui/sonarr_ui/library/season_details_ui_tests.rs +++ b/src/ui/sonarr_ui/library/season_details_ui_tests.rs @@ -1,22 +1,24 @@ #[cfg(test)] mod tests { - use strum::IntoEnumIterator; + use strum::IntoEnumIterator; - use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS}; - use crate::ui::sonarr_ui::library::season_details_ui::SeasonDetailsUi; - use crate::ui::DrawUi; + use crate::models::servarr_data::sonarr::sonarr_data::{ + ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, + }; + use crate::ui::sonarr_ui::library::season_details_ui::SeasonDetailsUi; + use crate::ui::DrawUi; - #[test] - fn test_season_details_ui_accepts() { - let mut blocks = SEASON_DETAILS_BLOCKS.clone().to_vec(); - blocks.extend(EPISODE_DETAILS_BLOCKS); - - ActiveSonarrBlock::iter().for_each(|active_sonarr_block| { - if blocks.contains(&active_sonarr_block) { - assert!(SeasonDetailsUi::accepts(active_sonarr_block.into())); - } else { - assert!(!SeasonDetailsUi::accepts(active_sonarr_block.into())); - } - }); - } + #[test] + fn test_season_details_ui_accepts() { + let mut blocks = SEASON_DETAILS_BLOCKS.clone().to_vec(); + blocks.extend(EPISODE_DETAILS_BLOCKS); + + ActiveSonarrBlock::iter().for_each(|active_sonarr_block| { + if blocks.contains(&active_sonarr_block) { + assert!(SeasonDetailsUi::accepts(active_sonarr_block.into())); + } else { + assert!(!SeasonDetailsUi::accepts(active_sonarr_block.into())); + } + }); + } } diff --git a/src/ui/sonarr_ui/library/series_details_ui_tests.rs b/src/ui/sonarr_ui/library/series_details_ui_tests.rs index ba960e7..9923c87 100644 --- a/src/ui/sonarr_ui/library/series_details_ui_tests.rs +++ b/src/ui/sonarr_ui/library/series_details_ui_tests.rs @@ -2,7 +2,9 @@ mod tests { use strum::IntoEnumIterator; - use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS}; + use crate::models::servarr_data::sonarr::sonarr_data::{ + ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS, + }; use crate::ui::sonarr_ui::library::series_details_ui::SeriesDetailsUi; use crate::ui::DrawUi; @@ -11,7 +13,7 @@ mod tests { let mut blocks = SERIES_DETAILS_BLOCKS.clone().to_vec(); blocks.extend(SEASON_DETAILS_BLOCKS); blocks.extend(EPISODE_DETAILS_BLOCKS); - + ActiveSonarrBlock::iter().for_each(|active_sonarr_block| { if blocks.contains(&active_sonarr_block) { assert!(SeriesDetailsUi::accepts(active_sonarr_block.into())); diff --git a/src/ui/sonarr_ui/root_folders/mod.rs b/src/ui/sonarr_ui/root_folders/mod.rs index 15a37a3..a8f7495 100644 --- a/src/ui/sonarr_ui/root_folders/mod.rs +++ b/src/ui/sonarr_ui/root_folders/mod.rs @@ -32,14 +32,11 @@ impl DrawUi for RootFoldersUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { if let Route::Sonarr(active_sonarr_block, _) = app.get_current_route() { draw_root_folders(f, app, area); - + match active_sonarr_block { - ActiveSonarrBlock::AddRootFolderPrompt => draw_popup( - f, - app, - draw_add_root_folder_prompt_box, - Size::InputBox, - ), + ActiveSonarrBlock::AddRootFolderPrompt => { + draw_popup(f, app, draw_add_root_folder_prompt_box, Size::InputBox) + } ActiveSonarrBlock::DeleteRootFolderPrompt => { let prompt = format!( "Do you really want to delete this root folder: \n{}?", diff --git a/src/ui/sonarr_ui/system/mod.rs b/src/ui/sonarr_ui/system/mod.rs index 2a5f9fb..f6c3824 100644 --- a/src/ui/sonarr_ui/system/mod.rs +++ b/src/ui/sonarr_ui/system/mod.rs @@ -58,7 +58,7 @@ impl DrawUi for SystemUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { let route = app.get_current_route(); draw_system_ui_layout(f, app, area); - + if SystemDetailsUi::accepts(route) { SystemDetailsUi::draw(f, app, area); } diff --git a/src/ui/sonarr_ui/system/system_details_ui.rs b/src/ui/sonarr_ui/system/system_details_ui.rs index f2eb60e..72eafe2 100644 --- a/src/ui/sonarr_ui/system/system_details_ui.rs +++ b/src/ui/sonarr_ui/system/system_details_ui.rs @@ -10,8 +10,7 @@ use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SYSTEM use crate::models::sonarr_models::SonarrTask; use crate::models::Route; use crate::ui::sonarr_ui::system::{ - draw_queued_events, extract_task_props, TASK_TABLE_CONSTRAINTS, - TASK_TABLE_HEADERS, + draw_queued_events, extract_task_props, TASK_TABLE_CONSTRAINTS, TASK_TABLE_HEADERS, }; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{borderless_block, style_log_list_item, title_block}; @@ -44,19 +43,11 @@ impl DrawUi for SystemDetailsUi { draw_logs_popup(f, app); } ActiveSonarrBlock::SystemTasks | ActiveSonarrBlock::SystemTaskStartConfirmPrompt => { - draw_popup( - f, - app, - draw_tasks_popup, - Size::Large, - ) + draw_popup(f, app, draw_tasks_popup, Size::Large) + } + ActiveSonarrBlock::SystemQueuedEvents => { + draw_popup(f, app, draw_queued_events, Size::Medium) } - ActiveSonarrBlock::SystemQueuedEvents => draw_popup( - f, - app, - draw_queued_events, - Size::Medium, - ), ActiveSonarrBlock::SystemUpdates => { draw_updates_popup(f, app); } diff --git a/src/ui/styles_tests.rs b/src/ui/styles_tests.rs index e32bf2a..98259ec 100644 --- a/src/ui/styles_tests.rs +++ b/src/ui/styles_tests.rs @@ -20,10 +20,7 @@ mod test { #[test] fn test_style_indeterminate() { - assert_eq!( - Style::new().indeterminate(), - Style::new().fg(COLOR_ORANGE) - ); + assert_eq!(Style::new().indeterminate(), Style::new().fg(COLOR_ORANGE)); } #[test] diff --git a/src/ui/utils_tests.rs b/src/ui/utils_tests.rs index f0b2e17..dfb288a 100644 --- a/src/ui/utils_tests.rs +++ b/src/ui/utils_tests.rs @@ -1,12 +1,17 @@ #[cfg(test)] mod test { + use crate::ui::utils::{ + borderless_block, centered_rect, convert_to_minutes_hours_days, decorate_peer_style, + get_width_from_percentage, layout_block, layout_block_bottom_border, layout_block_top_border, + layout_block_top_border_with_title, layout_block_with_title, logo_block, style_block_highlight, + style_log_list_item, title_block, title_block_centered, title_style, + }; use pretty_assertions::{assert_eq, assert_str_eq}; use ratatui::layout::{Alignment, Rect}; use ratatui::style::{Color, Modifier, Style, Stylize}; use ratatui::text::{Span, Text}; use ratatui::widgets::{Block, BorderType, Borders, ListItem}; use rstest::rstest; - use crate::ui::utils::{borderless_block, centered_rect, convert_to_minutes_hours_days, decorate_peer_style, get_width_from_percentage, layout_block, layout_block_bottom_border, layout_block_top_border, layout_block_top_border_with_title, layout_block_with_title, logo_block, style_block_highlight, style_log_list_item, title_block, title_block_centered, title_style}; #[test] fn test_layout_block() { diff --git a/src/ui/widgets/checkbox.rs b/src/ui/widgets/checkbox.rs index 14dc882..a3b4f81 100644 --- a/src/ui/widgets/checkbox.rs +++ b/src/ui/widgets/checkbox.rs @@ -1,6 +1,6 @@ -use derive_setters::Setters; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{borderless_block, layout_block, style_block_highlight}; +use derive_setters::Setters; use ratatui::buffer::Buffer; use ratatui::layout::{Constraint, Layout, Rect}; use ratatui::prelude::Text; diff --git a/src/ui/widgets/confirmation_prompt.rs b/src/ui/widgets/confirmation_prompt.rs index 8679204..f026b1b 100644 --- a/src/ui/widgets/confirmation_prompt.rs +++ b/src/ui/widgets/confirmation_prompt.rs @@ -3,12 +3,12 @@ use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{layout_paragraph_borderless, title_block_centered}; use crate::ui::widgets::button::Button; use crate::ui::widgets::checkbox::Checkbox; +use derive_setters::Setters; use ratatui::buffer::Buffer; use ratatui::layout::{Constraint, Flex, Layout, Rect}; use ratatui::text::Text; use ratatui::widgets::{Paragraph, Widget}; use std::iter; -use derive_setters::Setters; #[cfg(test)] #[path = "confirmation_prompt_tests.rs"] diff --git a/src/ui/widgets/managarr_table.rs b/src/ui/widgets/managarr_table.rs index e8f94d2..1b3db85 100644 --- a/src/ui/widgets/managarr_table.rs +++ b/src/ui/widgets/managarr_table.rs @@ -1,3 +1,6 @@ +use super::input_box_popup::InputBoxPopup; +use super::message::Message; +use super::popup::Size; use crate::models::stateful_table::StatefulTable; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{centered_rect, layout_block_top_border, title_block_centered}; @@ -5,6 +8,7 @@ use crate::ui::widgets::loading_block::LoadingBlock; use crate::ui::widgets::popup::Popup; use crate::ui::widgets::selectable_list::SelectableList; use crate::ui::HIGHLIGHT_SYMBOL; +use derive_setters::Setters; use ratatui::buffer::Buffer; use ratatui::layout::{Alignment, Constraint, Layout, Position, Rect}; use ratatui::prelude::{Style, Stylize, Text}; @@ -12,10 +16,6 @@ use ratatui::widgets::{Block, ListItem, Paragraph, Row, StatefulWidget, Table, W use ratatui::Frame; use std::fmt::Debug; use std::sync::atomic::Ordering; -use derive_setters::Setters; -use super::input_box_popup::InputBoxPopup; -use super::message::Message; -use super::popup::Size; #[cfg(test)] #[path = "managarr_table_tests.rs"] diff --git a/src/ui/widgets/mod.rs b/src/ui/widgets/mod.rs index 1e1c38a..e27fa2b 100644 --- a/src/ui/widgets/mod.rs +++ b/src/ui/widgets/mod.rs @@ -2,9 +2,9 @@ pub(super) mod button; pub(super) mod checkbox; pub(super) mod confirmation_prompt; pub(super) mod input_box; +mod input_box_popup; pub(super) mod loading_block; pub(super) mod managarr_table; pub(super) mod message; pub(super) mod popup; pub(super) mod selectable_list; -mod input_box_popup;