summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-05-07 02:49:59 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-05-07 02:49:59 -0400
commit712e78b0c87346d826b60d1101db8fd09bedf730 (patch)
tree75d0a84d46b9f460fd3e533647eda096d8bff890 /discord
parenta74f66513b123d0d1be6c02f37b9497632509d46 (diff)
downloadabaddon-portaudio-712e78b0c87346d826b60d1101db8fd09bedf730.tar.gz
abaddon-portaudio-712e78b0c87346d826b60d1101db8fd09bedf730.zip
send user data over signal_presence_update
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 c85ad6e..8bd03bb 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) {
@@ -1185,7 +1185,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")
@@ -1199,7 +1200,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) {
@@ -1478,6 +1479,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;
@@ -1487,7 +1490,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 2983ddf..2883508 100644
--- a/discord/discord.hpp
+++ b/discord/discord.hpp
@@ -307,7 +307,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;