summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-09-24 02:43:27 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-09-24 02:43:27 -0400
commita8630f53b1b391cd2851955aa7585c53a996edd6 (patch)
treeaa234ed30936e34bba962c0a1af9530c39d2fbb4 /discord/discord.cpp
parent83417819186394e8d840167841103211ebe5fe33 (diff)
downloadabaddon-portaudio-a8630f53b1b391cd2851955aa7585c53a996edd6.tar.gz
abaddon-portaudio-a8630f53b1b391cd2851955aa7585c53a996edd6.zip
put PermissionOverwrite in the store where it belongs
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r--discord/discord.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 6ef00a7..bb84f5f 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -198,6 +198,10 @@ const GuildMember *DiscordClient::GetMember(Snowflake user_id, Snowflake guild_i
return m_store.GetGuildMemberData(guild_id, user_id);
}
+const PermissionOverwrite *DiscordClient::GetPermissionOverwrite(Snowflake channel_id, Snowflake id) const {
+ return m_store.GetPermissionOverwrite(channel_id, id);
+}
+
Snowflake DiscordClient::GetMemberHoistedRole(Snowflake guild_id, Snowflake user_id, bool with_color) const {
auto *data = m_store.GetGuildMemberData(guild_id, user_id);
if (data == nullptr) return Snowflake::Invalid;
@@ -285,8 +289,8 @@ Permission DiscordClient::ComputeOverwrites(Permission base, Snowflake member_id
return Permission::NONE;
Permission perms = base;
- auto overwrite_everyone = channel->GetOverwrite(channel->GuildID);
- if (overwrite_everyone.has_value()) {
+ const auto *overwrite_everyone = GetPermissionOverwrite(channel_id, channel->GuildID);
+ if (overwrite_everyone != nullptr) {
perms &= ~overwrite_everyone->Deny;
perms |= overwrite_everyone->Allow;
}
@@ -294,8 +298,8 @@ Permission DiscordClient::ComputeOverwrites(Permission base, Snowflake member_id
Permission allow = Permission::NONE;
Permission deny = Permission::NONE;
for (const auto role_id : member->Roles) {
- const auto overwrite = channel->GetOverwrite(role_id);
- if (overwrite.has_value()) {
+ const auto *overwrite = GetPermissionOverwrite(channel_id, role_id);
+ if (overwrite != nullptr) {
allow |= overwrite->Allow;
deny |= overwrite->Deny;
}
@@ -304,8 +308,8 @@ Permission DiscordClient::ComputeOverwrites(Permission base, Snowflake member_id
perms &= ~deny;
perms |= allow;
- const auto member_overwrite = channel->GetOverwrite(member_id);
- if (member_overwrite.has_value()) {
+ const auto *member_overwrite = GetPermissionOverwrite(channel_id, member_id);
+ if (member_overwrite != nullptr) {
perms &= ~member_overwrite->Deny;
perms |= member_overwrite->Allow;
}
@@ -469,6 +473,9 @@ void DiscordClient::ProcessNewGuild(Guild &guild) {
for (auto &c : guild.Channels) {
c.GuildID = guild.ID;
m_store.SetChannel(c.ID, c);
+ for (auto& p : c.PermissionOverwrites) {
+ m_store.SetPermissionOverwrite(c.ID, p.ID, p);
+ }
}
for (auto &r : guild.Roles)