summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-08-02 00:53:08 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-08-02 00:53:08 -0400
commit06f85c3a2de5af9e0d63ff86a8e411030d1ee45d (patch)
tree1efe5f6cd038343b7f0c928cde5897fbe36b1da9 /discord/discord.cpp
parent6c77e89bbe18a2f03d4f00072dc3afe6b97c8866 (diff)
downloadabaddon-portaudio-06f85c3a2de5af9e0d63ff86a8e411030d1ee45d.tar.gz
abaddon-portaudio-06f85c3a2de5af9e0d63ff86a8e411030d1ee45d.zip
THREAD_LIST_SYNC
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r--discord/discord.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 6ac2223..dcab6be 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -1173,6 +1173,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::THREAD_DELETE: {
HandleGatewayThreadDelete(m);
} break;
+ case GatewayEvent::THREAD_LIST_SYNC: {
+ HandleGatewayThreadListSync(m);
+ } break;
}
} break;
default:
@@ -1653,6 +1656,8 @@ void DiscordClient::HandleGatewayRelationshipAdd(const GatewayMessage &msg) {
m_signal_relationship_add.emit(std::move(data));
}
+// remarkably this doesnt actually mean a thread was created
+// it can also mean you gained access to a thread. yay ...
void DiscordClient::HandleGatewayThreadCreate(const GatewayMessage &msg) {
ThreadCreateData data = msg.Data;
m_store.SetChannel(data.Channel.ID, data.Channel);
@@ -1665,6 +1670,16 @@ void DiscordClient::HandleGatewayThreadDelete(const GatewayMessage &msg) {
m_signal_thread_delete.emit(data);
}
+// this message is received when you load a channel as part of the lazy load request
+// so the ui will only update thread when you load a channel in some guild
+// which is rather annoying but oh well
+void DiscordClient::HandleGatewayThreadListSync(const GatewayMessage &msg) {
+ ThreadListSyncData data = msg.Data;
+ for (const auto &thread : data.Threads)
+ m_store.SetChannel(thread.ID, thread);
+ m_signal_thread_list_sync.emit(data);
+}
+
void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
ReadySupplementalData data = msg.Data;
for (const auto &p : data.MergedPresences.Friends) {
@@ -2029,6 +2044,7 @@ void DiscordClient::LoadEventMap() {
m_event_map["RELATIONSHIP_ADD"] = GatewayEvent::RELATIONSHIP_ADD;
m_event_map["THREAD_CREATE"] = GatewayEvent::THREAD_CREATE;
m_event_map["THREAD_DELETE"] = GatewayEvent::THREAD_DELETE;
+ m_event_map["THREAD_LIST_SYNC"] = GatewayEvent::THREAD_LIST_SYNC;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
@@ -2175,6 +2191,10 @@ DiscordClient::type_signal_thread_delete DiscordClient::signal_thread_delete() {
return m_signal_thread_delete;
}
+DiscordClient::type_signal_thread_list_sync DiscordClient::signal_thread_list_sync() {
+ return m_signal_thread_list_sync;
+}
+
DiscordClient::type_signal_message_sent DiscordClient::signal_message_sent() {
return m_signal_message_sent;
}