From 0834802481a9c539fbf3782a138f40946d771dff Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Mon, 10 Mar 2025 15:08:02 -0600 Subject: [PATCH] fix: When adding a film from the Collection Details modal, the render order was wrong: Radarr Library -> Collection Table -> Add Movie Prompt (missing the Collection details prompt too). Correct order is: Collection Table -> Collection Details Modal -> Add Movie Modal --- .../collections/collection_details_ui.rs | 2 +- .../collection_details_ui_tests.rs | 7 +++ src/ui/radarr_ui/library/mod.rs | 43 +++++++++++-------- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/ui/radarr_ui/collections/collection_details_ui.rs b/src/ui/radarr_ui/collections/collection_details_ui.rs index cdd434f..2b16be6 100644 --- a/src/ui/radarr_ui/collections/collection_details_ui.rs +++ b/src/ui/radarr_ui/collections/collection_details_ui.rs @@ -33,7 +33,7 @@ impl DrawUi for CollectionDetailsUi { if let Route::Radarr(active_radarr_block, context_option) = route { if let Some(context) = context_option { return COLLECTION_DETAILS_BLOCKS.contains(&active_radarr_block) - && context == ActiveRadarrBlock::CollectionDetails; + || context == ActiveRadarrBlock::CollectionDetails; } return COLLECTION_DETAILS_BLOCKS.contains(&active_radarr_block); 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 b52d666..871c688 100644 --- a/src/ui/radarr_ui/collections/collection_details_ui_tests.rs +++ b/src/ui/radarr_ui/collections/collection_details_ui_tests.rs @@ -25,5 +25,12 @@ mod tests { ) .into() )); + assert!(CollectionDetailsUi::accepts( + ( + ActiveRadarrBlock::AddMoviePrompt, + Some(ActiveRadarrBlock::CollectionDetails) + ) + .into() + )); } } diff --git a/src/ui/radarr_ui/library/mod.rs b/src/ui/radarr_ui/library/mod.rs index 3afc071..25bec4e 100644 --- a/src/ui/radarr_ui/library/mod.rs +++ b/src/ui/radarr_ui/library/mod.rs @@ -44,25 +44,32 @@ impl DrawUi for LibraryUi { fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { let route = app.get_current_route(); - draw_library(f, app, area); - - match route { - _ if MovieDetailsUi::accepts(route) => MovieDetailsUi::draw(f, app, area), - _ if AddMovieUi::accepts(route) => AddMovieUi::draw(f, app, area), - _ if EditMovieUi::accepts(route) => EditMovieUi::draw(f, app, area), - _ if DeleteMovieUi::accepts(route) => DeleteMovieUi::draw(f, app, area), - Route::Radarr(ActiveRadarrBlock::UpdateAllMoviesPrompt, _) => { - let confirmation_prompt = ConfirmationPrompt::new() - .title("Update All Movies") - .prompt("Do you want to update info and scan your disks for all of your movies?") - .yes_no_value(app.data.radarr_data.prompt_confirm); - - f.render_widget( - Popup::new(confirmation_prompt).size(Size::MediumPrompt), - f.area(), - ); + if let Route::Radarr(_, context_option) = route { + if context_option.is_some() && AddMovieUi::accepts(route) { + AddMovieUi::draw(f, app, area); + return; + } + + draw_library(f, app, area); + + match route { + _ if MovieDetailsUi::accepts(route) => MovieDetailsUi::draw(f, app, area), + _ if AddMovieUi::accepts(route) => AddMovieUi::draw(f, app, area), + _ if EditMovieUi::accepts(route) => EditMovieUi::draw(f, app, area), + _ if DeleteMovieUi::accepts(route) => DeleteMovieUi::draw(f, app, area), + Route::Radarr(ActiveRadarrBlock::UpdateAllMoviesPrompt, _) => { + let confirmation_prompt = ConfirmationPrompt::new() + .title("Update All Movies") + .prompt("Do you want to update info and scan your disks for all of your movies?") + .yes_no_value(app.data.radarr_data.prompt_confirm); + + f.render_widget( + Popup::new(confirmation_prompt).size(Size::MediumPrompt), + f.area(), + ); + } + _ => (), } - _ => (), } } }