summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/discord/discord.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp
index e123818..ab821a8 100644
--- a/src/discord/discord.cpp
+++ b/src/discord/discord.cpp
@@ -1921,9 +1921,24 @@ void DiscordClient::HandleGatewayThreadMembersUpdate(const GatewayMessage &msg)
void DiscordClient::HandleGatewayThreadMemberUpdate(const GatewayMessage &msg) {
ThreadMemberUpdateData data = msg.Data;
+ if (!data.Member.ThreadID.has_value()) return;
+
m_joined_threads.insert(*data.Member.ThreadID);
if (*data.Member.UserID == GetUserData().ID)
m_signal_added_to_thread.emit(*data.Member.ThreadID);
+
+ if (data.Member.IsMuted.has_value()) {
+ const bool was_muted = IsChannelMuted(*data.Member.ThreadID);
+ const bool now_muted = *data.Member.IsMuted;
+
+ if (was_muted && !now_muted) {
+ m_muted_channels.erase(*data.Member.ThreadID);
+ m_signal_channel_unmuted.emit(*data.Member.ThreadID);
+ } else if (!was_muted && now_muted) {
+ m_muted_channels.insert(*data.Member.ThreadID);
+ m_signal_channel_muted.emit(*data.Member.ThreadID);
+ }
+ }
}
void DiscordClient::HandleGatewayThreadUpdate(const GatewayMessage &msg) {