Send invites only if invited during the sync request
Fixes: https://git.koesters.xyz/timo/conduit/issues/175
This commit is contained in:
		
							parent
							
								
									935f0e6185
								
							
						
					
					
						commit
						47abe6686e
					
				
					 1 changed files with 25 additions and 0 deletions
				
			
		|  | @ -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 { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue