summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-08-15 00:25:00 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-08-15 00:25:00 -0400
commit613bb2b7c6065035bba5eee606249e413dcc5149 (patch)
tree4d9bb3fcdd2f19e533faa5016ca6456cb1545784 /discord
parent7ffded5b1373444cf3442d759a3bd8ae0940bd7d (diff)
downloadabaddon-portaudio-613bb2b7c6065035bba5eee606249e413dcc5149.tar.gz
abaddon-portaudio-613bb2b7c6065035bba5eee606249e413dcc5149.zip
handle thread create via thread_member_update
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp13
-rw-r--r--discord/discord.hpp1
-rw-r--r--discord/objects.cpp4
-rw-r--r--discord/objects.hpp6
4 files changed, 23 insertions, 1 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 7dfacc0..2e12d41 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -1201,6 +1201,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::THREAD_MEMBERS_UPDATE: {
HandleGatewayThreadMembersUpdate(m);
} break;
+ case GatewayEvent::THREAD_MEMBER_UPDATE: {
+ HandleGatewayThreadMemberUpdate(m);
+ } break;
}
} break;
default:
@@ -1693,7 +1696,7 @@ void DiscordClient::HandleGatewayThreadCreate(const GatewayMessage &msg) {
void DiscordClient::HandleGatewayThreadDelete(const GatewayMessage &msg) {
ThreadDeleteData data = msg.Data;
- // m_store.ClearChannel?
+ m_store.ClearChannel(data.ID);
m_signal_thread_delete.emit(data);
}
@@ -1723,6 +1726,13 @@ void DiscordClient::HandleGatewayThreadMembersUpdate(const GatewayMessage &msg)
m_signal_thread_members_update.emit(data);
}
+void DiscordClient::HandleGatewayThreadMemberUpdate(const GatewayMessage &msg) {
+ ThreadMemberUpdateData data = msg.Data;
+ m_joined_threads.insert(*data.Member.ThreadID);
+ if (*data.Member.UserID == GetUserData().ID)
+ m_signal_added_to_thread.emit(*data.Member.ThreadID);
+}
+
void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
ReadySupplementalData data = msg.Data;
for (const auto &p : data.MergedPresences.Friends) {
@@ -2089,6 +2099,7 @@ void DiscordClient::LoadEventMap() {
m_event_map["THREAD_DELETE"] = GatewayEvent::THREAD_DELETE;
m_event_map["THREAD_LIST_SYNC"] = GatewayEvent::THREAD_LIST_SYNC;
m_event_map["THREAD_MEMBERS_UPDATE"] = GatewayEvent::THREAD_MEMBERS_UPDATE;
+ m_event_map["THREAD_MEMBER_UPDATE"] = GatewayEvent::THREAD_MEMBER_UPDATE;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
diff --git a/discord/discord.hpp b/discord/discord.hpp
index f001461..952a5c4 100644
--- a/discord/discord.hpp
+++ b/discord/discord.hpp
@@ -244,6 +244,7 @@ private:
void HandleGatewayThreadDelete(const GatewayMessage &msg);
void HandleGatewayThreadListSync(const GatewayMessage &msg);
void HandleGatewayThreadMembersUpdate(const GatewayMessage &msg);
+ void HandleGatewayThreadMemberUpdate(const GatewayMessage &msg);
void HandleGatewayReadySupplemental(const GatewayMessage &msg);
void HandleGatewayReconnect(const GatewayMessage &msg);
void HandleGatewayInvalidSession(const GatewayMessage &msg);
diff --git a/discord/objects.cpp b/discord/objects.cpp
index 723ca09..77d5286 100644
--- a/discord/objects.cpp
+++ b/discord/objects.cpp
@@ -503,3 +503,7 @@ void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m) {
JS_D("members", m.Members);
JS_D("has_more", m.HasMore);
}
+
+void from_json(const nlohmann::json &j, ThreadMemberUpdateData &m) {
+ m.Member = j;
+}
diff --git a/discord/objects.hpp b/discord/objects.hpp
index 9046162..4e7de81 100644
--- a/discord/objects.hpp
+++ b/discord/objects.hpp
@@ -708,3 +708,9 @@ struct ArchivedThreadsResponseData {
friend void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m);
};
+
+struct ThreadMemberUpdateData {
+ ThreadMemberObject Member;
+
+ friend void from_json(const nlohmann::json &j, ThreadMemberUpdateData &m);
+};