mirror of
https://github.com/vale981/tdesktop
synced 2025-03-06 02:01:40 -05:00
parent
d7a67a6a1c
commit
bb2e683dea
3 changed files with 23 additions and 16 deletions
|
@ -2363,21 +2363,6 @@ void ApiWrap::clearHistory(not_null<PeerData*> peer, bool revoke) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApiWrap::deleteConversation(not_null<PeerData*> peer, bool revoke) {
|
void ApiWrap::deleteConversation(not_null<PeerData*> peer, bool revoke) {
|
||||||
if (const auto history = _session->data().historyLoaded(peer->id)) {
|
|
||||||
_session->data().setPinnedDialog(history, false);
|
|
||||||
App::main()->removeDialog(history);
|
|
||||||
history->clear();
|
|
||||||
if (const auto channel = peer->asMegagroup()) {
|
|
||||||
channel->addFlags(MTPDchannel::Flag::f_left);
|
|
||||||
if (const auto from = channel->getMigrateFromChat()) {
|
|
||||||
if (const auto migrated = _session->data().historyLoaded(from)) {
|
|
||||||
migrated->updateChatListExistence();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
history->markFullyLoaded();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (const auto chat = peer->asChat()) {
|
if (const auto chat = peer->asChat()) {
|
||||||
request(MTPmessages_DeleteChatUser(
|
request(MTPmessages_DeleteChatUser(
|
||||||
chat->inputChat,
|
chat->inputChat,
|
||||||
|
@ -2388,13 +2373,13 @@ void ApiWrap::deleteConversation(not_null<PeerData*> peer, bool revoke) {
|
||||||
}).fail([=](const RPCError &error) {
|
}).fail([=](const RPCError &error) {
|
||||||
deleteHistory(peer, false, revoke);
|
deleteHistory(peer, false, revoke);
|
||||||
}).send();
|
}).send();
|
||||||
return;
|
|
||||||
} else if (const auto channel = peer->asChannel()) {
|
} else if (const auto channel = peer->asChannel()) {
|
||||||
channel->ptsWaitingForShortPoll(-1);
|
channel->ptsWaitingForShortPoll(-1);
|
||||||
leaveChannel(channel);
|
leaveChannel(channel);
|
||||||
} else {
|
} else {
|
||||||
deleteHistory(peer, false, revoke);
|
deleteHistory(peer, false, revoke);
|
||||||
}
|
}
|
||||||
|
_session->data().deleteConversationLocally(peer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ApiWrap::deleteHistory(not_null<PeerData*> peer, bool justClear, bool revoke) {
|
void ApiWrap::deleteHistory(not_null<PeerData*> peer, bool justClear, bool revoke) {
|
||||||
|
|
|
@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "observer_peer.h"
|
#include "observer_peer.h"
|
||||||
#include "auth_session.h"
|
#include "auth_session.h"
|
||||||
#include "apiwrap.h"
|
#include "apiwrap.h"
|
||||||
|
#include "mainwidget.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
#include "core/crash_reports.h" // for CrashReports::SetAnnotation
|
#include "core/crash_reports.h" // for CrashReports::SetAnnotation
|
||||||
#include "ui/image/image.h"
|
#include "ui/image/image.h"
|
||||||
|
@ -717,6 +718,25 @@ History *Session::historyLoaded(const PeerData *peer) {
|
||||||
return peer ? historyLoaded(peer->id) : nullptr;
|
return peer ? historyLoaded(peer->id) : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Session::deleteConversationLocally(not_null<PeerData*> peer) {
|
||||||
|
const auto history = historyLoaded(peer);
|
||||||
|
if (history) {
|
||||||
|
setPinnedDialog(history, false);
|
||||||
|
App::main()->removeDialog(history);
|
||||||
|
history->clear();
|
||||||
|
}
|
||||||
|
if (const auto channel = peer->asMegagroup()) {
|
||||||
|
channel->addFlags(MTPDchannel::Flag::f_left);
|
||||||
|
if (const auto from = channel->getMigrateFromChat()) {
|
||||||
|
if (const auto migrated = historyLoaded(from)) {
|
||||||
|
migrated->updateChatListExistence();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (history) {
|
||||||
|
history->markFullyLoaded();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Session::registerSendAction(
|
void Session::registerSendAction(
|
||||||
not_null<History*> history,
|
not_null<History*> history,
|
||||||
not_null<UserData*> user,
|
not_null<UserData*> user,
|
||||||
|
|
|
@ -125,6 +125,8 @@ public:
|
||||||
[[nodiscard]] not_null<History*> history(not_null<const PeerData*> peer);
|
[[nodiscard]] not_null<History*> history(not_null<const PeerData*> peer);
|
||||||
[[nodiscard]] History *historyLoaded(const PeerData *peer);
|
[[nodiscard]] History *historyLoaded(const PeerData *peer);
|
||||||
|
|
||||||
|
void deleteConversationLocally(not_null<PeerData*> peer);
|
||||||
|
|
||||||
void registerSendAction(
|
void registerSendAction(
|
||||||
not_null<History*> history,
|
not_null<History*> history,
|
||||||
not_null<UserData*> user,
|
not_null<UserData*> user,
|
||||||
|
|
Loading…
Add table
Reference in a new issue