feat(network): Support for editing a sonarr indexer
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::{
|
||||
servarr_models::RootFolder,
|
||||
servarr_data::modals::EditIndexerModal,
|
||||
servarr_models::{Indexer, RootFolder},
|
||||
sonarr_models::{Episode, SeriesMonitor, SeriesType, SonarrHistoryItem, SonarrRelease},
|
||||
stateful_list::StatefulList,
|
||||
stateful_table::StatefulTable,
|
||||
@@ -63,6 +64,84 @@ impl From<&SonarrData> for AddSeriesModal {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&SonarrData> for EditIndexerModal {
|
||||
fn from(sonarr_data: &SonarrData) -> EditIndexerModal {
|
||||
let mut edit_indexer_modal = EditIndexerModal::default();
|
||||
let Indexer {
|
||||
name,
|
||||
enable_rss,
|
||||
enable_automatic_search,
|
||||
enable_interactive_search,
|
||||
tags,
|
||||
fields,
|
||||
..
|
||||
} = sonarr_data.indexers.current_selection();
|
||||
let seed_ratio_field_option = fields
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.find(|field| field.name.as_ref().unwrap() == "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().unwrap().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.url = fields
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.find(|field| field.name.as_ref().unwrap() == "baseUrl")
|
||||
.unwrap()
|
||||
.value
|
||||
.clone()
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.unwrap()
|
||||
.into();
|
||||
edit_indexer_modal.api_key = fields
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.iter()
|
||||
.find(|field| field.name.as_ref().unwrap() == "apiKey")
|
||||
.unwrap()
|
||||
.value
|
||||
.clone()
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.unwrap()
|
||||
.into();
|
||||
|
||||
if seed_ratio_value_option.is_some() {
|
||||
edit_indexer_modal.seed_ratio = seed_ratio_value_option
|
||||
.unwrap()
|
||||
.as_f64()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.into();
|
||||
}
|
||||
|
||||
edit_indexer_modal.tags = tags
|
||||
.iter()
|
||||
.map(|tag_id| {
|
||||
sonarr_data
|
||||
.tags_map
|
||||
.get_by_left(&tag_id.as_i64().unwrap())
|
||||
.unwrap()
|
||||
.clone()
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.join(", ")
|
||||
.into();
|
||||
|
||||
edit_indexer_modal
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct EpisodeDetailsModal {
|
||||
pub episode_details: ScrollableText,
|
||||
|
||||
Reference in New Issue
Block a user