mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 06:07:06 +02:00
Fix invite link updates handling.
This commit is contained in:
parent
4153603d09
commit
9262b773cb
4 changed files with 26 additions and 14 deletions
|
@ -362,7 +362,7 @@ void InviteLinks::destroyAllRevoked(
|
|||
callback();
|
||||
}
|
||||
}
|
||||
_allRevokedDestroyed.fire_copy(peer);
|
||||
_allRevokedDestroyed.fire({ peer, admin });
|
||||
}).fail([=](const RPCError &error) {
|
||||
}).send();
|
||||
}
|
||||
|
@ -452,19 +452,20 @@ rpl::producer<JoinedByLinkSlice> InviteLinks::joinedFirstSliceValue(
|
|||
}
|
||||
|
||||
auto InviteLinks::updates(
|
||||
not_null<PeerData*> peer) const -> rpl::producer<Update> {
|
||||
not_null<PeerData*> peer,
|
||||
not_null<UserData*> admin) const -> rpl::producer<Update> {
|
||||
return _updates.events() | rpl::filter([=](const Update &update) {
|
||||
return update.peer == peer;
|
||||
return update.peer == peer && update.admin == admin;
|
||||
});
|
||||
}
|
||||
|
||||
rpl::producer<> InviteLinks::allRevokedDestroyed(
|
||||
not_null<PeerData*> peer) const {
|
||||
using namespace rpl::mappers;
|
||||
not_null<PeerData*> peer,
|
||||
not_null<UserData*> admin) const {
|
||||
return _allRevokedDestroyed.events(
|
||||
) | rpl::filter(
|
||||
_1 == peer
|
||||
) | rpl::to_empty;
|
||||
) | rpl::filter([=](const AllRevokedDestroyed &which) {
|
||||
return which.peer == peer && which.admin == admin;
|
||||
}) | rpl::to_empty;
|
||||
}
|
||||
|
||||
void InviteLinks::requestJoinedFirstSlice(LinkKey key) {
|
||||
|
|
|
@ -105,9 +105,11 @@ public:
|
|||
not_null<PeerData*> peer,
|
||||
const QString &link) const;
|
||||
[[nodiscard]] rpl::producer<Update> updates(
|
||||
not_null<PeerData*> peer) const;
|
||||
not_null<PeerData*> peer,
|
||||
not_null<UserData*> admin) const;
|
||||
[[nodiscard]] rpl::producer<> allRevokedDestroyed(
|
||||
not_null<PeerData*> peer) const;
|
||||
not_null<PeerData*> peer,
|
||||
not_null<UserData*> admin) const;
|
||||
|
||||
void requestMoreLinks(
|
||||
not_null<PeerData*> peer,
|
||||
|
@ -189,7 +191,12 @@ private:
|
|||
std::vector<Fn<void()>>> _deleteRevokedCallbacks;
|
||||
|
||||
rpl::event_stream<Update> _updates;
|
||||
rpl::event_stream<not_null<PeerData*>> _allRevokedDestroyed;
|
||||
|
||||
struct AllRevokedDestroyed {
|
||||
not_null<PeerData*> peer;
|
||||
not_null<UserData*> admin;
|
||||
};
|
||||
rpl::event_stream<AllRevokedDestroyed> _allRevokedDestroyed;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -583,7 +583,8 @@ void ShowInviteLinkBox(
|
|||
? tr::lng_manage_peer_link_permanent()
|
||||
: tr::lng_manage_peer_link_invite());
|
||||
peer->session().api().inviteLinks().updates(
|
||||
peer
|
||||
peer,
|
||||
link.admin
|
||||
) | rpl::start_with_next([=](const Api::InviteLinkUpdate &update) {
|
||||
if (update.was == link.link
|
||||
&& (!update.now || (!link.revoked && update.now->revoked))) {
|
||||
|
|
|
@ -466,7 +466,8 @@ LinksController::LinksController(
|
|||
}, _lifetime);
|
||||
|
||||
peer->session().api().inviteLinks().updates(
|
||||
peer
|
||||
peer,
|
||||
admin
|
||||
) | rpl::start_with_next([=](const Api::InviteLinkUpdate &update) {
|
||||
const auto now = base::unixtime::now();
|
||||
if (!update.now || update.now->revoked != _revoked) {
|
||||
|
@ -485,7 +486,8 @@ LinksController::LinksController(
|
|||
|
||||
if (_revoked) {
|
||||
peer->session().api().inviteLinks().allRevokedDestroyed(
|
||||
peer
|
||||
peer,
|
||||
admin
|
||||
) | rpl::start_with_next([=] {
|
||||
_requesting = false;
|
||||
_allLoaded = true;
|
||||
|
@ -621,6 +623,7 @@ void LinksController::updateRow(const InviteLinkData &data, TimeId now) {
|
|||
delegate()->peerListUpdateRow(row);
|
||||
} else if (_revoked) {
|
||||
prependRow(data, now);
|
||||
delegate()->peerListRefreshRows();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue