diff --git a/src/api/client/sync/v3.rs b/src/api/client/sync/v3.rs index c09d9740..40430cf6 100644 --- a/src/api/client/sync/v3.rs +++ b/src/api/client/sync/v3.rs @@ -1275,28 +1275,23 @@ async fn calculate_heroes( sender_user: &UserId, ) -> Vec { services - .timeline - .all_pdus(sender_user, room_id) - .ready_filter(|(_, pdu)| pdu.kind == RoomMember) - .fold_default(|heroes: Vec<_>, (_, pdu)| { + .state_accessor + .room_state_type_pdus(room_id, &StateEventType::RoomMember) + .ready_filter_map(Result::ok) + .fold_default(|heroes: Vec<_>, pdu| { fold_hero(heroes, services, room_id, sender_user, pdu) }) .await } -async fn fold_hero( +async fn fold_hero( mut heroes: Vec, services: &Services, room_id: &RoomId, sender_user: &UserId, - pdu: PduEvent, + pdu: Pdu, ) -> Vec { - let Some(user_id): Option<&UserId> = pdu - .state_key - .as_deref() - .map(TryInto::try_into) - .flat_ok() - else { + let Some(user_id): Option<&UserId> = pdu.state_key().map(TryInto::try_into).flat_ok() else { return heroes; };