diff --git a/Telegram/SourceFiles/api/api_invite_links.cpp b/Telegram/SourceFiles/api/api_invite_links.cpp index 83d4c4838a..5651afa3d8 100644 --- a/Telegram/SourceFiles/api/api_invite_links.cpp +++ b/Telegram/SourceFiles/api/api_invite_links.cpp @@ -72,7 +72,10 @@ void InviteLinks::performCreate( using Flag = MTPmessages_ExportChatInvite::Flag; _api->request(MTPmessages_ExportChatInvite( - MTP_flags((expireDate ? Flag::f_expire_date : Flag(0)) + MTP_flags((revokeLegacyPermanent + ? Flag::f_legacy_revoke_permanent + : Flag(0)) + | (expireDate ? Flag::f_expire_date : Flag(0)) | (usageLimit ? Flag::f_usage_limit : Flag(0))), peer->input, MTP_int(expireDate), @@ -118,14 +121,19 @@ auto InviteLinks::prepend( i = _firstSlices.emplace(peer).first; } auto &links = i->second; + const auto permanent = lookupPermanent(links); if (link.permanent) { - if (const auto permanent = lookupPermanent(links)) { + if (permanent) { permanent->revoked = true; } editPermanentLink(peer, link.link); } ++links.count; - links.links.insert(begin(links.links), link); + if (permanent && !link.permanent) { + links.links.insert(begin(links.links) + 1, link); + } else { + links.links.insert(begin(links.links), link); + } notify(peer); return link; } @@ -153,10 +161,6 @@ void InviteLinks::performEdit( } return; } - auto &callbacks = _editCallbacks[key]; - if (done) { - callbacks.push_back(std::move(done)); - } if (const auto permanent = revoke ? lookupPermanent(peer) : nullptr) { if (permanent->link == link) { @@ -167,6 +171,11 @@ void InviteLinks::performEdit( } } + auto &callbacks = _editCallbacks[key]; + if (done) { + callbacks.push_back(std::move(done)); + } + using Flag = MTPmessages_EditExportedChatInvite::Flag; const auto requestId = _api->request(MTPmessages_EditExportedChatInvite( MTP_flags((revoke ? Flag::f_revoked : Flag(0)) diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index 482a9b91b6..bb8b318835 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "history/view/history_view_group_call_tracker.h" // GenerateUs... #include "lang/lang_keys.h" +#include "boxes/confirm_box.h" #include "apiwrap.h" #include "styles/style_info.h" @@ -45,24 +46,38 @@ void AddPermanentLinkBlock( }) | rpl::distinct_until_changed( ) | rpl::start_spawning(container->lifetime()); - const auto copyLink = [=] { + const auto weak = Ui::MakeWeak(container); + const auto copyLink = crl::guard(weak, [=] { if (const auto link = computePermanentLink()) { QGuiApplication::clipboard()->setText(link->link); Ui::Toast::Show(tr::lng_group_invite_copied(tr::now)); } - }; - const auto shareLink = [=] { + }); + const auto shareLink = crl::guard(weak, [=] { if (const auto link = computePermanentLink()) { QGuiApplication::clipboard()->setText(link->link); Ui::Toast::Show(tr::lng_group_invite_copied(tr::now)); } - }; - const auto revokeLink = [=] { - if (const auto link = computePermanentLink()) { - QGuiApplication::clipboard()->setText(link->link); - Ui::Toast::Show(tr::lng_group_invite_copied(tr::now)); - } - }; + }); + const auto revokeLink = crl::guard(weak, [=] { + const auto box = std::make_shared>(); + const auto done = crl::guard(weak, [=] { + if (const auto link = computePermanentLink()) { + const auto close = [=](auto&&) { + if (*box) { + (*box)->closeBox(); + } + }; + peer->session().api().inviteLinks().revoke( + peer, + link->link, + close); + } + }); + *box = Ui::show( + Box(tr::lng_group_invite_about_new(tr::now), done), + Ui::LayerOption::KeepOther); + }); auto link = rpl::duplicate( value diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index fd9997ef61..465ce72602 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -874,4 +874,4 @@ inviteLinkUserpics: GroupCallUserpics { } inviteLinkUserpicsSkip: 8px; inviteLinkJoinedFont: font(14px); -inviteLinkJoinedRowPadding: margins(0px, 18px, 0px, 0px); +inviteLinkJoinedRowPadding: margins(0px, 18px, 0px, 8px);