diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp index c5e15a82e1..0666c7053a 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp @@ -351,7 +351,9 @@ void Controller::addHeaderBlock(not_null container) { InviteLinkQrBox(link); }); const auto revokeLink = crl::guard(weak, [=] { - RevokeLink(_peer, admin, link); + delegate()->peerListShowBox( + RevokeLinkBox(_peer, admin, link), + Ui::LayerOption::KeepOther); }); const auto editLink = crl::guard(weak, [=] { delegate()->peerListShowBox( @@ -959,19 +961,11 @@ void AddPermanentLinkBlock( } }); const auto revokeLink = crl::guard(weak, [=] { - const auto done = crl::guard(weak, [=](Fn &&close) { - peer->session().api().inviteLinks().revokePermanent( - peer, - admin, - value->current().link, - std::move(close)); - }); - show->showBox( - Ui::MakeConfirmBox({ - tr::lng_group_invite_about_new(tr::now), - done - }), - Ui::LayerOption::KeepOther); + if (const auto current = value->current(); !current.link.isEmpty()) { + show->showBox( + RevokeLinkBox(peer, admin, current.link, true), + Ui::LayerOption::KeepOther); + } }); auto link = value->value( @@ -1266,22 +1260,26 @@ object_ptr EditLinkBox( } } -void RevokeLink( +object_ptr RevokeLinkBox( not_null peer, not_null admin, - const QString &link) { + const QString &link, + bool permanent) { const auto revoke = [=](Fn &&close) { - const auto done = [close = std::move(close)](const LinkData &data) { - close(); - }; - peer->session().api().inviteLinks().revoke(peer, admin, link, done); + auto &l = peer->session().api().inviteLinks(); + if (permanent) { + l.revokePermanent(peer, admin, link, std::move(close)); + } else { + auto done = [c = std::move(close)](const LinkData &) { c(); }; + l.revoke(peer, admin, link, std::move(done)); + } }; - Ui::show( - Ui::MakeConfirmBox({ - tr::lng_group_invite_revoke_about(), - revoke - }), - Ui::LayerOption::KeepOther); + return Ui::MakeConfirmBox({ + permanent + ? tr::lng_group_invite_about_new() + : tr::lng_group_invite_revoke_about(), + revoke + }); } object_ptr DeleteLinkBox( diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h index 464c08990d..fa33a412ec 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h @@ -37,10 +37,11 @@ void AddPermanentLinkBlock( void CopyInviteLink(const QString &link); void ShareInviteLinkBox(not_null peer, const QString &link); void InviteLinkQrBox(const QString &link); -void RevokeLink( +[[nodiscard]] object_ptr RevokeLinkBox( not_null peer, not_null admin, - const QString &link); + const QString &link, + bool permanent = false); [[nodiscard]] object_ptr EditLinkBox( not_null peer, const Api::InviteLink &data); diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index b345bdb051..fd933690ed 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -599,7 +599,9 @@ base::unique_qptr LinksController::createRowContextMenu( Ui::LayerOption::KeepOther); }, &st::menuIconEdit); result->addAction(tr::lng_group_invite_context_revoke(tr::now), [=] { - RevokeLink(_peer, _admin, link); + delegate()->peerListShowBox( + RevokeLinkBox(_peer, _admin, link), + Ui::LayerOption::KeepOther); }, &st::menuIconRemove); } return result;