basic THREAD_MEMBERS_UPDATE handling for updating channel list

This commit is contained in:
ouwou
2021-08-02 02:00:03 -04:00
parent 06f85c3a2d
commit a19d214272
6 changed files with 55 additions and 5 deletions

View File

@@ -142,7 +142,8 @@ ChannelList::ChannelList()
discord.signal_channel_update().connect(sigc::mem_fun(*this, &ChannelList::UpdateChannel));
discord.signal_channel_create().connect(sigc::mem_fun(*this, &ChannelList::UpdateCreateChannel));
discord.signal_thread_create().connect(sigc::mem_fun(*this, &ChannelList::UpdateCreateThread));
discord.signal_thread_delete().connect(sigc::mem_fun(*this, &ChannelList::UpdateDeleteThread));
discord.signal_thread_delete().connect(sigc::mem_fun(*this, &ChannelList::OnThreadDelete));
discord.signal_thread_members_update().connect(sigc::mem_fun(*this, &ChannelList::OnThreadMembersUpdate));
discord.signal_guild_update().connect(sigc::mem_fun(*this, &ChannelList::UpdateGuild));
}
@@ -279,14 +280,25 @@ void ChannelList::UpdateGuild(Snowflake id) {
}
}
void ChannelList::OnThreadDelete(const ThreadDeleteData &data) {
UpdateDeleteThread(data.ID);
}
void ChannelList::OnThreadMembersUpdate(const ThreadMembersUpdateData &data) {
auto &r = data.RemovedMemberIDs;
if (r.has_value() && std::find(r->begin(), r->end(), Abaddon::Get().GetDiscordClient().GetUserData().ID) != r->end()) {
UpdateDeleteThread(data.ID);
}
}
void ChannelList::UpdateCreateThread(const ChannelData &channel) {
auto parent_row = GetIteratorForChannelFromID(*channel.ParentID);
if (parent_row)
CreateThreadRow(parent_row->children(), channel);
}
void ChannelList::UpdateDeleteThread(const ThreadDeleteData &data) {
auto iter = GetIteratorForChannelFromID(data.ID);
void ChannelList::UpdateDeleteThread(Snowflake id) {
auto iter = GetIteratorForChannelFromID(id);
if (iter)
m_model->erase(iter);
}