diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-09 16:47:17 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-09 16:47:17 -0500 |
commit | aaef45752648ff5d99ebac3a11341da9a2b95aaf (patch) | |
tree | 2c36627a43a20e103b0ae5573332b21f7c40dc1e /discord/discord.cpp | |
parent | 2ddac42575aee5370d01701ce50444713d4d44b9 (diff) | |
download | abaddon-portaudio-aaef45752648ff5d99ebac3a11341da9a2b95aaf.tar.gz abaddon-portaudio-aaef45752648ff5d99ebac3a11341da9a2b95aaf.zip |
show status indicator in dm list, handle (some of) READY_SUPPLEMENTAL
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r-- | discord/discord.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index eb323f9..5b6bf4e 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -791,6 +791,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) { case GatewayEvent::USER_NOTE_UPDATE: { HandleGatewayUserNoteUpdate(m); } break; + case GatewayEvent::READY_SUPPLEMENTAL: { + HandleGatewayReadySupplemental(m); + } break; } } break; default: @@ -1174,6 +1177,22 @@ void DiscordClient::HandleGatewayUserNoteUpdate(const GatewayMessage &msg) { m_signal_note_update.emit(data.ID, data.Note); } +void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) { + ReadySupplementalData data = msg.Data; + for (const auto &p : data.MergedPresences.Friends) { + const auto s = p.Presence.Status; + if (s == "online") + m_user_to_status[p.UserID] = PresenceStatus::Online; + else if (s == "offline") + m_user_to_status[p.UserID] = PresenceStatus::Offline; + else if (s == "idle") + m_user_to_status[p.UserID] = PresenceStatus::Idle; + else if (s == "dnd") + m_user_to_status[p.UserID] = PresenceStatus::DND; + m_signal_presence_update.emit(p.UserID, m_user_to_status.at(p.UserID)); + } +} + void DiscordClient::HandleGatewayReconnect(const GatewayMessage &msg) { printf("received reconnect\n"); m_signal_disconnected.emit(true, GatewayCloseCode::Reconnecting); @@ -1455,6 +1474,7 @@ void DiscordClient::LoadEventMap() { m_event_map["INVITE_CREATE"] = GatewayEvent::INVITE_CREATE; m_event_map["INVITE_DELETE"] = GatewayEvent::INVITE_DELETE; m_event_map["USER_NOTE_UPDATE"] = GatewayEvent::USER_NOTE_UPDATE; + m_event_map["READY_SUPPLEMENTAL"] = GatewayEvent::READY_SUPPLEMENTAL; } DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() { |