diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-20 18:48:15 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-20 18:48:15 -0500 |
commit | 574cbc35d85d5f90e2d5946da636f9c1cc0cd2ad (patch) | |
tree | 3797355d4db144311820b499501ff104e0eadd9a /components/chatmessage.cpp | |
parent | 9d21df8e1bca9ccfa1bcfcde3bc8f35473866166 (diff) | |
parent | fc76a15c4636df4961af1879ddecb111a9f68260 (diff) | |
download | abaddon-portaudio-574cbc35d85d5f90e2d5946da636f9c1cc0cd2ad.tar.gz abaddon-portaudio-574cbc35d85d5f90e2d5946da636f9c1cc0cd2ad.zip |
merge store
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r-- | components/chatmessage.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index 4408f62..f7ca6a5 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -231,11 +231,13 @@ void ChatMessageItemContainer::UpdateTextComponent(Gtk::TextView *tv) { } } break; case MessageType::RECIPIENT_ADD: { + if (data->Mentions.size() == 0) break; const auto &adder = Abaddon::Get().GetDiscordClient().GetUser(data->Author.ID); const auto &added = data->Mentions[0]; b->insert_markup(s, "<i><span color='#999999'><span color='#eeeeee'>" + adder->Username + "</span> added <span color='#eeeeee'>" + added.Username + "</span></span></i>"); } break; case MessageType::RECIPIENT_REMOVE: { + if (data->Mentions.size() == 0) break; const auto &adder = Abaddon::Get().GetDiscordClient().GetUser(data->Author.ID); const auto &added = data->Mentions[0]; if (adder->ID == added.ID) @@ -653,6 +655,14 @@ Gtk::Widget *ChatMessageItemContainer::CreateReplyComponent(const Message &data) return author->GetEscapedBoldString<false>(); }; + // if the message wasnt fetched from store it might have an un-fetched reference + std::optional<std::shared_ptr<Message>> referenced_message = data.ReferencedMessage; + if (data.MessageReference.has_value() && data.MessageReference->MessageID.has_value() && !referenced_message.has_value()) { + auto refd = discord.GetMessage(*data.MessageReference->MessageID); + if (refd.has_value()) + referenced_message = std::make_shared<Message>(std::move(*refd)); + } + if (data.Interaction.has_value()) { const auto user = *discord.GetUser(data.Interaction->User.ID); @@ -664,16 +674,16 @@ Gtk::Widget *ChatMessageItemContainer::CreateReplyComponent(const Message &data) } else { lbl->set_markup(user.GetEscapedBoldString<false>()); } - } else if (data.ReferencedMessage.has_value()) { - if (data.ReferencedMessage.value().get() == nullptr) { + } else if (referenced_message.has_value()) { + if (referenced_message.value() == nullptr) { lbl->set_markup("<i>deleted message</i>"); } else { - const auto &referenced = *data.ReferencedMessage.value().get(); + const auto &referenced = *referenced_message.value(); Glib::ustring text; - if (referenced.Content == "") { - if (referenced.Attachments.size() > 0) { + if (referenced.Content.empty()) { + if (!referenced.Attachments.empty()) { text = "<i>attachment</i>"; - } else if (referenced.Embeds.size() > 0) { + } else if (!referenced.Embeds.empty()) { text = "<i>embed</i>"; } } else { |