feat: Full CLI and TUI support for the Lidarr Indexers tab
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use super::lidarr_data::LidarrData;
|
||||
use crate::models::servarr_data::modals::EditIndexerModal;
|
||||
use crate::models::servarr_models::Indexer;
|
||||
use crate::models::{
|
||||
HorizontallyScrollableText,
|
||||
lidarr_models::{MonitorType, NewItemMonitorType},
|
||||
@@ -114,6 +116,76 @@ impl From<&LidarrData<'_>> for EditArtistModal {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&LidarrData<'_>> for EditIndexerModal {
|
||||
fn from(lidarr_data: &LidarrData<'_>) -> EditIndexerModal {
|
||||
let mut edit_indexer_modal = EditIndexerModal::default();
|
||||
let Indexer {
|
||||
name,
|
||||
enable_rss,
|
||||
enable_automatic_search,
|
||||
enable_interactive_search,
|
||||
tags,
|
||||
fields,
|
||||
priority,
|
||||
..
|
||||
} = lidarr_data.indexers.current_selection();
|
||||
let seed_ratio_field_option = fields
|
||||
.as_ref()
|
||||
.expect("indexer fields must exist")
|
||||
.iter()
|
||||
.find(|field| {
|
||||
field.name.as_ref().expect("indexer field name must exist") == "seedCriteria.seedRatio"
|
||||
});
|
||||
let seed_ratio_value_option = if let Some(seed_ratio_field) = seed_ratio_field_option {
|
||||
seed_ratio_field.value.clone()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
edit_indexer_modal.name = name.clone().expect("indexer name must exist").into();
|
||||
edit_indexer_modal.enable_rss = Some(*enable_rss);
|
||||
edit_indexer_modal.enable_automatic_search = Some(*enable_automatic_search);
|
||||
edit_indexer_modal.enable_interactive_search = Some(*enable_interactive_search);
|
||||
edit_indexer_modal.priority = *priority;
|
||||
edit_indexer_modal.url = fields
|
||||
.as_ref()
|
||||
.expect("indexer fields must exist")
|
||||
.iter()
|
||||
.find(|field| field.name.as_ref().expect("indexer field name must exist") == "baseUrl")
|
||||
.expect("baseUrl field must exist")
|
||||
.value
|
||||
.clone()
|
||||
.expect("baseUrl field value must exist")
|
||||
.as_str()
|
||||
.expect("baseUrl field value must be a string")
|
||||
.into();
|
||||
edit_indexer_modal.api_key = fields
|
||||
.as_ref()
|
||||
.expect("indexer fields must exist")
|
||||
.iter()
|
||||
.find(|field| field.name.as_ref().expect("indexer field name must exist") == "apiKey")
|
||||
.expect("apiKey field must exist")
|
||||
.value
|
||||
.clone()
|
||||
.expect("apiKey field value must exist")
|
||||
.as_str()
|
||||
.expect("apiKey field value must be a string")
|
||||
.into();
|
||||
|
||||
if let Some(seed_ratio_value) = seed_ratio_value_option {
|
||||
edit_indexer_modal.seed_ratio = seed_ratio_value
|
||||
.as_f64()
|
||||
.expect("Seed ratio value must be a valid f64")
|
||||
.to_string()
|
||||
.into();
|
||||
}
|
||||
|
||||
edit_indexer_modal.tags = lidarr_data.tag_ids_to_display(tags).into();
|
||||
|
||||
edit_indexer_modal
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
#[cfg_attr(test, derive(Debug))]
|
||||
pub struct AddRootFolderModal {
|
||||
|
||||
Reference in New Issue
Block a user