File tree Expand file tree Collapse file tree 1 file changed +24
-4
lines changed
Expand file tree Collapse file tree 1 file changed +24
-4
lines changed Original file line number Diff line number Diff line change @@ -320,11 +320,31 @@ async fn allowed_to_send_state_event(
320320 | StateEventType :: RoomCanonicalAlias => {
321321 match json. deserialize_as_unchecked :: < RoomCanonicalAliasEventContent > ( ) {
322322 | Ok ( canonical_alias_content) => {
323- let mut aliases = canonical_alias_content. alt_aliases . clone ( ) ;
323+ let current_aliases = services
324+ . state_accessor
325+ . room_state_get_content :: < RoomCanonicalAliasEventContent > (
326+ room_id,
327+ & StateEventType :: RoomCanonicalAlias ,
328+ "" ,
329+ )
330+ . await
331+ . ok ( )
332+ . map ( |content| {
333+ let mut aliases = content. alt_aliases ;
324334
325- if let Some ( alias) = canonical_alias_content. alias {
326- aliases. push ( alias) ;
327- }
335+ if let Some ( alias) = content. alias {
336+ aliases. push ( alias) ;
337+ }
338+
339+ aliases
340+ } )
341+ . unwrap_or_default ( ) ;
342+
343+ let aliases = canonical_alias_content
344+ . alt_aliases
345+ . iter ( )
346+ . chain ( canonical_alias_content. alias . iter ( ) )
347+ . filter ( |alias| !current_aliases. contains ( alias) ) ;
328348
329349 for alias in aliases {
330350 let ( alias_room_id, _servers) = services
You can’t perform that action at this time.
0 commit comments