diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/chatmessage.cpp | 22 | ||||
-rw-r--r-- | components/chatwindow.cpp | 2 | ||||
-rw-r--r-- | components/chatwindow.hpp | 2 |
3 files changed, 18 insertions, 8 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 { diff --git a/components/chatwindow.cpp b/components/chatwindow.cpp index c2bd688..9b34dfd 100644 --- a/components/chatwindow.cpp +++ b/components/chatwindow.cpp @@ -1,6 +1,6 @@ #include "chatwindow.hpp" #include "chatmessage.hpp" -#include "../abaddon.hpp" +#include "abaddon.hpp" #include "chatinputindicator.hpp" #include "ratelimitindicator.hpp" #include "chatinput.hpp" diff --git a/components/chatwindow.hpp b/components/chatwindow.hpp index 5ef8bad..de55b0a 100644 --- a/components/chatwindow.hpp +++ b/components/chatwindow.hpp @@ -2,7 +2,7 @@ #include <gtkmm.h> #include <string> #include <set> -#include "../discord/discord.hpp" +#include "discord/discord.hpp" #include "completer.hpp" class ChatMessageHeader; |