handle thread create via thread_member_update

This commit is contained in:
ouwou
2021-08-15 00:25:00 -04:00
parent 7ffded5b13
commit 613bb2b7c6
4 changed files with 23 additions and 1 deletions
+12 -1
View File
@@ -1201,6 +1201,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::THREAD_MEMBERS_UPDATE: { case GatewayEvent::THREAD_MEMBERS_UPDATE: {
HandleGatewayThreadMembersUpdate(m); HandleGatewayThreadMembersUpdate(m);
} break; } break;
case GatewayEvent::THREAD_MEMBER_UPDATE: {
HandleGatewayThreadMemberUpdate(m);
} break;
} }
} break; } break;
default: default:
@@ -1693,7 +1696,7 @@ void DiscordClient::HandleGatewayThreadCreate(const GatewayMessage &msg) {
void DiscordClient::HandleGatewayThreadDelete(const GatewayMessage &msg) { void DiscordClient::HandleGatewayThreadDelete(const GatewayMessage &msg) {
ThreadDeleteData data = msg.Data; ThreadDeleteData data = msg.Data;
// m_store.ClearChannel? m_store.ClearChannel(data.ID);
m_signal_thread_delete.emit(data); m_signal_thread_delete.emit(data);
} }
@@ -1723,6 +1726,13 @@ void DiscordClient::HandleGatewayThreadMembersUpdate(const GatewayMessage &msg)
m_signal_thread_members_update.emit(data); 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) { void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
ReadySupplementalData data = msg.Data; ReadySupplementalData data = msg.Data;
for (const auto &p : data.MergedPresences.Friends) { 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_DELETE"] = GatewayEvent::THREAD_DELETE;
m_event_map["THREAD_LIST_SYNC"] = GatewayEvent::THREAD_LIST_SYNC; m_event_map["THREAD_LIST_SYNC"] = GatewayEvent::THREAD_LIST_SYNC;
m_event_map["THREAD_MEMBERS_UPDATE"] = GatewayEvent::THREAD_MEMBERS_UPDATE; 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() { DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
+1
View File
@@ -244,6 +244,7 @@ private:
void HandleGatewayThreadDelete(const GatewayMessage &msg); void HandleGatewayThreadDelete(const GatewayMessage &msg);
void HandleGatewayThreadListSync(const GatewayMessage &msg); void HandleGatewayThreadListSync(const GatewayMessage &msg);
void HandleGatewayThreadMembersUpdate(const GatewayMessage &msg); void HandleGatewayThreadMembersUpdate(const GatewayMessage &msg);
void HandleGatewayThreadMemberUpdate(const GatewayMessage &msg);
void HandleGatewayReadySupplemental(const GatewayMessage &msg); void HandleGatewayReadySupplemental(const GatewayMessage &msg);
void HandleGatewayReconnect(const GatewayMessage &msg); void HandleGatewayReconnect(const GatewayMessage &msg);
void HandleGatewayInvalidSession(const GatewayMessage &msg); void HandleGatewayInvalidSession(const GatewayMessage &msg);
+4
View File
@@ -503,3 +503,7 @@ void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m) {
JS_D("members", m.Members); JS_D("members", m.Members);
JS_D("has_more", m.HasMore); JS_D("has_more", m.HasMore);
} }
void from_json(const nlohmann::json &j, ThreadMemberUpdateData &m) {
m.Member = j;
}
+6
View File
@@ -708,3 +708,9 @@ struct ArchivedThreadsResponseData {
friend void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m); friend void from_json(const nlohmann::json &j, ArchivedThreadsResponseData &m);
}; };
struct ThreadMemberUpdateData {
ThreadMemberObject Member;
friend void from_json(const nlohmann::json &j, ThreadMemberUpdateData &m);
};