From 98363852b18c4f2cc1525c671b770a6fbf4a7f3a Mon Sep 17 00:00:00 2001 From: strawberry Date: Wed, 2 Oct 2024 00:56:09 -0400 Subject: [PATCH] fix: dont add remote users for push targets, use hashset instead of vec Signed-off-by: strawberry --- src/service/rooms/timeline/mod.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/service/rooms/timeline/mod.rs b/src/service/rooms/timeline/mod.rs index 6a26a1d5..f8f770bc 100644 --- a/src/service/rooms/timeline/mod.rs +++ b/src/service/rooms/timeline/mod.rs @@ -43,7 +43,7 @@ use self::data::Data; pub use self::data::PdusIterItem; use crate::{ account_data, admin, appservice, appservice::NamespaceRegex, globals, pusher, rooms, - rooms::state_compressor::CompressedStateEvent, sending, server_keys, Dep, + rooms::state_compressor::CompressedStateEvent, sending, server_keys, users, Dep, }; // Update Relationships @@ -90,6 +90,7 @@ struct Services { sending: Dep, server_keys: Dep, user: Dep, + users: Dep, pusher: Dep, threads: Dep, search: Dep, @@ -119,6 +120,7 @@ impl crate::Service for Service { sending: args.depend::("sending"), server_keys: args.depend::("server_keys"), user: args.depend::("rooms::user"), + users: args.depend::("users"), pusher: args.depend::("pusher"), threads: args.depend::("rooms::threads"), search: args.depend::("rooms::search"), @@ -378,20 +380,20 @@ impl Service { let mut notifies = Vec::new(); let mut highlights = Vec::new(); - let mut push_target = self + let mut push_target: HashSet<_> = self .services .state_cache .active_local_users_in_room(&pdu.room_id) .map(ToOwned::to_owned) - .collect::>() + .collect() .await; if pdu.kind == TimelineEventType::RoomMember { if let Some(state_key) = &pdu.state_key { - let target_user_id = UserId::parse(state_key.clone()).expect("This state_key was previously validated"); + let target_user_id = UserId::parse(state_key.clone())?; - if !push_target.contains(&target_user_id) { - push_target.push(target_user_id); + if self.services.users.is_active_local(&target_user_id).await { + push_target.insert(target_user_id); } } }