From 1774b21e88a8f9f35cc0223a74e52fac672aa49f Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 21 Jan 2021 08:20:29 +0400 Subject: [PATCH] Add ability to completely delete legacy group. --- Telegram/SourceFiles/boxes/confirm_box.cpp | 6 +++--- .../SourceFiles/boxes/peers/edit_peer_invite_links.cpp | 2 +- Telegram/SourceFiles/data/data_histories.cpp | 9 ++++++++- Telegram/SourceFiles/data/data_peer.cpp | 2 ++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Telegram/SourceFiles/boxes/confirm_box.cpp b/Telegram/SourceFiles/boxes/confirm_box.cpp index e5b4f766da..224f7ec2c9 100644 --- a/Telegram/SourceFiles/boxes/confirm_box.cpp +++ b/Telegram/SourceFiles/boxes/confirm_box.cpp @@ -601,9 +601,7 @@ void DeleteMessagesBox::prepare() { deleteText = _wipeHistoryPeer->isUser() ? tr::lng_box_delete() : tr::lng_box_leave(); - deleteStyle = &(peer->isChannel() - ? st::defaultBoxButton - : st::attentionBoxButton); + deleteStyle = &st::attentionBoxButton; } if (auto revoke = revokeText(peer)) { _revoke.create(this, revoke->checkbox, false, st::defaultBoxCheckbox); @@ -702,6 +700,8 @@ auto DeleteMessagesBox::revokeText(not_null peer) const tr::now, lt_user, user->firstName); + } else if (_wipeHistoryJustClear) { + return std::nullopt; } else { result.checkbox = tr::lng_delete_for_everyone_check(tr::now); } diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index 91d0751eca..4f8f08f5a5 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -748,7 +748,7 @@ void ManageInviteLinksBox( const auto deleteAll = Ui::CreateChild( container.get(), tr::lng_group_invite_context_delete_all(tr::now), - st::boxLinkButton); + st::defaultLinkButton); rpl::combine( header->topValue(), container->widthValue() diff --git a/Telegram/SourceFiles/data/data_histories.cpp b/Telegram/SourceFiles/data/data_histories.cpp index 69ba4ddbc4..da2efa02c3 100644 --- a/Telegram/SourceFiles/data/data_histories.cpp +++ b/Telegram/SourceFiles/data/data_histories.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_session.h" #include "data/data_channel.h" +#include "data/data_chat.h" #include "data/data_folder.h" #include "data/data_scheduled_messages.h" #include "main/main_session.h" @@ -599,11 +600,17 @@ void Histories::deleteAllMessages( )).done([=](const MTPBool &result) { finish(); }).fail(fail).send(); + } else if (revoke && peer->isChat() && peer->asChat()->amCreator()) { + return session().api().request(MTPmessages_DeleteChat( + peer->asChat()->inputChat + )).done([=](const MTPBool &result) { + finish(); + }).fail(fail).send(); } else { using Flag = MTPmessages_DeleteHistory::Flag; const auto flags = Flag(0) | (justClear ? Flag::f_just_clear : Flag(0)) - | ((peer->isUser() && revoke) ? Flag::f_revoke : Flag(0)); + | (revoke ? Flag::f_revoke : Flag(0)); return session().api().request(MTPmessages_DeleteHistory( MTP_flags(flags), peer->input, diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp index 75edd778ed..ac3f2074ce 100644 --- a/Telegram/SourceFiles/data/data_peer.cpp +++ b/Telegram/SourceFiles/data/data_peer.cpp @@ -825,6 +825,8 @@ bool PeerData::canRevokeFullHistory() const { && (!user->isBot() || user->isSupport()) && session().serverConfig().revokePrivateInbox && (session().serverConfig().revokePrivateTimeLimit == 0x7FFFFFFF); + } else if (const auto chat = asChat()) { + return chat->amCreator(); } return false; }