use crate::v2::{NodeType, PrivacyLevel};
use serde::Deserialize;
use std::str::FromStr;
pub fn from_node_type<'de, D>(deserializer: D) -> Result<NodeType, D::Error>
where
D: serde::Deserializer<'de>,
{
let s: String = Deserialize::deserialize(deserializer)?;
NodeType::from_str(&s).or(Ok(NodeType::Unknown))
}
pub fn from_privacy<'de, D>(deserializer: D) -> Result<Option<PrivacyLevel>, D::Error>
where
D: serde::Deserializer<'de>,
{
let s: String = Deserialize::deserialize(deserializer)?;
Ok(PrivacyLevel::from_str(&s)
.ok()
.or(Some(PrivacyLevel::Unknown)))
}
pub fn is_none_or_empty_str(tst: &Option<String>) -> bool {
tst.as_ref().filter(|v| !(*v).is_empty()).is_none()
}