diff --git a/rust/src/events/internal_metadata.rs b/rust/src/events/internal_metadata.rs index 1c27e8caca..0778fbfeaa 100644 --- a/rust/src/events/internal_metadata.rs +++ b/rust/src/events/internal_metadata.rs @@ -66,8 +66,6 @@ enum EventInternalMetadataData { TokenId(i64), DeviceId(Box), CalculatedAuthEventIDs(Vec), // MSC4242: State DAGs - PrevMembership(Box), - MembershipUpdateUsersInSharedRooms(Vec), } impl EventInternalMetadataData { @@ -147,14 +145,6 @@ impl EventInternalMetadataData { pyo3::intern!(py, "calculated_auth_event_ids"), o.into_pyobject(py).unwrap().into_any(), ), - EventInternalMetadataData::PrevMembership(o) => ( - pyo3::intern!(py, "prev_membership"), - o.into_pyobject(py).unwrap_infallible().into_any(), - ), - EventInternalMetadataData::MembershipUpdateUsersInSharedRooms(o) => ( - pyo3::intern!(py, "membership_update_users_in_shared_rooms"), - o.into_pyobject(py).unwrap().into_any(), - ), } } @@ -238,19 +228,6 @@ impl EventInternalMetadataData { .extract() .with_context(|| format!("'{key_str}' has invalid type"))?, ), - "prev_membership" => EventInternalMetadataData::PrevMembership( - value - .extract() - .map(String::into_boxed_str) - .with_context(|| format!("'{key_str}' has invalid type"))?, - ), - "membership_update_users_in_shared_rooms" => { - EventInternalMetadataData::MembershipUpdateUsersInSharedRooms( - value - .extract() - .with_context(|| format!("'{key_str}' has invalid type"))?, - ) - } _ => return Ok(None), }; @@ -428,14 +405,6 @@ impl EventInternalMetadataInner { get_property_opt!(self, DelayId).map(|s| s.deref()) } - pub fn get_prev_membership(&self) -> Option<&str> { - get_property_opt!(self, PrevMembership).map(|s| s.deref()) - } - - pub fn get_membership_update_users_in_shared_rooms(&self) -> Option<&Vec> { - get_property_opt!(self, MembershipUpdateUsersInSharedRooms) - } - pub fn get_calculated_auth_event_ids(&self) -> Option<&Vec> { get_property_opt!(self, CalculatedAuthEventIDs) } @@ -505,14 +474,6 @@ impl EventInternalMetadataInner { pub fn set_calculated_auth_event_ids(&mut self, obj: Vec) { set_property!(self, CalculatedAuthEventIDs, obj); } - - pub fn set_prev_membership(&mut self, obj: String) { - set_property!(self, PrevMembership, obj.into_boxed_str()); - } - - pub fn set_membership_update_users_in_shared_rooms(&mut self, obj: Vec) { - set_property!(self, MembershipUpdateUsersInSharedRooms, obj); - } } #[pyclass(frozen, skip_from_py_object)] @@ -575,24 +536,6 @@ impl EventInternalMetadata { pub fn policy_server_spammy(&self) -> PyResult { Ok(self.read_inner()?.get_policy_server_spammy()) } - - /// The previous membership, set only if this is a membership event. - pub fn prev_membership(&self) -> PyResult> { - Ok(self - .read_inner()? - .get_prev_membership() - .map(|s| s.to_owned())) - } - - /// For membership events, this will contain a list of users who - /// would be interested in the user's profile updates, triggered - /// by the membership change. - pub fn membership_update_users_in_shared_rooms(&self) -> PyResult>> { - Ok(self - .read_inner()? - .get_membership_update_users_in_shared_rooms() - .cloned()) - } } /// Helper to convert `None` to an `AttributeError` for a property getter. @@ -887,28 +830,4 @@ impl EventInternalMetadata { self.write_inner()?.set_device_id(obj); Ok(()) } - - /// The previous membership, set only if this is a membership event. - #[getter] - fn get_prev_membership(&self) -> PyResult> { - let guard = self.read_inner()?; - Ok(guard.get_prev_membership().map(|s| s.to_owned())) - } - #[setter] - fn set_prev_membership(&self, obj: String) -> PyResult<()> { - self.write_inner()?.set_prev_membership(obj); - Ok(()) - } - - #[getter] - pub fn get_membership_update_users_in_shared_rooms(&self) -> PyResult>> { - let guard = self.read_inner()?; - Ok(guard.get_membership_update_users_in_shared_rooms().cloned()) - } - #[setter] - fn set_membership_update_users_in_shared_rooms(&self, obj: Vec) -> PyResult<()> { - self.write_inner()? - .set_membership_update_users_in_shared_rooms(obj); - Ok(()) - } } diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index 703b4a692e..b34ee9d50f 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -1990,68 +1990,18 @@ class EventCreationHandler: requester, is_admin_redaction=is_admin_redaction ) - # Run checks/actions on event based on type. - - # This Member check runs for local users only, as we do a - # `notify_user_joined_room` notifier call or generate profile update - # stream updates for local users. - # If this needs to apply to remote users at some point, the - # `self.store.get_local_current_membership_for_user_in_room` below - # needs changing to something else. - if ( - event.type == EventTypes.Member - and event.membership in (Membership.JOIN, Membership.LEAVE) - and self.hs.is_mine_id(event.state_key) - ): + # run checks/actions on event based on type + if event.type == EventTypes.Member and event.membership == Membership.JOIN: ( current_membership, _, ) = await self.store.get_local_current_membership_for_user_in_room( event.state_key, event.room_id ) - - if current_membership: - event.internal_metadata.prev_membership = current_membership - - if ( - event.membership == Membership.LEAVE - and current_membership != Membership.LEAVE - ): - # The user left the room - calculate affected users for - # the event internal metadata, for later usage when persisting - # the actual membership event, which will generate rows into - # the profile updates stream tables. - users_left_in_room = set( - await self.store.get_local_users_in_room(event.room_id) - ) - users_left_in_room.discard(event.state_key) - users_still_sharing_rooms = await self.store.do_users_share_a_room( - event.state_key, - users_left_in_room, - exclude_room_id=event.room_id, - ) - event.internal_metadata.membership_update_users_in_shared_rooms = ( - list(users_left_in_room - users_still_sharing_rooms) - ) - - if ( - event.membership == Membership.JOIN - and current_membership != Membership.JOIN - ): + if current_membership != Membership.JOIN: self._notifier.notify_user_joined_room( event.event_id, event.room_id ) - # The user joined a room - calculate affected users for - # the event internal metadata, for later usage when persisting - # the actual membership event, which will generate rows into - # the profile updates stream tables. - users_in_room = set( - await self.store.get_local_users_in_room(event.room_id) - ) - users_in_room.discard(event.state_key) - event.internal_metadata.membership_update_users_in_shared_rooms = ( - list(users_in_room) - ) if event.type == EventTypes.ServerACL: self._storage_controllers.state.get_server_acl_for_room.invalidate( diff --git a/synapse/synapse_rust/events.pyi b/synapse/synapse_rust/events.pyi index 73c8853d7c..eb6876b0f1 100644 --- a/synapse/synapse_rust/events.pyi +++ b/synapse/synapse_rust/events.pyi @@ -65,13 +65,6 @@ class EventInternalMetadata: # MSC4242 state dags calculated_auth_event_ids: list[str] - prev_membership: str | None - """The previous membership, set only if this is a membership event.""" - membership_update_users_in_shared_rooms: list[str] | None - """For membership events, this will contain a list of users who - would be interested in the users profile updates, triggered - by the membership change.""" - def get_dict(self) -> JsonDict: ... def is_outlier(self) -> bool: ... def copy(self) -> "EventInternalMetadata": ...