diff --git a/src/handlers/sonarr_handlers/blocklist/blocklist_handler_tests.rs b/src/handlers/sonarr_handlers/blocklist/blocklist_handler_tests.rs index 05a80e6..f8bcd9a 100644 --- a/src/handlers/sonarr_handlers/blocklist/blocklist_handler_tests.rs +++ b/src/handlers/sonarr_handlers/blocklist/blocklist_handler_tests.rs @@ -441,10 +441,20 @@ mod tests { #[test] fn test_blocklist_sorting_options_language() { let expected_cmp_fn: fn(&BlocklistItem, &BlocklistItem) -> Ordering = |a, b| { - a.language - .name - .to_lowercase() - .cmp(&b.language.name.to_lowercase()) + let a_languages = a + .languages + .iter() + .map(|lang| lang.name.to_lowercase()) + .collect::>() + .join(", "); + let b_languages = b + .languages + .iter() + .map(|lang| lang.name.to_lowercase()) + .collect::>() + .join(", "); + + a_languages.cmp(&b_languages) }; let mut expected_blocklist_vec = blocklist_vec(); expected_blocklist_vec.sort_by(expected_cmp_fn); @@ -561,10 +571,10 @@ mod tests { BlocklistItem { id: 3, source_title: "test 1".to_owned(), - language: Language { + languages: vec![Language { id: 1, name: "telgu".to_owned(), - }, + }], quality: QualityWrapper { quality: Quality { name: "HD - 1080p".to_owned(), @@ -577,10 +587,10 @@ mod tests { BlocklistItem { id: 2, source_title: "test 2".to_owned(), - language: Language { + languages: vec![Language { id: 3, name: "chinese".to_owned(), - }, + }], quality: QualityWrapper { quality: Quality { name: "SD - 720p".to_owned(), @@ -593,10 +603,10 @@ mod tests { BlocklistItem { id: 1, source_title: "test 3".to_owned(), - language: Language { + languages: vec![Language { id: 1, name: "english".to_owned(), - }, + }], quality: QualityWrapper { quality: Quality { name: "HD - 1080p".to_owned(), diff --git a/src/handlers/sonarr_handlers/blocklist/mod.rs b/src/handlers/sonarr_handlers/blocklist/mod.rs index 5a88c4f..9843558 100644 --- a/src/handlers/sonarr_handlers/blocklist/mod.rs +++ b/src/handlers/sonarr_handlers/blocklist/mod.rs @@ -198,10 +198,20 @@ fn blocklist_sorting_options() -> Vec> { SortOption { name: "Language", cmp_fn: Some(|a, b| { - a.language - .name - .to_lowercase() - .cmp(&b.language.name.to_lowercase()) + let a_languages = a + .languages + .iter() + .map(|lang| lang.name.to_lowercase()) + .collect::>() + .join(", "); + let b_languages = b + .languages + .iter() + .map(|lang| lang.name.to_lowercase()) + .collect::>() + .join(", "); + + a_languages.cmp(&b_languages) }), }, SortOption { diff --git a/src/models/sonarr_models.rs b/src/models/sonarr_models.rs index a18acdf..48f55ef 100644 --- a/src/models/sonarr_models.rs +++ b/src/models/sonarr_models.rs @@ -82,7 +82,7 @@ pub struct BlocklistItem { pub series_title: Option, pub episode_ids: Vec, pub source_title: String, - pub language: Language, + pub languages: Vec, pub quality: QualityWrapper, pub date: DateTime, pub protocol: String, diff --git a/src/network/sonarr_network_tests.rs b/src/network/sonarr_network_tests.rs index 7fb52fb..ee9425d 100644 --- a/src/network/sonarr_network_tests.rs +++ b/src/network/sonarr_network_tests.rs @@ -1958,7 +1958,7 @@ mod test { "seriesId": 1007, "episodeIds": [42020], "sourceTitle": "z series", - "language": { "id": 1, "name": "English" }, + "languages": [{ "id": 1, "name": "English" }], "quality": { "quality": { "name": "Bluray-1080p" }}, "date": "2024-02-10T07:28:45Z", "protocol": "usenet", @@ -1970,7 +1970,7 @@ mod test { "seriesId": 2001, "episodeIds": [42018], "sourceTitle": "A Series", - "language": { "id": 1, "name": "English" }, + "languages": [{ "id": 1, "name": "English" }], "quality": { "quality": { "name": "Bluray-1080p" }}, "date": "2024-02-10T07:28:45Z", "protocol": "usenet", @@ -2061,7 +2061,7 @@ mod test { "seriesId": 1007, "episodeIds": [42020], "sourceTitle": "z series", - "language": { "id": 1, "name": "English" }, + "languages": [{ "id": 1, "name": "English" }], "quality": { "quality": { "name": "Bluray-1080p" }}, "date": "2024-02-10T07:28:45Z", "protocol": "usenet", @@ -2073,7 +2073,7 @@ mod test { "seriesId": 2001, "episodeIds": [42018], "sourceTitle": "A Series", - "language": { "id": 1, "name": "English" }, + "languages": [{ "id": 1, "name": "English" }], "quality": { "quality": { "name": "Bluray-1080p" }}, "date": "2024-02-10T07:28:45Z", "protocol": "usenet", @@ -7541,7 +7541,7 @@ mod test { series_title: None, episode_ids: vec![Number::from(1)], source_title: "Test Source Title".to_owned(), - language: language(), + languages: vec![language()], quality: quality_wrapper(), date: DateTime::from(DateTime::parse_from_rfc3339("2024-02-10T07:28:45Z").unwrap()), protocol: "usenet".to_owned(), diff --git a/src/ui/sonarr_ui/blocklist/mod.rs b/src/ui/sonarr_ui/blocklist/mod.rs index 60a952d..442c98a 100644 --- a/src/ui/sonarr_ui/blocklist/mod.rs +++ b/src/ui/sonarr_ui/blocklist/mod.rs @@ -87,18 +87,23 @@ fn draw_blocklist_table(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { let BlocklistItem { source_title, series_title, - language, + languages, quality, date, .. } = blocklist_item; let title = series_title.as_ref().unwrap_or(&String::new()).to_owned(); + let languages_string = languages + .iter() + .map(|lang| lang.name.to_owned()) + .collect::>() + .join(", "); Row::new(vec![ Cell::from(title), Cell::from(source_title.to_owned()), - Cell::from(language.name.to_owned()), + Cell::from(languages_string), Cell::from(quality.quality.name.to_owned()), Cell::from(date.to_string()), ])