summaryrefslogtreecommitdiff
path: root/src/discord/discord.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2024-03-14 01:08:13 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2024-03-14 01:08:13 -0400
commit533157ece22c020dbf09d991b23d1cf4e5281e7a (patch)
tree2bf4aaf440307113cb0f36d45aa9783462985bc9 /src/discord/discord.cpp
parent019ae0428bc3ad878dffa6218eb03b96457d7dcb (diff)
downloadabaddon-portaudio-533157ece22c020dbf09d991b23d1cf4e5281e7a.tar.gz
abaddon-portaudio-533157ece22c020dbf09d991b23d1cf4e5281e7a.zip
preliminary speaker checks
Diffstat (limited to 'src/discord/discord.cpp')
-rw-r--r--src/discord/discord.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp
index ab0374d..d997bc2 100644
--- a/src/discord/discord.cpp
+++ b/src/discord/discord.cpp
@@ -1290,13 +1290,18 @@ std::optional<uint32_t> DiscordClient::GetSSRCOfUser(Snowflake id) const {
return m_voice.GetSSRCOfUser(id);
}
-std::optional<std::pair<Snowflake, VoiceStateFlags>> DiscordClient::GetVoiceState(Snowflake user_id) const {
+std::optional<std::pair<Snowflake, PackedVoiceState>> DiscordClient::GetVoiceState(Snowflake user_id) const {
if (const auto it = m_voice_states.find(user_id); it != m_voice_states.end()) {
return it->second;
}
return std::nullopt;
}
+bool DiscordClient::IsUserSpeaker(Snowflake user_id) const {
+ const auto state = GetVoiceState(user_id);
+ return state.has_value() && state->second.IsSpeaker();
+}
+
DiscordVoiceClient &DiscordClient::GetVoiceClient() {
return m_voice;
}
@@ -2962,7 +2967,7 @@ void DiscordClient::SetVoiceState(Snowflake user_id, const VoiceState &state) {
if (state.IsSelfVideo) flags |= VoiceStateFlags::SelfVideo;
if (state.IsSuppressed) flags |= VoiceStateFlags::Suppressed;
- m_voice_states[user_id] = std::make_pair(*state.ChannelID, flags);
+ m_voice_states[user_id] = std::make_pair(*state.ChannelID, PackedVoiceState { flags, state.RequestToSpeakTimestamp });
m_voice_state_channel_users[*state.ChannelID].insert(user_id);
m_signal_voice_state_set.emit(user_id, *state.ChannelID, flags);