@@ -179,10 +179,13 @@ impl Room {
179179 . transpose ( ) ?
180180 . map ( |e| e. content . ignored_users . into_keys ( ) . collect ( ) ) ;
181181
182+ let active_users = self . store . get_user_ids ( self . room_id ( ) , RoomMemberships :: ACTIVE ) . await ?;
183+
182184 Ok ( MemberRoomInfo {
183185 power_levels : power_levels. into ( ) ,
184186 max_power_level,
185187 users_display_names,
188+ active_users,
186189 ignored_users,
187190 } )
188191 }
@@ -211,18 +214,23 @@ impl RoomMember {
211214 presence : Option < PresenceEvent > ,
212215 room_info : & MemberRoomInfo < ' _ > ,
213216 ) -> Self {
214- let MemberRoomInfo { power_levels, max_power_level, users_display_names, ignored_users } =
215- room_info;
217+ let MemberRoomInfo {
218+ power_levels,
219+ max_power_level,
220+ users_display_names,
221+ ignored_users,
222+ active_users,
223+ } = room_info;
216224
217225 let display_name = event. display_name ( ) ;
218- let membership = event. membership ( ) ;
219226
220- println ! ( "{:?} {:?}" , users_display_names, & display_name) ;
221227 let display_name_ambiguous = users_display_names. get ( & display_name) . is_some_and ( |s| {
228+ // s.filter(|n| )
222229 if !is_display_name_ambiguous ( & display_name, s) {
223230 return false ;
224231 }
225- matches ! ( * membership, MembershipState :: Join | MembershipState :: Invite )
232+ //We check of many active_users with the same surname exist
233+ active_users. iter ( ) . filter ( |u| s. contains ( * u) ) . count ( ) > 1
226234 } ) ;
227235 let is_ignored = ignored_users. as_ref ( ) . is_some_and ( |s| s. contains ( event. user_id ( ) ) ) ;
228236
@@ -396,6 +404,7 @@ pub(crate) struct MemberRoomInfo<'a> {
396404 pub ( crate ) max_power_level : i64 ,
397405 pub ( crate ) users_display_names : HashMap < & ' a DisplayName , BTreeSet < OwnedUserId > > ,
398406 pub ( crate ) ignored_users : Option < BTreeSet < OwnedUserId > > ,
407+ pub ( crate ) active_users : Vec < OwnedUserId > ,
399408}
400409
401410/// The kind of room member updates that just happened.
@@ -574,12 +583,9 @@ mod tests {
574583 . or_default ( )
575584 . entry ( StateEventType :: RoomMember )
576585 . or_default ( ) ;
577-
578- let ambiguity_maps = changes
579- . ambiguity_maps
580- . entry ( room. room_id ( ) . to_owned ( ) )
581- . or_default ( ) ;
582586
587+ let ambiguity_maps =
588+ changes. ambiguity_maps . entry ( room. room_id ( ) . to_owned ( ) ) . or_default ( ) ;
583589
584590 let display_name = DisplayName :: new ( "Carol" ) ;
585591 members. insert ( carol. into ( ) , f. member ( carol) . display_name ( "Carol" ) . into ( ) ) ;
@@ -618,7 +624,6 @@ mod tests {
618624 members. insert ( mewto. into ( ) , f. member ( mewto) . display_name ( "Me" ) . into ( ) ) ;
619625 ambiguity_maps. entry ( display_name. clone ( ) ) . or_default ( ) . insert ( mewto. to_owned ( ) ) ;
620626
621-
622627 store. save_changes ( & changes) . await . unwrap ( ) ;
623628 }
624629
@@ -634,7 +639,6 @@ mod tests {
634639 assert ! ( !room. get_member( julie) . await . unwrap( ) . expect( "Julie user" ) . name_ambiguous( ) ) ;
635640 assert ! ( !room. get_member( bob) . await . unwrap( ) . expect( "Bob user" ) . name_ambiguous( ) ) ;
636641
637-
638642 assert ! ( room. get_member( me) . await . unwrap( ) . expect( "Me user" ) . name_ambiguous( ) ) ;
639643 assert ! ( room. get_member( mewto) . await . unwrap( ) . expect( "Mewto user" ) . name_ambiguous( ) ) ;
640644 }
0 commit comments