From 870f05062a87444ee58436e8d12ba3702073eb8e Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 15 Apr 2024 20:28:11 -0400 Subject: store stage instances on connect --- src/discord/discord.cpp | 7 +++++++ src/discord/guild.cpp | 1 + src/discord/guild.hpp | 2 ++ 3 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index 40af498..b3f8ca6 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -1720,6 +1720,13 @@ void DiscordClient::ProcessNewGuild(GuildData &guild) { return; } + if (guild.StageInstances.has_value()) { + for (const auto &stage : *guild.StageInstances) { + m_stage_instances[stage.ID] = stage; + m_channel_to_stage_instance[stage.ChannelID] = stage.ID; + } + } + m_store.BeginTransaction(); m_store.SetGuild(guild.ID, guild); diff --git a/src/discord/guild.cpp b/src/discord/guild.cpp index 06c4acf..9cf94c2 100644 --- a/src/discord/guild.cpp +++ b/src/discord/guild.cpp @@ -54,6 +54,7 @@ void from_json(const nlohmann::json &j, GuildData &m) { JS_O("preferred_locale", m.PreferredLocale); JS_ON("public_updates_channel_id", m.PublicUpdatesChannelID); JS_O("max_video_channel_users", m.MaxVideoChannelUsers); + JS_ON("stage_instances", m.StageInstances); JS_O("approximate_member_count", tmp); if (tmp.has_value()) m.ApproximateMemberCount = std::stol(*tmp); diff --git a/src/discord/guild.hpp b/src/discord/guild.hpp index 4895d30..1ea858d 100644 --- a/src/discord/guild.hpp +++ b/src/discord/guild.hpp @@ -4,6 +4,7 @@ #include "role.hpp" #include "channel.hpp" #include "emoji.hpp" +#include "stage.hpp" #include #include #include @@ -90,6 +91,7 @@ struct GuildData { std::optional ApproximateMemberCount; std::optional ApproximatePresenceCount; std::optional> Threads; // only with permissions to view, id only + std::optional> StageInstances; // undocumented // std::map GuildHashes; -- cgit v1.2.3