From a19d21427206bcd5ab5cc0af273a05f3fe827720 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 2 Aug 2021 02:00:03 -0400 Subject: basic THREAD_MEMBERS_UPDATE handling for updating channel list --- discord/discord.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'discord/discord.cpp') diff --git a/discord/discord.cpp b/discord/discord.cpp index dcab6be..82d2131 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -764,7 +764,7 @@ void DiscordClient::Unpin(Snowflake channel_id, Snowflake message_id, sigc::slot // i dont know if the location parameter is necessary at all but discord's thread implementation is extremely strange // so its here just in case void DiscordClient::LeaveThread(Snowflake channel_id, const std::string &location, sigc::slot callback) { - m_http.MakeDELETE("/channels/" + std::to_string(channel_id) + "/thread-members/@me?location=" + location, [this, callback](const http::response_type& response) { + m_http.MakeDELETE("/channels/" + std::to_string(channel_id) + "/thread-members/@me?location=" + location, [this, callback](const http::response_type &response) { if (CheckCode(response, 204)) callback(DiscordError::NONE); else @@ -1176,6 +1176,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) { case GatewayEvent::THREAD_LIST_SYNC: { HandleGatewayThreadListSync(m); } break; + case GatewayEvent::THREAD_MEMBERS_UPDATE: { + HandleGatewayThreadMembersUpdate(m); + } break; } } break; default: @@ -1680,6 +1683,11 @@ void DiscordClient::HandleGatewayThreadListSync(const GatewayMessage &msg) { m_signal_thread_list_sync.emit(data); } +void DiscordClient::HandleGatewayThreadMembersUpdate(const GatewayMessage &msg) { + ThreadMembersUpdateData data = msg.Data; + m_signal_thread_members_update.emit(data); +} + void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) { ReadySupplementalData data = msg.Data; for (const auto &p : data.MergedPresences.Friends) { @@ -2045,6 +2053,7 @@ void DiscordClient::LoadEventMap() { 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; + m_event_map["THREAD_MEMBERS_UPDATE"] = GatewayEvent::THREAD_MEMBERS_UPDATE; } DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() { @@ -2195,6 +2204,10 @@ DiscordClient::type_signal_thread_list_sync DiscordClient::signal_thread_list_sy return m_signal_thread_list_sync; } +DiscordClient::type_signal_thread_members_update DiscordClient::signal_thread_members_update() { + return m_signal_thread_members_update; +} + DiscordClient::type_signal_message_sent DiscordClient::signal_message_sent() { return m_signal_message_sent; } -- cgit v1.2.3