feat(app): Dispatch support for all relevant Sonarr blocks

This commit is contained in:
2024-11-27 17:06:20 -07:00
parent 73a4129000
commit f139db07d9
86 changed files with 4075 additions and 3005 deletions
+10 -10
View File
@@ -46,7 +46,7 @@ impl DrawUi for AddMovieUi {
}
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
let draw_add_movie_search_popup =
|f: &mut Frame<'_>, app: &mut App<'_>, area: Rect| match active_radarr_block {
ActiveRadarrBlock::AddMovieSearchInput
@@ -202,7 +202,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.primary()
};
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
match active_radarr_block {
ActiveRadarrBlock::AddMovieSearchInput => {
let search_box = InputBox::new(block_content)
@@ -284,7 +284,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
}
fn draw_confirmation_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
match active_radarr_block {
ActiveRadarrBlock::AddMovieSelectMonitor => {
draw_confirmation_prompt(f, app, area);
@@ -354,7 +354,7 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let prompt = movie_overview;
let yes_no_value = app.data.radarr_data.prompt_confirm;
let selected_block = app.data.radarr_data.selected_block.get_active_block();
let highlight_yes_no = selected_block == &ActiveRadarrBlock::AddMovieConfirmPrompt;
let highlight_yes_no = selected_block == ActiveRadarrBlock::AddMovieConfirmPrompt;
let AddMovieModal {
monitor_list,
minimum_availability_list,
@@ -400,33 +400,33 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.title(&selected_root_folder.path)
.label("Root Folder")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectRootFolder);
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectRootFolder);
let monitor_drop_down_button = Button::new()
.title(selected_monitor.to_display_str())
.label("Monitor")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectMonitor);
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMonitor);
let min_availability_drop_down_button = Button::new()
.title(selected_minimum_availability.to_display_str())
.label("Minimum Availability")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectMinimumAvailability);
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMinimumAvailability);
let quality_profile_drop_down_button = Button::new()
.title(selected_quality_profile)
.label("Quality Profile")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::AddMovieSelectQualityProfile);
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectQualityProfile);
f.render_widget(root_folder_drop_down_button, root_folder_area);
f.render_widget(monitor_drop_down_button, monitor_area);
f.render_widget(min_availability_drop_down_button, min_availability_area);
f.render_widget(quality_profile_drop_down_button, quality_profile_area);
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
let tags_input_box = InputBox::new(&tags.text)
.offset(tags.offset.load(Ordering::SeqCst))
.label("Tags")
.highlighted(selected_block == &ActiveRadarrBlock::AddMovieTagsInput)
.highlighted(selected_block == ActiveRadarrBlock::AddMovieTagsInput)
.selected(active_radarr_block == ActiveRadarrBlock::AddMovieTagsInput);
render_selectable_input_box!(tags_input_box, f, tags_area);
}
+4 -4
View File
@@ -27,7 +27,7 @@ impl DrawUi for DeleteMovieUi {
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if matches!(
*app.get_current_route(),
app.get_current_route(),
Route::Radarr(ActiveRadarrBlock::DeleteMoviePrompt, _)
) {
let selected_block = app.data.radarr_data.selected_block.get_active_block();
@@ -38,16 +38,16 @@ impl DrawUi for DeleteMovieUi {
let checkboxes = vec![
Checkbox::new("Delete Movie File")
.checked(app.data.radarr_data.delete_movie_files)
.highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieToggleDeleteFile),
.highlighted(selected_block == ActiveRadarrBlock::DeleteMovieToggleDeleteFile),
Checkbox::new("Add List Exclusion")
.checked(app.data.radarr_data.add_list_exclusion)
.highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieToggleAddListExclusion),
.highlighted(selected_block == ActiveRadarrBlock::DeleteMovieToggleAddListExclusion),
];
let confirmation_prompt = ConfirmationPrompt::new()
.title("Delete Movie")
.prompt(&prompt)
.checkboxes(checkboxes)
.yes_no_highlighted(selected_block == &ActiveRadarrBlock::DeleteMovieConfirmPrompt)
.yes_no_highlighted(selected_block == ActiveRadarrBlock::DeleteMovieConfirmPrompt)
.yes_no_value(app.data.radarr_data.prompt_confirm);
draw_library(f, app, area);
+8 -8
View File
@@ -43,7 +43,7 @@ impl DrawUi for EditMovieUi {
}
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
let draw_edit_movie_prompt =
|f: &mut Frame<'_>, app: &mut App<'_>, prompt_area: Rect| match active_radarr_block {
ActiveRadarrBlock::EditMovieSelectMinimumAvailability => {
@@ -105,7 +105,7 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
let title = format!("Edit - {movie_title}");
let yes_no_value = app.data.radarr_data.prompt_confirm;
let selected_block = app.data.radarr_data.selected_block.get_active_block();
let highlight_yes_no = selected_block == &ActiveRadarrBlock::EditMovieConfirmPrompt;
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditMovieConfirmPrompt;
let EditMovieModal {
minimum_availability_list,
quality_profile_list,
@@ -139,28 +139,28 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
let prompt_paragraph = layout_paragraph_borderless(&movie_overview);
let monitored_checkbox = Checkbox::new("Monitored")
.checked(monitored.unwrap_or_default())
.highlighted(selected_block == &ActiveRadarrBlock::EditMovieToggleMonitored);
.highlighted(selected_block == ActiveRadarrBlock::EditMovieToggleMonitored);
let min_availability_drop_down_button = Button::new()
.title(selected_minimum_availability.to_display_str())
.label("Minimum Availability")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::EditMovieSelectMinimumAvailability);
.selected(selected_block == ActiveRadarrBlock::EditMovieSelectMinimumAvailability);
let quality_profile_drop_down_button = Button::new()
.title(selected_quality_profile)
.label("Quality Profile")
.icon("")
.selected(selected_block == &ActiveRadarrBlock::EditMovieSelectQualityProfile);
.selected(selected_block == ActiveRadarrBlock::EditMovieSelectQualityProfile);
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
let path_input_box = InputBox::new(&path.text)
.offset(path.offset.load(Ordering::SeqCst))
.label("Path")
.highlighted(selected_block == &ActiveRadarrBlock::EditMoviePathInput)
.highlighted(selected_block == ActiveRadarrBlock::EditMoviePathInput)
.selected(active_radarr_block == ActiveRadarrBlock::EditMoviePathInput);
let tags_input_box = InputBox::new(&tags.text)
.offset(tags.offset.load(Ordering::SeqCst))
.label("Tags")
.highlighted(selected_block == &ActiveRadarrBlock::EditMovieTagsInput)
.highlighted(selected_block == ActiveRadarrBlock::EditMovieTagsInput)
.selected(active_radarr_block == ActiveRadarrBlock::EditMovieTagsInput);
match active_radarr_block {
+2 -2
View File
@@ -44,7 +44,7 @@ impl DrawUi for LibraryUi {
}
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let route = *app.get_current_route();
let route = app.get_current_route();
let mut library_ui_matchers = |active_radarr_block: ActiveRadarrBlock| match active_radarr_block
{
ActiveRadarrBlock::Movies | ActiveRadarrBlock::MoviesSortPrompt => draw_library(f, app, area),
@@ -103,7 +103,7 @@ impl DrawUi for LibraryUi {
}
pub(super) fn draw_library(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
let current_selection = if !app.data.radarr_data.movies.items.is_empty() {
app.data.radarr_data.movies.current_selection().clone()
} else {
+3 -3
View File
@@ -39,7 +39,7 @@ impl DrawUi for MovieDetailsUi {
}
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, context_option) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, context_option) = app.get_current_route() {
let draw_movie_info_popup = |f: &mut Frame<'_>, app: &mut App<'_>, popup_area: Rect| {
let content_area = draw_tabs(
f,
@@ -371,7 +371,7 @@ fn draw_movie_crew(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
}
fn draw_movie_releases(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, _) = *app.get_current_route() {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
let (current_selection, is_empty) = match app.data.radarr_data.movie_details_modal.as_ref() {
Some(movie_details_modal) if !movie_details_modal.movie_releases.items.is_empty() => (
movie_details_modal
@@ -382,7 +382,7 @@ fn draw_movie_releases(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
),
_ => (RadarrRelease::default(), true),
};
let current_route = *app.get_current_route();
let current_route = app.get_current_route();
let mut default_movie_details_modal = MovieDetailsModal::default();
let help_footer = app
.data