diff options
Diffstat (limited to 'src/lossy.rs')
-rw-r--r-- | src/lossy.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/lossy.rs b/src/lossy.rs new file mode 100644 index 0000000..7992c6a --- /dev/null +++ b/src/lossy.rs @@ -0,0 +1,51 @@ +pub enum LossyUsername { + Username(String), + NoUsername(String, String), + Unknown, +} + +impl LossyUsername { + pub fn from_user_ref(from: &paperplane::types::User) -> Self { + if from.username.len() > 0 { + LossyUsername::Username(from.username.clone()) + } else { + LossyUsername::NoUsername(from.first_name.clone(), from.last_name.clone()) + } + } +} + +impl std::fmt::Display for LossyUsername { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + LossyUsername::Username(username) => write!(f, "@{}", username), + LossyUsername::NoUsername(first, last) => { + if last.len() > 0 { + write!(f, "{} {}", first, last) + } else { + write!(f, "{}", first) + } + } + LossyUsername::Unknown => write!(f, "unknown"), + } + } +} + +pub enum LossyChatTitle { + Title(String), + Unknown, +} + +impl LossyChatTitle { + pub fn from_chat_ref(from: &paperplane::types::Chat) -> Self { + Self::Title(from.title.clone()) + } +} + +impl std::fmt::Display for LossyChatTitle { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + LossyChatTitle::Title(title) => write!(f, "{}", title), + LossyChatTitle::Unknown => write!(f, "unknown"), + } + } +} |