Skip to content
Snippets Groups Projects
Commit 47abe668 authored by Guillem Nieto's avatar Guillem Nieto
Browse files

Send invites only if invited during the sync request

parent 935f0e61
No related branches found
No related tags found
No related merge requests found
......@@ -391,6 +391,31 @@ pub async fn sync_events_route(
let mut invited_rooms = BTreeMap::new();
for room_id in db.rooms.rooms_invited(&sender_id) {
let room_id = room_id?;
let mut invited_since_last_sync = false;
for pdu in db
.rooms
.pdus_since(&sender_id, &room_id, since)?
.filter_map(|r| r.ok())
{
if pdu.kind == EventType::RoomMember {
if pdu.state_key == Some(sender_id.to_string()) {
let content = serde_json::from_value::<
Raw<ruma::events::room::member::MemberEventContent>,
>(pdu.content.clone())
.expect("Raw::from_value always works")
.deserialize()
.map_err(|_| Error::bad_database("Invalid PDU in database."))?;
if content.membership == ruma::events::room::member::MembershipState::Invite {
invited_since_last_sync = true;
break;
}
}
}
}
if !invited_since_last_sync {
continue;
}
let invited_room = sync_events::InvitedRoom {
invite_state: sync_events::InviteState {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment