From 254207761c24e6d937c50de8cd0d26f19599514e Mon Sep 17 00:00:00 2001 From: FedericoBruzzone Date: Tue, 14 May 2024 09:58:44 +0200 Subject: [PATCH] Add the correct way to display all type of messages Signed-off-by: FedericoBruzzone --- src/tg/message_entry.rs | 100 +++++++++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 17 deletions(-) diff --git a/src/tg/message_entry.rs b/src/tg/message_entry.rs index f59da99..5922705 100644 --- a/src/tg/message_entry.rs +++ b/src/tg/message_entry.rs @@ -119,7 +119,7 @@ impl MessageEntry { app_context.style_chat_message_reply_content(), ), ); - entry.extend(vec![Line::from("")]); + // entry.extend(vec![Line::from("")]); Some(entry) } else { None @@ -131,7 +131,7 @@ impl MessageEntry { Span::styled("↩️ Reply to: ", app_context.style_chat_message_reply_text()), Span::styled("Story", app_context.style_chat_message_reply_name()), ])]); - entry.extend(vec![Line::from("")]); + // entry.extend(vec![Line::from("")]); Some(entry) } }, @@ -266,23 +266,89 @@ impl MessageEntry { Style::default().add_modifier(Modifier::UNDERLINED), )); } - tdlib::enums::TextEntityType::Mention => {} - tdlib::enums::TextEntityType::Hashtag => {} - tdlib::enums::TextEntityType::Cashtag => {} - tdlib::enums::TextEntityType::BotCommand => {} - tdlib::enums::TextEntityType::Url => {} - tdlib::enums::TextEntityType::EmailAddress => {} - tdlib::enums::TextEntityType::PhoneNumber => {} - tdlib::enums::TextEntityType::BankCardNumber => {} - tdlib::enums::TextEntityType::Strikethrough => {} + tdlib::enums::TextEntityType::Strikethrough => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::CROSSED_OUT), + )); + } + tdlib::enums::TextEntityType::Url => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::UNDERLINED), + )); + } + tdlib::enums::TextEntityType::TextUrl(text_url) => { + message_vec.push(Span::styled( + text_url.url.clone(), + Style::default().add_modifier(Modifier::UNDERLINED), + )); + } + tdlib::enums::TextEntityType::EmailAddress => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::UNDERLINED), + )); + } + tdlib::enums::TextEntityType::Mention => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::BOLD), + )); + } + tdlib::enums::TextEntityType::Hashtag => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::BOLD), + )); + } + tdlib::enums::TextEntityType::PhoneNumber => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::UNDERLINED), + )); + } + tdlib::enums::TextEntityType::MentionName(mention_name) => { + message_vec.push(Span::styled( + // TODO: Fix from user_id to username + mention_name.user_id.to_string(), + Style::default().add_modifier(Modifier::BOLD), + )); + } + tdlib::enums::TextEntityType::Code => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::DIM), + )); + } + tdlib::enums::TextEntityType::Pre => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::DIM), + )); + } + tdlib::enums::TextEntityType::PreCode(_pre_code) => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::DIM), + )); + } + tdlib::enums::TextEntityType::Cashtag => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::BOLD), + )); + } + tdlib::enums::TextEntityType::BankCardNumber => { + message_vec.push(Span::styled( + text.chars().skip(offset).take(length).collect::(), + Style::default().add_modifier(Modifier::UNDERLINED), + )); + } tdlib::enums::TextEntityType::Spoiler => {} - tdlib::enums::TextEntityType::Code => {} - tdlib::enums::TextEntityType::Pre => {} - tdlib::enums::TextEntityType::PreCode(_) => {} - tdlib::enums::TextEntityType::TextUrl(_) => {} - tdlib::enums::TextEntityType::MentionName(_) => {} - tdlib::enums::TextEntityType::CustomEmoji(_) => {} tdlib::enums::TextEntityType::MediaTimestamp(_) => {} + tdlib::enums::TextEntityType::CustomEmoji(_) => {} + tdlib::enums::TextEntityType::BotCommand => {} } message_vec.push(Span::raw( text.chars().skip(offset + length).collect::(),