diff --git a/src/service/rooms/event_handler/handle_incoming_pdu.rs b/src/service/rooms/event_handler/handle_incoming_pdu.rs index 519cbd9a..feb61294 100644 --- a/src/service/rooms/event_handler/handle_incoming_pdu.rs +++ b/src/service/rooms/event_handler/handle_incoming_pdu.rs @@ -63,20 +63,19 @@ async fn should_rescind_invite( for event in pending_invite_state { if event .get_field::("type")? - .is_none_or(|t| t != "m.room.member") + .is_some_and(|t| t == "m.room.member") || event .get_field::("state_key")? - .is_none_or(|s| s != *target_user_id) + .is_some_and(|s| s == *target_user_id) || event .get_field::("sender")? - .is_none_or(|s| s != *sender) + .is_some_and(|s| s == *sender) || event .get_field::("content")? - .is_none_or(|c| c.membership != MembershipState::Invite) + .is_some_and(|c| c.membership == MembershipState::Invite) { - continue; + return Ok(Some(pdu_event)); } - return Ok(Some(pdu_event)); // Found a pending invite, so this is a rescind } Ok(None)