summaryrefslogtreecommitdiffstats
path: root/src/lossy.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lossy.rs')
-rw-r--r--src/lossy.rs51
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"),
+ }
+ }
+}