skip redundant receipts on syncs
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
137e3008ea
commit
26c890d5ac
1 changed files with 8 additions and 6 deletions
|
@ -28,7 +28,7 @@ use ruma::{
|
||||||
events::{
|
events::{
|
||||||
presence::PresenceEvent,
|
presence::PresenceEvent,
|
||||||
room::member::{MembershipState, RoomMemberEventContent},
|
room::member::{MembershipState, RoomMemberEventContent},
|
||||||
AnyRawAccountDataEvent, StateEventType,
|
AnyRawAccountDataEvent, AnySyncEphemeralRoomEvent, StateEventType,
|
||||||
TimelineEventType::*,
|
TimelineEventType::*,
|
||||||
},
|
},
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
|
@ -983,20 +983,22 @@ async fn load_joined_room(
|
||||||
.collect()
|
.collect()
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let mut edus: Vec<_> = services
|
let edus: HashMap<OwnedUserId, Raw<AnySyncEphemeralRoomEvent>> = services
|
||||||
.rooms
|
.rooms
|
||||||
.read_receipt
|
.read_receipt
|
||||||
.readreceipts_since(room_id, since)
|
.readreceipts_since(room_id, since)
|
||||||
.filter_map(|(read_user, _, v)| async move {
|
.filter_map(|(read_user, _, edu)| async move {
|
||||||
(!services
|
services
|
||||||
.users
|
.users
|
||||||
.user_is_ignored(&read_user, sender_user)
|
.user_is_ignored(&read_user, sender_user)
|
||||||
.await)
|
.await
|
||||||
.then_some(v)
|
.or_some((read_user, edu))
|
||||||
})
|
})
|
||||||
.collect()
|
.collect()
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
let mut edus: Vec<Raw<AnySyncEphemeralRoomEvent>> = edus.into_values().collect();
|
||||||
|
|
||||||
if services.rooms.typing.last_typing_update(room_id).await? > since {
|
if services.rooms.typing.last_typing_update(room_id).await? > since {
|
||||||
edus.push(
|
edus.push(
|
||||||
serde_json::from_str(
|
serde_json::from_str(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue