Skip to content
Snippets Groups Projects
Commit 4a8bc93b authored by Timo Kösters's avatar Timo Kösters
Browse files

Merge pull request 'Send invites only if invited during the sync request'...

Merge pull request 'Send invites only if invited during the sync request' (#176) from gnieto/conduit:fix/send-invite-when-needed into master

Reviewed-on: https://git.koesters.xyz/timo/conduit/pulls/176


Reviewed-by: default avatarTimo Kösters <timo@koesters.xyz>
parents 935f0e61 b5755936
No related branches found
No related tags found
No related merge requests found
......@@ -84,8 +84,8 @@ pub async fn sync_events_route(
for pdu in db
.rooms
.pdus_since(&sender_id, &room_id, since)?
.filter_map(|r| r.ok())
{
let pdu = pdu?;
send_notification_counts = true;
if pdu.kind == EventType::RoomMember {
send_member_count = true;
......@@ -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)?
{
let pdu = pdu?;
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