Refactored the ErrorMessage widget into a generic Message widget for enhanced reuse. Added support for testing a single indexer at a time.

This commit is contained in:
2024-02-15 11:11:10 -07:00
parent b49bfaa9c1
commit a360c83431
23 changed files with 418 additions and 78 deletions
+4 -4
View File
@@ -13,8 +13,8 @@ use crate::ui::radarr_ui::collections::edit_collection_ui::EditCollectionUi;
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{get_width_from_percentage, layout_block_top_border};
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
use crate::ui::widgets::error_message::ErrorMessage;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::message::Message;
use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::{draw_input_box_popup, draw_popup_over, DrawUi};
@@ -52,7 +52,7 @@ impl DrawUi for CollectionsUi {
Size::InputBox,
),
ActiveRadarrBlock::SearchCollectionError => {
let popup = Popup::new(ErrorMessage::new("Collection not found!")).size(Size::Error);
let popup = Popup::new(Message::new("Collection not found!")).size(Size::Message);
draw_collections(f, app, area);
f.render_widget(popup, f.size());
@@ -66,10 +66,10 @@ impl DrawUi for CollectionsUi {
Size::InputBox,
),
ActiveRadarrBlock::FilterCollectionsError => {
let popup = Popup::new(ErrorMessage::new(
let popup = Popup::new(Message::new(
"No collections found matching the given filter!",
))
.size(Size::Error);
.size(Size::Message);
draw_collections(f, app, area);
f.render_widget(popup, f.size());
+26 -1
View File
@@ -1,4 +1,5 @@
use ratatui::layout::{Constraint, Rect};
use ratatui::style::{Style, Stylize};
use ratatui::text::Text;
use ratatui::widgets::{Cell, Row};
use ratatui::Frame;
@@ -11,9 +12,11 @@ use crate::ui::radarr_ui::indexers::edit_indexer_ui::EditIndexerUi;
use crate::ui::radarr_ui::indexers::indexer_settings_ui::IndexerSettingsUi;
use crate::ui::radarr_ui::indexers::test_all_indexers_ui::TestAllIndexersUi;
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::layout_block_top_border;
use crate::ui::utils::{layout_block_top_border, title_block};
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
use crate::ui::widgets::loading_block::LoadingBlock;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::message::Message;
use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::DrawUi;
@@ -43,6 +46,28 @@ impl DrawUi for IndexersUi {
let route = *app.get_current_route();
let mut indexers_matchers = |active_radarr_block| match active_radarr_block {
ActiveRadarrBlock::Indexers => draw_indexers(f, app, area),
ActiveRadarrBlock::TestIndexer => {
draw_indexers(f, app, area);
if app.is_loading {
let loading_popup = Popup::new(LoadingBlock::new(
app.is_loading,
title_block("Testing Indexer"),
))
.size(Size::LargeMessage);
f.render_widget(loading_popup, f.size());
} else {
let popup = if let Some(result) = app.data.radarr_data.indexer_test_error.as_ref() {
Popup::new(Message::new(result.clone())).size(Size::LargeMessage)
} else {
let message = Message::new("Indexer test succeeded!")
.title("Success")
.style(Style::new().success().bold());
Popup::new(message).size(Size::Message)
};
f.render_widget(popup, f.size());
}
}
ActiveRadarrBlock::DeleteIndexerPrompt => {
let prompt = format!(
"Do you really want to delete this indexer: \n{}?",
+4 -5
View File
@@ -17,9 +17,9 @@ use crate::ui::utils::{
title_block_centered,
};
use crate::ui::widgets::button::Button;
use crate::ui::widgets::error_message::ErrorMessage;
use crate::ui::widgets::input_box::InputBox;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::message::Message;
use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::widgets::selectable_list::SelectableList;
use crate::ui::{draw_popup_over, DrawUi};
@@ -79,8 +79,7 @@ impl DrawUi for AddMovieUi {
ActiveRadarrBlock::AddMovieAlreadyInLibrary => {
draw_add_movie_search(f, app, area);
f.render_widget(
Popup::new(ErrorMessage::new("This film is already in your library"))
.size(Size::Error),
Popup::new(Message::new("This film is already in your library")).size(Size::Message),
f.size(),
);
}
@@ -220,8 +219,8 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let help_paragraph = Paragraph::new(help_text)
.block(borderless_block())
.alignment(Alignment::Center);
let error_message = ErrorMessage::new("No movies found matching your query!");
let error_message_popup = Popup::new(error_message).size(Size::Error);
let error_message = Message::new("No movies found matching your query!");
let error_message_popup = Popup::new(error_message).size(Size::Message);
f.render_widget(layout_block(), results_area);
f.render_widget(error_message_popup, f.size());
+4 -6
View File
@@ -13,8 +13,8 @@ use crate::ui::radarr_ui::library::edit_movie_ui::EditMovieUi;
use crate::ui::radarr_ui::library::movie_details_ui::MovieDetailsUi;
use crate::ui::utils::{get_width_from_percentage, layout_block_top_border};
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
use crate::ui::widgets::error_message::ErrorMessage;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::message::Message;
use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::{draw_input_box_popup, draw_popup_over, DrawUi};
use crate::utils::{convert_runtime, convert_to_gb};
@@ -57,7 +57,7 @@ impl DrawUi for LibraryUi {
Size::InputBox,
),
ActiveRadarrBlock::SearchMovieError => {
let popup = Popup::new(ErrorMessage::new("Movie not found!")).size(Size::Error);
let popup = Popup::new(Message::new("Movie not found!")).size(Size::Message);
draw_library(f, app, area);
f.render_widget(popup, f.size());
@@ -71,10 +71,8 @@ impl DrawUi for LibraryUi {
Size::InputBox,
),
ActiveRadarrBlock::FilterMoviesError => {
let popup = Popup::new(ErrorMessage::new(
"No movies found matching the given filter!",
))
.size(Size::Error);
let popup = Popup::new(Message::new("No movies found matching the given filter!"))
.size(Size::Message);
draw_library(f, app, area);
f.render_widget(popup, f.size());