Added support for editing all indexer settings (finally)!

This commit is contained in:
2023-09-08 16:06:20 -06:00
parent b16a58deae
commit 2b15afcb83
14 changed files with 1018 additions and 37 deletions
+10 -1
View File
@@ -2,7 +2,7 @@ use std::cell::RefCell;
use std::fmt::{Debug, Display, Formatter};
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
use serde::{de, Deserialize, Deserializer};
use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
use serde_json::Number;
use tui::widgets::{ListState, TableState};
@@ -223,6 +223,15 @@ impl Display for HorizontallyScrollableText {
}
}
impl Serialize for HorizontallyScrollableText {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(&self.text)
}
}
impl HorizontallyScrollableText {
pub fn new(text: String) -> HorizontallyScrollableText {
HorizontallyScrollableText {
+11 -1
View File
@@ -7,6 +7,7 @@ mod tests {
use serde::de::value::F64Deserializer;
use serde::de::value::I64Deserializer;
use serde::de::IntoDeserializer;
use serde_json::to_string;
use crate::models::from_i64;
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
@@ -731,12 +732,21 @@ mod tests {
fn test_from_i64_error() {
let deserializer: F64Deserializer<ValueError> = 1f64.into_deserializer();
assert_eq!(
assert_str_eq!(
from_i64(deserializer).unwrap_err().to_string(),
"Unable to convert Number to i64: Number(1.0)"
);
}
#[test]
fn test_horizontally_scrollable_serialize() {
let text = HorizontallyScrollableText::from("Test");
let serialized = to_string(&text).expect("Serialization failed!");
assert_str_eq!(serialized, r#""Test""#);
}
fn create_test_tab_routes() -> Vec<TabRoute> {
vec![
TabRoute {
+2 -1
View File
@@ -207,7 +207,8 @@ pub struct IndexerSettings {
pub retention: i64,
#[serde(deserialize_with = "super::from_i64")]
pub rss_sync_interval: i64,
pub whitelisted_hardcoded_subs: String,
#[serde(default)]
pub whitelisted_hardcoded_subs: HorizontallyScrollableText,
}
#[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq, Ord, PartialOrd)]
@@ -424,11 +424,12 @@ pub static INDEXER_SETTINGS_BLOCKS: [ActiveRadarrBlock; 10] = [
ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags,
ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
];
pub static INDEXER_SETTINGS_SELECTION_BLOCKS: [ActiveRadarrBlock; 9] = [
pub static INDEXER_SETTINGS_SELECTION_BLOCKS: [ActiveRadarrBlock; 10] = [
ActiveRadarrBlock::IndexerSettingsMinimumAgeInput,
ActiveRadarrBlock::IndexerSettingsRetentionInput,
ActiveRadarrBlock::IndexerSettingsMaximumSizeInput,
ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags,
ActiveRadarrBlock::IndexerSettingsConfirmPrompt,
ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput,
ActiveRadarrBlock::IndexerSettingsRssSyncIntervalInput,
ActiveRadarrBlock::IndexerSettingsWhitelistedSubtitleTagsInput,
@@ -560,6 +560,10 @@ mod tests {
indexer_settings_block_iter.next().unwrap(),
&ActiveRadarrBlock::IndexerSettingsTogglePreferIndexerFlags
);
assert_eq!(
indexer_settings_block_iter.next().unwrap(),
&ActiveRadarrBlock::IndexerSettingsConfirmPrompt
);
assert_eq!(
indexer_settings_block_iter.next().unwrap(),
&ActiveRadarrBlock::IndexerSettingsAvailabilityDelayInput