build: Upgraded to Ratatui v0.30.0 and fixed a new security vulnerability [#13]

This commit is contained in:
Dark-Alex-17 committed 2026-01-07 17:15:54 -07:00
1 parent 243de47cae
commit f0ed71b436
43 files changed
+1532 -828

No files matched your search

+9 -9
View File
@@ -164,14 +164,14 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.block(title_block_centered("Add Movie"));
search_box.show_cursor(f, search_box_area);
f.render_widget(layout_block().default(), results_area);
f.render_widget(layout_block().default_color(), results_area);
f.render_widget(search_box, search_box_area);
}
ActiveRadarrBlock::AddMovieEmptySearchResults => {
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().default(), results_area);
f.render_widget(layout_block().default_color(), results_area);
f.render_widget(error_message_popup, f.area());
}
ActiveRadarrBlock::AddMovieSearchResults
@@ -187,7 +187,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
search_results_row_mapping,
)
.loading(is_loading)
.block(layout_block().default())
.block(layout_block().default_color())
.headers([
"✔",
"Title",
@@ -338,22 +338,22 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
Layout::horizontal([Constraint::Percentage(50), Constraint::Percentage(50)])
.areas(buttons_area);
let root_folder_drop_down_button = Button::new()
let root_folder_drop_down_button = Button::default()
.title(&selected_root_folder.path)
.label("Root Folder")
.icon("▼")
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectRootFolder);
let monitor_drop_down_button = Button::new()
let monitor_drop_down_button = Button::default()
.title(selected_monitor.to_display_str())
.label("Monitor")
.icon("▼")
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMonitor);
let min_availability_drop_down_button = Button::new()
let min_availability_drop_down_button = Button::default()
.title(selected_minimum_availability.to_display_str())
.label("Minimum Availability")
.icon("▼")
.selected(selected_block == ActiveRadarrBlock::AddMovieSelectMinimumAvailability);
let quality_profile_drop_down_button = Button::new()
let quality_profile_drop_down_button = Button::default()
.title(selected_quality_profile)
.label("Quality Profile")
.icon("▼")
@@ -373,10 +373,10 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
render_selectable_input_box!(tags_input_box, f, tags_area);
}
let add_button = Button::new()
let add_button = Button::default()
.title("Add")
.selected(yes_no_value && highlight_yes_no);
let cancel_button = Button::new()
let cancel_button = Button::default()
.title("Cancel")
.selected(!yes_no_value && highlight_yes_no);
+4 -5
View File
@@ -14,7 +14,6 @@ use crate::models::servarr_data::radarr::radarr_data::{
use crate::render_selectable_input_box;
use crate::ui::radarr_ui::library::movie_details_ui::MovieDetailsUi;
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;
@@ -125,12 +124,12 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
let monitored_checkbox = Checkbox::new("Monitored")
.checked(monitored.unwrap_or_default())
.highlighted(selected_block == ActiveRadarrBlock::EditMovieToggleMonitored);
let min_availability_drop_down_button = Button::new()
let min_availability_drop_down_button = Button::default()
.title(selected_minimum_availability.to_display_str())
.label("Minimum Availability")
.icon("▼")
.selected(selected_block == ActiveRadarrBlock::EditMovieSelectMinimumAvailability);
let quality_profile_drop_down_button = Button::new()
let quality_profile_drop_down_button = Button::default()
.title(selected_quality_profile)
.label("Quality Profile")
.icon("▼")
@@ -158,10 +157,10 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
render_selectable_input_box!(tags_input_box, f, tags_area);
}
let save_button = Button::new()
let save_button = Button::default()
.title("Save")
.selected(yes_no_value && highlight_yes_no);
let cancel_button = Button::new()
let cancel_button = Button::default()
.title("Cancel")
.selected(!yes_no_value && highlight_yes_no);
+11 -7
View File
@@ -1,3 +1,7 @@
use crate::ui::styles::{
awaiting_import_style, downloaded_style, downloading_style, missing_style,
unmonitored_missing_style, unreleased_style,
};
use std::iter;
use ratatui::Frame;
@@ -529,12 +533,12 @@ fn draw_manual_search_confirm_prompt(f: &mut Frame<'_>, app: &mut App<'_>) {
fn style_from_download_status(download_status: &str, is_monitored: bool, status: String) -> Style {
match download_status {
"Downloaded" => Style::new().downloaded(),
"Awaiting Import" => Style::new().awaiting_import(),
"Downloading" => Style::new().downloading(),
_ if !is_monitored && download_status == "Missing" => Style::new().unmonitored_missing(),
_ if status != "released" && download_status == "Missing" => Style::new().unreleased(),
"Missing" => Style::new().missing(),
_ => Style::new().downloaded(),
"Downloaded" => downloaded_style(),
"Awaiting Import" => awaiting_import_style(),
"Downloading" => downloading_style(),
_ if !is_monitored && download_status == "Missing" => unmonitored_missing_style(),
_ if status != "released" && download_status == "Missing" => unreleased_style(),
"Missing" => missing_style(),
_ => downloaded_style(),
}
}
@@ -11,7 +11,10 @@ mod tests {
use crate::ui::radarr_ui::library::movie_details_ui::{
MovieDetailsUi, style_from_download_status,
};
use crate::ui::styles::ManagarrStyle;
use crate::ui::styles::{
awaiting_import_style, downloaded_style, downloading_style, missing_style,
unmonitored_missing_style,
};
use crate::ui::ui_test_utils::test_utils::{TerminalSize, render_to_string_with_app};
#[test]
@@ -26,13 +29,13 @@ mod tests {
}
#[rstest]
#[case("Downloading", true, "", Style::new().downloading())]
#[case("Downloaded", true, "", Style::new().downloaded())]
#[case("Awaiting Import", true, "", Style::new().awaiting_import())]
#[case("Missing", false, "", Style::new().unmonitored_missing())]
#[case("Missing", false, "", Style::new().unmonitored_missing())]
#[case("Missing", true, "released", Style::new().missing())]
#[case("", true, "", Style::new().downloaded())]
#[case("Downloading", true, "", downloading_style())]
#[case("Downloaded", true, "", downloaded_style())]
#[case("Awaiting Import", true, "", awaiting_import_style())]
#[case("Missing", false, "", unmonitored_missing_style())]
#[case("Missing", false, "", unmonitored_missing_style())]
#[case("Missing", true, "released", missing_style())]
#[case("", true, "", downloaded_style())]
fn test_style_from_download_status(
#[case] download_status: &str,
#[case] is_monitored: bool,