Added support for editing all indexer settings (finally)!
This commit is contained in:
+10
-1
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user