feat(ui): Sonarr support for viewing season details

This commit is contained in:
2024-12-10 18:23:09 -07:00
parent 7bf3311102
commit e9a30382a3
14 changed files with 737 additions and 92 deletions
+1 -13
View File
@@ -13,9 +13,7 @@ use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_
use crate::models::Route;
use crate::ui::radarr_ui::library::draw_library;
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{
borderless_block, 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;
@@ -555,13 +553,3 @@ fn style_from_download_status(download_status: &str, is_monitored: bool, status:
_ => Style::new().downloaded(),
}
}
fn decorate_peer_style(seeders: u64, leechers: u64, text: Text<'_>) -> Text<'_> {
if seeders == 0 {
text.failure()
} else if seeders < leechers {
text.warning()
} else {
text.success()
}
}
@@ -2,13 +2,11 @@
mod tests {
use pretty_assertions::assert_eq;
use ratatui::style::Style;
use ratatui::text::Text;
use rstest::rstest;
use strum::IntoEnumIterator;
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS};
use crate::ui::radarr_ui::library::movie_details_ui::{
decorate_peer_style, 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;
@@ -43,36 +41,4 @@ mod tests {
expected_style
);
}
#[rstest]
#[case(0, 0, PeerStyle::Failure)]
#[case(1, 2, PeerStyle::Warning)]
#[case(4, 2, PeerStyle::Success)]
fn test_decorate_peer_style(
#[case] seeders: u64,
#[case] leechers: u64,
#[case] expected_style: PeerStyle,
) {
let text = Text::from("test");
match expected_style {
PeerStyle::Failure => assert_eq!(
decorate_peer_style(seeders, leechers, text.clone()),
text.failure()
),
PeerStyle::Warning => assert_eq!(
decorate_peer_style(seeders, leechers, text.clone()),
text.warning()
),
PeerStyle::Success => assert_eq!(
decorate_peer_style(seeders, leechers, text.clone()),
text.success()
),
}
}
enum PeerStyle {
Failure,
Warning,
Success,
}
}