summaryrefslogtreecommitdiff
path: root/src/components/chatwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/chatwindow.cpp')
-rw-r--r--src/components/chatwindow.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/components/chatwindow.cpp b/src/components/chatwindow.cpp
index 61d3712..38e0247 100644
--- a/src/components/chatwindow.cpp
+++ b/src/components/chatwindow.cpp
@@ -223,16 +223,33 @@ Snowflake ChatWindow::GetActiveChannel() const {
}
bool ChatWindow::OnInputSubmit(ChatSubmitParams data) {
- int restriction = BaseAttachmentSizeLimit;
- const auto nitro = Abaddon::Get().GetDiscordClient().GetUserData().PremiumType;
+ auto &discord = Abaddon::Get().GetDiscordClient();
+
+ int nitro_restriction = BaseAttachmentSizeLimit;
+ const auto nitro = discord.GetUserData().PremiumType;
if (!nitro.has_value() || nitro == EPremiumType::None) {
- restriction = BaseAttachmentSizeLimit;
+ nitro_restriction = BaseAttachmentSizeLimit;
} else if (nitro == EPremiumType::NitroClassic) {
- restriction = NitroClassicAttachmentSizeLimit;
+ nitro_restriction = NitroClassicAttachmentSizeLimit;
} else if (nitro == EPremiumType::Nitro) {
- restriction = NitroAttachmentSizeLimit;
+ nitro_restriction = NitroAttachmentSizeLimit;
+ }
+
+ int guild_restriction = BaseAttachmentSizeLimit;
+ if (const auto channel = discord.GetChannel(m_active_channel); channel.has_value() && channel->GuildID.has_value()) {
+ if (const auto guild = discord.GetGuild(*channel->GuildID); guild.has_value()) {
+ if (!guild->PremiumTier.has_value() || guild->PremiumTier == GuildPremiumTier::NONE || guild->PremiumTier == GuildPremiumTier::TIER_1) {
+ guild_restriction = BaseAttachmentSizeLimit;
+ } else if (guild->PremiumTier == GuildPremiumTier::TIER_2) {
+ guild_restriction = BoostLevel2AttachmentSizeLimit;
+ } else if (guild->PremiumTier == GuildPremiumTier::TIER_3) {
+ guild_restriction = BoostLevel3AttachmentSizeLimit;
+ }
+ }
}
+ int restriction = std::max(nitro_restriction, guild_restriction);
+
for (const auto &attachment : data.Attachments) {
const auto info = attachment.File->query_info();
if (info && info->get_size() > restriction) {