From bf4520a2a9be22c42f1b3c419f2d2ebf6693f9ae Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 26 Jan 2023 11:25:09 +0100 Subject: [PATCH] events: Restrict what counts as MembershipChange::ProfileChanged --- .../ruma-common/src/events/room/member/change.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/ruma-common/src/events/room/member/change.rs b/crates/ruma-common/src/events/room/member/change.rs index 2c776929..6e1e09cb 100644 --- a/crates/ruma-common/src/events/room/member/change.rs +++ b/crates/ruma-common/src/events/room/member/change.rs @@ -131,10 +131,17 @@ pub(super) fn membership_change<'a>( | (St::Join, St::Knock) | (St::Ban, St::Knock) | (St::Knock, St::Join) => Ch::Error, - (St::Join, St::Join) => Ch::ProfileChanged { - displayname_change: Change::new(prev_details.displayname, details.displayname), - avatar_url_change: Change::new(prev_details.avatar_url, details.avatar_url), - }, + (St::Join, St::Join) + if sender == state_key + && (prev_details.displayname != details.displayname + || prev_details.avatar_url != details.avatar_url) => + { + Ch::ProfileChanged { + displayname_change: Change::new(prev_details.displayname, details.displayname), + avatar_url_change: Change::new(prev_details.avatar_url, details.avatar_url), + } + } + (St::Join, St::Join) => Ch::None, (St::Join, St::Leave) if sender == state_key => Ch::Left, (St::Join, St::Leave) => Ch::Kicked, (St::Join, St::Ban) => Ch::KickedAndBanned,