Skip to content

Commit be4d928

Browse files
committed
e
1 parent 27ccbbe commit be4d928

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

src/api/client/state.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)