summaryrefslogtreecommitdiff
path: root/src/discord/discord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/discord/discord.cpp')
-rw-r--r--src/discord/discord.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp
index 6913ccf..64988d2 100644
--- a/src/discord/discord.cpp
+++ b/src/discord/discord.cpp
@@ -94,6 +94,18 @@ const UserData &DiscordClient::GetUserData() const {
return m_user_data;
}
+const UserGuildSettingsData &DiscordClient::GetUserGuildSettings() const {
+ return m_user_guild_settings;
+}
+
+std::optional<UserGuildSettingsEntry> DiscordClient::GetSettingsForGuild(Snowflake id) const {
+ if (const auto it = m_user_guild_settings.Entries.find(id); it != m_user_guild_settings.Entries.end()) {
+ return it->second;
+ }
+
+ return std::nullopt;
+}
+
std::vector<Snowflake> DiscordClient::GetUserSortedGuilds() const {
// sort order is unfolder'd guilds sorted by id descending, then guilds in folders in array order
// todo: make sure folder'd guilds are sorted properly
@@ -1701,6 +1713,8 @@ void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) {
m_session_id = data.SessionID;
m_user_data = data.SelfUser;
m_user_settings = data.Settings;
+ m_user_guild_settings = data.GuildSettings;
+ // TODO handle update
HandleReadyReadState(data);
HandleReadyGuildSettings(data);
@@ -2118,6 +2132,9 @@ void DiscordClient::HandleGatewayMessageAck(const GatewayMessage &msg) {
void DiscordClient::HandleGatewayUserGuildSettingsUpdate(const GatewayMessage &msg) {
UserGuildSettingsUpdateData data = msg.Data;
+
+ m_user_guild_settings.Entries[data.Settings.GuildID] = data.Settings;
+
const bool for_dms = !data.Settings.GuildID.IsValid();
const auto channels = for_dms ? GetPrivateChannels() : GetChannelsInGuild(data.Settings.GuildID);
@@ -2678,7 +2695,7 @@ void DiscordClient::HandleReadyGuildSettings(const ReadyEventData &data) {
}
const auto now = Snowflake::FromNow();
- for (const auto &entry : data.GuildSettings.Entries) {
+ for (const auto &[guild_id, entry] : data.GuildSettings.Entries) {
// even if muted is true a guild/channel can be unmuted if the current time passes mute_config.end_time
if (entry.Muted) {
if (entry.MuteConfig.EndTime.has_value()) {