|
|
@ -320,12 +320,25 @@ impl Service {
|
|
|
|
let mut notifies = Vec::new();
|
|
|
|
let mut notifies = Vec::new();
|
|
|
|
let mut highlights = Vec::new();
|
|
|
|
let mut highlights = Vec::new();
|
|
|
|
|
|
|
|
|
|
|
|
for user in services()
|
|
|
|
let mut push_target = services()
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
|
.state_cache
|
|
|
|
.state_cache
|
|
|
|
.get_our_real_users(&pdu.room_id)?
|
|
|
|
.get_our_real_users(&pdu.room_id)?;
|
|
|
|
.iter()
|
|
|
|
|
|
|
|
{
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if !push_target.contains(&target_user_id) {
|
|
|
|
|
|
|
|
let mut target = push_target.as_ref().clone();
|
|
|
|
|
|
|
|
target.insert(target_user_id);
|
|
|
|
|
|
|
|
push_target = Arc::new(target);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for user in push_target.iter() {
|
|
|
|
// Don't notify the user of their own events
|
|
|
|
// Don't notify the user of their own events
|
|
|
|
if user == &pdu.sender {
|
|
|
|
if user == &pdu.sender {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|