feat: de-duplicate user update events sent to clients

This commit is contained in:
Paul Makles
2023-05-21 16:22:42 +01:00
parent d81d08f1ce
commit 3ef549537e
4 changed files with 35 additions and 1 deletions

View File

@@ -302,6 +302,7 @@ impl State {
..Default::default()
},
clear: vec![],
event_id: Some(ulid::Ulid::new().to_string()),
};
for server in self.cache.servers.keys() {
@@ -499,6 +500,17 @@ impl State {
}
}
EventV1::UserUpdate { event_id, .. } => {
if let Some(id) = event_id {
if self.cache.seen_events.contains(id) {
return false;
}
self.cache.seen_events.put(id.to_string(), ());
}
*event_id = None;
}
EventV1::UserRelationship { id, user, .. } => {
self.cache.users.insert(id.clone(), user.clone());
@@ -508,6 +520,7 @@ impl State {
self.remove_subscription(id);
}
}
_ => {}
}