summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-05-07 02:50:09 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-05-07 02:50:09 -0400
commit19a2aed0207d823ac605718a88b93dafde7fb292 (patch)
tree19233cbec1614bc95fa015b2bb17f2e249ae2514 /discord
parentd679b1af76a2e7afe8b28317268f95a1d8cdb5e2 (diff)
parent712e78b0c87346d826b60d1101db8fd09bedf730 (diff)
downloadabaddon-portaudio-19a2aed0207d823ac605718a88b93dafde7fb292.tar.gz
abaddon-portaudio-19a2aed0207d823ac605718a88b93dafde7fb292.zip
Merge branch 'master' into friends
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp13
-rw-r--r--discord/discord.hpp2
2 files changed, 9 insertions, 6 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index e25b138..4596204 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -464,7 +464,7 @@ void DiscordClient::UpdateStatus(PresenceStatus status, bool is_afk) {
m_websocket.Send(nlohmann::json(msg));
// fake message cuz we dont receive messages for ourself
m_user_to_status[m_user_data.ID] = status;
- m_signal_presence_update.emit(m_user_data.ID, status);
+ m_signal_presence_update.emit(GetUserData(), status);
}
void DiscordClient::UpdateStatus(PresenceStatus status, bool is_afk, const ActivityData &obj) {
@@ -475,7 +475,7 @@ void DiscordClient::UpdateStatus(PresenceStatus status, bool is_afk, const Activ
m_websocket.Send(nlohmann::json(msg));
m_user_to_status[m_user_data.ID] = status;
- m_signal_presence_update.emit(m_user_data.ID, status);
+ m_signal_presence_update.emit(GetUserData(), status);
}
void DiscordClient::CreateDM(Snowflake user_id) {
@@ -1189,7 +1189,8 @@ void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) {
if (cur.has_value()) {
cur->update_from_json(data.User);
m_store.SetUser(cur->ID, *cur);
- }
+ } else
+ return;
PresenceStatus e;
if (data.StatusMessage == "online")
@@ -1203,7 +1204,7 @@ void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) {
m_user_to_status[user_id] = e;
- m_signal_presence_update.emit(user_id, e);
+ m_signal_presence_update.emit(*cur, e);
}
void DiscordClient::HandleGatewayChannelDelete(const GatewayMessage &msg) {
@@ -1482,6 +1483,8 @@ void DiscordClient::HandleGatewayGuildJoinRequestDelete(const GatewayMessage &ms
void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
ReadySupplementalData data = msg.Data;
for (const auto &p : data.MergedPresences.Friends) {
+ const auto user = GetUser(p.UserID);
+ if (!user.has_value()) return; // should be sent in READY's `users`
const auto s = p.Presence.Status;
if (s == "online")
m_user_to_status[p.UserID] = PresenceStatus::Online;
@@ -1491,7 +1494,7 @@ void DiscordClient::HandleGatewayReadySupplemental(const GatewayMessage &msg) {
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));
+ m_signal_presence_update.emit(*user, m_user_to_status.at(p.UserID));
}
}
diff --git a/discord/discord.hpp b/discord/discord.hpp
index e3e43a1..b3dced1 100644
--- a/discord/discord.hpp
+++ b/discord/discord.hpp
@@ -308,7 +308,7 @@ public:
typedef sigc::signal<void, Snowflake, Snowflake> type_signal_guild_ban_add; // guild id, user id
typedef sigc::signal<void, InviteData> type_signal_invite_create;
typedef sigc::signal<void, InviteDeleteObject> type_signal_invite_delete;
- typedef sigc::signal<void, Snowflake, PresenceStatus> type_signal_presence_update;
+ typedef sigc::signal<void, UserData, PresenceStatus> type_signal_presence_update;
typedef sigc::signal<void, Snowflake, std::string> type_signal_note_update;
typedef sigc::signal<void, Snowflake, std::vector<EmojiData>> type_signal_guild_emojis_update; // guild id
typedef sigc::signal<void, GuildJoinRequestCreateData> type_signal_guild_join_request_create;