summaryrefslogtreecommitdiff
path: root/src/abaddon.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2022-03-03 23:45:30 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2022-03-03 23:45:30 -0500
commit7f1d3df4a5d640ae3a885886139236e8f9c5555c (patch)
tree0449ccf558357717fa5b570f53828535e24d8b7e /src/abaddon.cpp
parent17f1289c84af11b6e02f5f5de4714c8aad18e47e (diff)
downloadabaddon-portaudio-7f1d3df4a5d640ae3a885886139236e8f9c5555c.tar.gz
abaddon-portaudio-7f1d3df4a5d640ae3a885886139236e8f9c5555c.zip
start sending request guild members for unknown members
Diffstat (limited to 'src/abaddon.cpp')
-rw-r--r--src/abaddon.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/abaddon.cpp b/src/abaddon.cpp
index 51f8052..b287e17 100644
--- a/src/abaddon.cpp
+++ b/src/abaddon.cpp
@@ -325,6 +325,22 @@ void Abaddon::ShowGuildVerificationGateDialog(Snowflake guild_id) {
}
}
+void Abaddon::CheckMessagesForMembers(const ChannelData &chan, const std::vector<Message> &msgs) {
+ if (!chan.GuildID.has_value()) return;
+
+ // TODO sql query
+ std::set<Snowflake> fetch;
+ std::set<Snowflake> ids;
+ for (const auto& msg : msgs)
+ ids.insert(msg.Author.ID);
+ for (const auto id : ids) {
+ const auto member = m_discord.GetMember(id, *chan.GuildID);
+ if (!member.has_value())
+ fetch.insert(id);
+ }
+ m_discord.RequestMembers(*chan.GuildID, fetch.begin(), fetch.end());
+}
+
void Abaddon::SetupUserMenu() {
m_user_menu = Gtk::manage(new Gtk::Menu);
m_user_menu_insert_mention = Gtk::manage(new Gtk::MenuItem("Insert Mention"));
@@ -536,7 +552,8 @@ void Abaddon::ActionChannelOpened(Snowflake id) {
if (m_channels_requested.find(id) == m_channels_requested.end()) {
// dont fire requests we know will fail
if (can_access) {
- m_discord.FetchMessagesInChannel(id, [this, id](const std::vector<Message> &msgs) {
+ m_discord.FetchMessagesInChannel(id, [channel, this, id](const std::vector<Message> &msgs) {
+ CheckMessagesForMembers(*channel, msgs);
m_main_window->UpdateChatWindowContents();
m_channels_requested.insert(id);
});