From 81ff4d74974ed1801ea3dc53ec94914a51ee46af Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 2 Nov 2021 10:10:48 +0400 Subject: [PATCH] Show joined list on permanent link "N joined" click. --- .../boxes/peers/edit_peer_invite_link.cpp | 20 ++++++++++++++++--- .../ui/controls/invite_link_buttons.cpp | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp index c17e83832..6fa8b476f 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp @@ -884,6 +884,9 @@ void AddPermanentLinkBlock( const auto value = container->lifetime().make_state< rpl::variable >(); + const auto currentLinkFields = container->lifetime().make_state< + Api::InviteLink + >(Api::InviteLink{ .admin = admin }); if (admin->isSelf()) { *value = peer->session().changes().peerFlagsValue( peer, @@ -892,11 +895,19 @@ void AddPermanentLinkBlock( const auto &links = peer->session().api().inviteLinks().myLinks( peer).links; const auto link = links.empty() ? nullptr : &links.front(); - return (link && link->permanent && !link->revoked) - ? LinkData{ link->link, link->usage } - : LinkData(); + if (link && link->permanent && !link->revoked) { + *currentLinkFields = *link; + return LinkData{ link->link, link->usage }; + } + return LinkData(); }); } else { + rpl::duplicate( + fromList + ) | rpl::start_with_next([=](const Api::InviteLink &link) { + *currentLinkFields = link; + }, container->lifetime()); + *value = std::move( fromList ) | rpl::map([](const Api::InviteLink &link) { @@ -1055,6 +1066,9 @@ void AddPermanentLinkBlock( state->content.value(), st::inviteLinkJoinedRowPadding )->setClickedCallback([=] { + if (!currentLinkFields->link.isEmpty()) { + ShowInviteLinkBox(peer, *currentLinkFields); + } }); container->add(object_ptr>( diff --git a/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp b/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp index ec0760378..5d9a4f80d 100644 --- a/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp +++ b/Telegram/SourceFiles/ui/controls/invite_link_buttons.cpp @@ -118,6 +118,9 @@ not_null AddJoinedCountButton( result->setAttribute( Qt::WA_TransparentForMouseEvents, !state->content.count); + if (!state->content.count) { + result->clearState(); + } const auto &st = st::inviteLinkUserpics; const auto imageWidth = !state->content.userpics.isNull() ? state->content.userpics.width() / style::DevicePixelRatio()