Close chat/media if thrown out by admin.

This commit is contained in:
John Preston 2024-04-18 10:45:06 +04:00
parent 4fb03e532c
commit a3b8397361
3 changed files with 23 additions and 3 deletions

View File

@ -165,6 +165,7 @@ void ChannelData::setFlags(ChannelDataFlags which) {
const auto taken = ((diff & Flag::Forum) && !(which & Flag::Forum))
? mgInfo->takeForumData()
: nullptr;
const auto wasIn = amIn();
if ((diff & Flag::Forum) && (which & Flag::Forum)) {
mgInfo->ensureForum(this);
}
@ -174,6 +175,14 @@ void ChannelData::setFlags(ChannelDataFlags which) {
session().changes().peerUpdated(chat, UpdateFlag::Migration);
session().changes().peerUpdated(this, UpdateFlag::Migration);
}
if (wasIn && !amIn()) {
crl::on_main(&session(), [=] {
if (!amIn()) {
Core::App().closeChatFromWindows(this);
}
});
}
}
if (diff & (Flag::Forum | Flag::CallNotEmpty | Flag::SimilarExpanded)) {
if (const auto history = this->owner().historyLoaded(this)) {

View File

@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "data/data_chat.h"
#include "core/application.h"
#include "data/data_user.h"
#include "data/data_channel.h"
#include "data/data_session.h"
@ -132,6 +133,18 @@ void ChatData::invalidateParticipants() {
UpdateFlag::Members | UpdateFlag::Admins);
}
void ChatData::setFlags(ChatDataFlags which) {
const auto wasIn = amIn();
_flags.set(which);
if (wasIn && !amIn()) {
crl::on_main(&session(), [=] {
if (!amIn()) {
Core::App().closeChatFromWindows(this);
}
});
}
}
void ChatData::setInviteLink(const QString &newInviteLink) {
_inviteLink = newInviteLink;
}

View File

@ -42,9 +42,7 @@ public:
return (count > 0 || amIn()) && participants.empty();
}
void setFlags(ChatDataFlags which) {
_flags.set(which);
}
void setFlags(ChatDataFlags which);
void addFlags(ChatDataFlags which) {
_flags.add(which);
}