From a51a54bc5979a2491f152abc47ad54e6b63f27c8 Mon Sep 17 00:00:00 2001 From: Dylam De La Torre Date: Tue, 23 Nov 2021 05:21:56 +0100 Subject: Restructure source and resource files (#46) importantly, res is now res/res and css is now res/css --- src/discord/member.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/discord/member.cpp (limited to 'src/discord/member.cpp') diff --git a/src/discord/member.cpp b/src/discord/member.cpp new file mode 100644 index 0000000..29c4fae --- /dev/null +++ b/src/discord/member.cpp @@ -0,0 +1,40 @@ +#include "member.hpp" +#include "abaddon.hpp" + +void from_json(const nlohmann::json &j, GuildMember &m) { + JS_O("user", m.User); + JS_ON("nick", m.Nickname); + JS_D("roles", m.Roles); + JS_D("joined_at", m.JoinedAt); + JS_ON("premium_since", m.PremiumSince); + JS_D("deaf", m.IsDeafened); + JS_D("mute", m.IsMuted); + JS_O("user_id", m.UserID); + JS_ON("avatar", m.Avatar); + JS_O("pending", m.IsPending); +} + +std::vector GuildMember::GetSortedRoles() const { + std::vector roles; + for (const auto role_id : Roles) { + const auto role = Abaddon::Get().GetDiscordClient().GetRole(role_id); + if (!role.has_value()) continue; + roles.push_back(std::move(*role)); + } + + std::sort(roles.begin(), roles.end(), [](const RoleData &a, const RoleData &b) { + return a.Position > b.Position; + }); + + return roles; +} + +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); + JS_RD("avatar", Avatar); + JS_RD("pending", IsPending); +} -- cgit v1.2.3