diff options
Diffstat (limited to 'abaddon.cpp')
-rw-r--r-- | abaddon.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/abaddon.cpp b/abaddon.cpp index ad33e45..dcbc7d3 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -15,6 +15,7 @@ #include "windows/guildsettingswindow.hpp" #include "windows/profilewindow.hpp" #include "windows/pinnedwindow.hpp" +#include "windows/threadswindow.hpp" #ifdef _WIN32 #pragma comment(lib, "crypt32.lib") @@ -35,6 +36,7 @@ Abaddon::Abaddon() m_discord.signal_message_delete().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnMessageDelete)); m_discord.signal_message_update().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnMessageUpdate)); m_discord.signal_guild_member_list_update().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnGuildMemberListUpdate)); + m_discord.signal_thread_member_list_update().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnThreadMemberListUpdate)); m_discord.signal_reaction_add().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnReactionAdd)); m_discord.signal_reaction_remove().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnReactionRemove)); m_discord.signal_guild_join_request_create().connect(sigc::mem_fun(*this, &Abaddon::DiscordOnGuildJoinRequestCreate)); @@ -94,6 +96,7 @@ int Abaddon::StartGTK() { m_main_window->signal_action_set_status().connect(sigc::mem_fun(*this, &Abaddon::ActionSetStatus)); m_main_window->signal_action_add_recipient().connect(sigc::mem_fun(*this, &Abaddon::ActionAddRecipient)); m_main_window->signal_action_view_pins().connect(sigc::mem_fun(*this, &Abaddon::ActionViewPins)); + m_main_window->signal_action_view_threads().connect(sigc::mem_fun(*this, &Abaddon::ActionViewThreads)); m_main_window->GetChannelList()->signal_action_channel_item_select().connect(sigc::mem_fun(*this, &Abaddon::ActionChannelOpened)); m_main_window->GetChannelList()->signal_action_guild_leave().connect(sigc::mem_fun(*this, &Abaddon::ActionLeaveGuild)); @@ -190,6 +193,10 @@ void Abaddon::DiscordOnGuildMemberListUpdate(Snowflake guild_id) { m_main_window->UpdateMembers(); } +void Abaddon::DiscordOnThreadMemberListUpdate(const ThreadMemberListUpdateData &data) { + m_main_window->UpdateMembers(); +} + void Abaddon::DiscordOnReactionAdd(Snowflake message_id, const Glib::ustring ¶m) { m_main_window->UpdateChatReactionAdd(message_id, param); } @@ -470,7 +477,9 @@ void Abaddon::ActionChannelOpened(Snowflake id) { m_main_window->UpdateChatWindowContents(); } - if (channel->Type != ChannelType::DM && channel->Type != ChannelType::GROUP_DM && channel->GuildID.has_value()) { + if (channel->IsThread()) { + m_discord.SendThreadLazyLoad(id); + } else if (channel->Type != ChannelType::DM && channel->Type != ChannelType::GROUP_DM && channel->GuildID.has_value()) { m_discord.SendLazyLoad(id); if (m_discord.IsVerificationRequired(*channel->GuildID)) @@ -616,6 +625,14 @@ void Abaddon::ActionViewPins(Snowflake channel_id) { window->show(); } +void Abaddon::ActionViewThreads(Snowflake channel_id) { + const auto data = m_discord.GetChannel(channel_id); + if (!data.has_value()) return; + auto window = new ThreadsWindow(*data); + ManageHeapWindow(window); + window->show(); +} + bool Abaddon::ShowConfirm(const Glib::ustring &prompt, Gtk::Window *window) { ConfirmDialog dlg(window != nullptr ? *window : *m_main_window); dlg.SetConfirmText(prompt); |