diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-18 01:34:47 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-18 01:34:47 -0500 |
commit | 42252aa6aa1450f8d1b3b2b134eae8c96c58442f (patch) | |
tree | 6e1f9e30def4fb71424d7d42b05bbd7c04153b0b /discord | |
parent | 4fd7f9d75e4edd42f559fc8653f8f82bf275e865 (diff) | |
download | abaddon-portaudio-42252aa6aa1450f8d1b3b2b134eae8c96c58442f.tar.gz abaddon-portaudio-42252aa6aa1450f8d1b3b2b134eae8c96c58442f.zip |
some better member/role update handling
Diffstat (limited to 'discord')
-rw-r--r-- | discord/discord.cpp | 12 | ||||
-rw-r--r-- | discord/discord.hpp | 3 | ||||
-rw-r--r-- | discord/member.cpp | 14 | ||||
-rw-r--r-- | discord/member.hpp | 2 |
4 files changed, 20 insertions, 11 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index a3acd2a..73c7614 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -735,8 +735,12 @@ void DiscordClient::HandleGatewayMessageDeleteBulk(const GatewayMessage &msg) { void DiscordClient::HandleGatewayGuildMemberUpdate(const GatewayMessage &msg) { GuildMemberUpdateMessage data = msg.Data; - auto member = GuildMember::from_update_json(msg.Data); // meh - m_store.SetGuildMember(data.GuildID, data.User.ID, member); + auto cur = m_store.GetGuildMember(data.GuildID, data.User.ID); + if (cur.has_value()) { + cur->update_from_json(msg.Data); + m_store.SetGuildMember(data.GuildID, data.User.ID, *cur); + } + m_signal_guild_member_update.emit(data.GuildID, data.User.ID); } void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) { @@ -1224,3 +1228,7 @@ DiscordClient::type_signal_reaction_remove DiscordClient::signal_reaction_remove DiscordClient::type_signal_typing_start DiscordClient::signal_typing_start() { return m_signal_typing_start; } + +DiscordClient::type_signal_guild_member_update DiscordClient::signal_guild_member_update() { + return m_signal_guild_member_update; +} diff --git a/discord/discord.hpp b/discord/discord.hpp index 5b08bef..e1cfcde 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -218,6 +218,7 @@ public: typedef sigc::signal<void, Snowflake, Glib::ustring> type_signal_reaction_add; typedef sigc::signal<void, Snowflake, Glib::ustring> type_signal_reaction_remove; typedef sigc::signal<void, Snowflake, Snowflake> type_signal_typing_start; // user id, channel id + typedef sigc::signal<void, Snowflake, Snowflake> type_signal_guild_member_update; // guild id, user id typedef sigc::signal<void, bool> type_signal_disconnected; // bool true if reconnecting typedef sigc::signal<void> type_signal_connected; @@ -238,6 +239,7 @@ public: type_signal_reaction_add signal_reaction_add(); type_signal_reaction_remove signal_reaction_remove(); type_signal_typing_start signal_typing_start(); + type_signal_guild_member_update signal_guild_member_update(); type_signal_disconnected signal_disconnected(); type_signal_connected signal_connected(); @@ -259,6 +261,7 @@ protected: type_signal_reaction_add m_signal_reaction_add; type_signal_reaction_remove m_signal_reaction_remove; type_signal_typing_start m_signal_typing_start; + type_signal_guild_member_update m_signal_guild_member_update; type_signal_disconnected m_signal_disconnected; type_signal_connected m_signal_connected; }; diff --git a/discord/member.cpp b/discord/member.cpp index 0e4f6fc..3fa1f71 100644 --- a/discord/member.cpp +++ b/discord/member.cpp @@ -26,12 +26,10 @@ std::vector<RoleData> GuildMember::GetSortedRoles() const { return roles; } -GuildMember GuildMember::from_update_json(const nlohmann::json &j) { - GuildMember ret; - JS_D("roles", ret.Roles); - JS_D("user", ret.User); - JS_ON("nick", ret.Nickname); - JS_D("joined_at", ret.JoinedAt); - JS_ON("premium_since", ret.PremiumSince); - return ret; +void GuildMember::update_from_json(const nlohmann::json &j) { + JS_RD("roles", Roles); + JS_RD("user", User); + JS_RD("nick", Nickname); + JS_RD("joined_at", JoinedAt); + JS_RD("premium_since", PremiumSince); } diff --git a/discord/member.hpp b/discord/member.hpp index 087f2bf..8a9d609 100644 --- a/discord/member.hpp +++ b/discord/member.hpp @@ -17,6 +17,6 @@ struct GuildMember { std::vector<RoleData> GetSortedRoles() const; + void update_from_json(const nlohmann::json &j); friend void from_json(const nlohmann::json &j, GuildMember &m); - static GuildMember from_update_json(const nlohmann::json &j); }; |