feat(handler): Blocklist handler support

This commit is contained in:
2024-12-02 16:37:46 -07:00
parent f0d8555a8a
commit 4b7185fbb0
8 changed files with 1284 additions and 4 deletions
+22 -2
View File
@@ -19,7 +19,7 @@ use crate::{
LogResponse, QualityProfile, QueueEvent, RootFolder, SecurityConfig, Tag, Update,
},
sonarr_models::{
AddSeriesBody, AddSeriesOptions, AddSeriesSearchResult, BlocklistResponse,
AddSeriesBody, AddSeriesOptions, AddSeriesSearchResult, BlocklistItem, BlocklistResponse,
DeleteSeriesParams, DownloadRecord, DownloadsResponse, EditSeriesParams, Episode,
IndexerSettings, Series, SonarrCommandBody, SonarrHistoryItem, SonarrHistoryWrapper,
SonarrRelease, SonarrReleaseDownloadBody, SonarrSerdeable, SonarrTask, SonarrTaskName,
@@ -1303,7 +1303,27 @@ impl<'a, 'b> Network<'a, 'b> {
app.get_current_route(),
Route::Sonarr(ActiveSonarrBlock::BlocklistSortPrompt, _)
) {
let mut blocklist_vec = blocklist_resp.records;
let mut blocklist_vec: Vec<BlocklistItem> = blocklist_resp
.records
.into_iter()
.map(|item| {
if let Some(series) = app
.data
.sonarr_data
.series
.items
.iter()
.find(|it| it.id == item.series_id)
{
BlocklistItem {
series_title: Some(series.title.text.clone()),
..item
}
} else {
item
}
})
.collect();
blocklist_vec.sort_by(|a, b| a.id.cmp(&b.id));
app.data.sonarr_data.blocklist.set_items(blocklist_vec);
app.data.sonarr_data.blocklist.apply_sorting_toggle(false);
+13
View File
@@ -1956,6 +1956,7 @@ mod test {
BlocklistItem {
id: 123,
series_id: 1007,
series_title: Some("Z Series".into()),
source_title: "z series".into(),
episode_ids: vec![Number::from(42020)],
..blocklist_item()
@@ -1978,6 +1979,17 @@ mod test {
None,
)
.await;
app_arc
.lock()
.await
.data
.sonarr_data
.series
.set_items(vec![Series {
id: 1007,
title: "Z Series".into(),
..series()
}]);
app_arc.lock().await.data.sonarr_data.blocklist.sort_asc = true;
if use_custom_sorting {
let cmp_fn = |a: &BlocklistItem, b: &BlocklistItem| {
@@ -6682,6 +6694,7 @@ mod test {
BlocklistItem {
id: 1,
series_id: 1,
series_title: None,
episode_ids: vec![Number::from(1)],
source_title: "Test Source Title".to_owned(),
language: language(),