THREAD_LIST_SYNC

This commit is contained in:
ouwou
2021-08-02 00:53:08 -04:00
parent 6c77e89bbe
commit 06f85c3a2d
4 changed files with 38 additions and 0 deletions

View File

@@ -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;
}