diff --git a/clippy.toml b/clippy.toml index bd5d4b2a..eec1e7a4 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,6 +1,6 @@ array-size-threshold = 4096 cognitive-complexity-threshold = 100 # TODO reduce me ALARA -excessive-nesting-threshold = 11 # TODO reduce me to 4 or 5 +excessive-nesting-threshold = 8 future-size-threshold = 8192 stack-size-threshold = 196608 # TODO reduce me ALARA too-many-lines-threshold = 780 # TODO reduce me to <= 100 diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index c1dc703c..1e8045f5 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -840,44 +840,51 @@ where .await; for (key, id) in current_state_ids { - if since_state_ids.get(&key) != Some(&id) { - let Ok(pdu) = services.rooms.timeline.get_pdu(&id).await else { - error!("Pdu in state not found: {id}"); - continue; - }; - if pdu.kind == TimelineEventType::RoomMember { - if let Some(Ok(user_id)) = pdu.state_key.as_deref().map(UserId::parse) - { - if user_id == sender_user { - continue; - } + if since_state_ids.get(&key) == Some(&id) { + continue; + } - let content: RoomMemberEventContent = pdu.get_content()?; - match content.membership { - | MembershipState::Join => { - // A new user joined an encrypted room - if !share_encrypted_room( - services, - sender_user, - user_id, - Some(room_id), - ) - .await - { - device_list_changes.insert(user_id.to_owned()); - } - }, - | MembershipState::Leave => { - // Write down users that have left encrypted rooms we - // are in - left_encrypted_users.insert(user_id.to_owned()); - }, - | _ => {}, - } + let Ok(pdu) = services.rooms.timeline.get_pdu(&id).await else { + error!("Pdu in state not found: {id}"); + continue; + }; + + if pdu.kind != TimelineEventType::RoomMember { + continue; + } + + let Some(Ok(user_id)) = pdu.state_key.as_deref().map(UserId::parse) else { + continue; + }; + + if user_id == sender_user { + continue; + } + + let content: RoomMemberEventContent = pdu.get_content()?; + match content.membership { + | MembershipState::Join => { + // A new user joined an encrypted room + if !share_encrypted_room( + services, + sender_user, + user_id, + Some(room_id), + ) + .await + { + device_list_changes.insert(user_id.to_owned()); } - } + }, + | MembershipState::Leave => { + // Write down users that have left encrypted rooms we + // are in + left_encrypted_users.insert(user_id.to_owned()); + }, + | _ => {}, } } + if joined_since_last_sync || new_encrypted_room { // If the user is in a new encrypted room, give them all joined users device_list_changes.extend(