Close chat/media if thrown out by admin.
This commit is contained in:
parent
4fb03e532c
commit
a3b8397361
|
@ -165,6 +165,7 @@ void ChannelData::setFlags(ChannelDataFlags which) {
|
||||||
const auto taken = ((diff & Flag::Forum) && !(which & Flag::Forum))
|
const auto taken = ((diff & Flag::Forum) && !(which & Flag::Forum))
|
||||||
? mgInfo->takeForumData()
|
? mgInfo->takeForumData()
|
||||||
: nullptr;
|
: nullptr;
|
||||||
|
const auto wasIn = amIn();
|
||||||
if ((diff & Flag::Forum) && (which & Flag::Forum)) {
|
if ((diff & Flag::Forum) && (which & Flag::Forum)) {
|
||||||
mgInfo->ensureForum(this);
|
mgInfo->ensureForum(this);
|
||||||
}
|
}
|
||||||
|
@ -174,6 +175,14 @@ void ChannelData::setFlags(ChannelDataFlags which) {
|
||||||
session().changes().peerUpdated(chat, UpdateFlag::Migration);
|
session().changes().peerUpdated(chat, UpdateFlag::Migration);
|
||||||
session().changes().peerUpdated(this, 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 (diff & (Flag::Forum | Flag::CallNotEmpty | Flag::SimilarExpanded)) {
|
||||||
if (const auto history = this->owner().historyLoaded(this)) {
|
if (const auto history = this->owner().historyLoaded(this)) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
*/
|
*/
|
||||||
#include "data/data_chat.h"
|
#include "data/data_chat.h"
|
||||||
|
|
||||||
|
#include "core/application.h"
|
||||||
#include "data/data_user.h"
|
#include "data/data_user.h"
|
||||||
#include "data/data_channel.h"
|
#include "data/data_channel.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
|
@ -132,6 +133,18 @@ void ChatData::invalidateParticipants() {
|
||||||
UpdateFlag::Members | UpdateFlag::Admins);
|
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) {
|
void ChatData::setInviteLink(const QString &newInviteLink) {
|
||||||
_inviteLink = newInviteLink;
|
_inviteLink = newInviteLink;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,9 +42,7 @@ public:
|
||||||
return (count > 0 || amIn()) && participants.empty();
|
return (count > 0 || amIn()) && participants.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFlags(ChatDataFlags which) {
|
void setFlags(ChatDataFlags which);
|
||||||
_flags.set(which);
|
|
||||||
}
|
|
||||||
void addFlags(ChatDataFlags which) {
|
void addFlags(ChatDataFlags which) {
|
||||||
_flags.add(which);
|
_flags.add(which);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue