|
|
|
@ -2338,10 +2338,8 @@ pub fn sync_route(
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
joined_rooms.insert(
|
|
|
|
|
room_id.clone().try_into().unwrap(),
|
|
|
|
|
sync_events::JoinedRoom {
|
|
|
|
|
account_data: Some(sync_events::AccountData {
|
|
|
|
|
let joined_room = sync_events::JoinedRoom {
|
|
|
|
|
account_data: sync_events::AccountData {
|
|
|
|
|
events: db
|
|
|
|
|
.account_data
|
|
|
|
|
.changes_since(Some(&room_id), &user_id, since)
|
|
|
|
@ -2349,7 +2347,7 @@ pub fn sync_route(
|
|
|
|
|
.into_iter()
|
|
|
|
|
.map(|(_, v)| v)
|
|
|
|
|
.collect(),
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
summary: sync_events::RoomSummary {
|
|
|
|
|
heroes,
|
|
|
|
|
joined_member_count: joined_member_count.map(|n| (n as u32).into()),
|
|
|
|
@ -2380,8 +2378,11 @@ pub fn sync_route(
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
ephemeral: sync_events::Ephemeral { events: edus },
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if !joined_room.is_empty() {
|
|
|
|
|
joined_rooms.insert(room_id.clone().try_into().unwrap(), joined_room);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut left_rooms = BTreeMap::new();
|
|
|
|
@ -2390,6 +2391,7 @@ pub fn sync_route(
|
|
|
|
|
let pdus = db.rooms.pdus_since(&room_id, since).unwrap();
|
|
|
|
|
let room_events = pdus.map(|pdu| pdu.unwrap().to_room_event()).collect();
|
|
|
|
|
|
|
|
|
|
// TODO: Only until leave point
|
|
|
|
|
let mut edus = db
|
|
|
|
|
.rooms
|
|
|
|
|
.edus
|
|
|
|
@ -2416,27 +2418,26 @@ pub fn sync_route(
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
left_rooms.insert(
|
|
|
|
|
room_id.clone().try_into().unwrap(),
|
|
|
|
|
sync_events::LeftRoom {
|
|
|
|
|
account_data: Some(sync_events::AccountData { events: Vec::new() }),
|
|
|
|
|
let left_room = sync_events::LeftRoom {
|
|
|
|
|
account_data: sync_events::AccountData { events: Vec::new() },
|
|
|
|
|
timeline: sync_events::Timeline {
|
|
|
|
|
limited: Some(false),
|
|
|
|
|
prev_batch: Some(next_batch.clone()),
|
|
|
|
|
events: room_events,
|
|
|
|
|
},
|
|
|
|
|
state: sync_events::State { events: Vec::new() },
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if !left_room.is_empty() {
|
|
|
|
|
left_rooms.insert(room_id.clone().try_into().unwrap(), left_room);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut invited_rooms = BTreeMap::new();
|
|
|
|
|
for room_id in db.rooms.rooms_invited(&user_id) {
|
|
|
|
|
let room_id = room_id.unwrap();
|
|
|
|
|
|
|
|
|
|
invited_rooms.insert(
|
|
|
|
|
room_id.clone(),
|
|
|
|
|
sync_events::InvitedRoom {
|
|
|
|
|
let invited_room = sync_events::InvitedRoom {
|
|
|
|
|
invite_state: sync_events::InviteState {
|
|
|
|
|
events: db
|
|
|
|
|
.rooms
|
|
|
|
@ -2446,8 +2447,11 @@ pub fn sync_route(
|
|
|
|
|
.map(|(_, pdu)| pdu.to_stripped_state_event())
|
|
|
|
|
.collect(),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if !invited_room.is_empty() {
|
|
|
|
|
invited_rooms.insert(room_id.clone(), invited_room);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MatrixResult(Ok(sync_events::Response {
|
|
|
|
@ -2482,17 +2486,16 @@ pub fn sync_route(
|
|
|
|
|
.map(|(_, v)| v)
|
|
|
|
|
.collect(),
|
|
|
|
|
},
|
|
|
|
|
device_lists: if since != 0 {
|
|
|
|
|
Some(sync_events::DeviceLists {
|
|
|
|
|
changed: db
|
|
|
|
|
.users
|
|
|
|
|
device_lists: sync_events::DeviceLists {
|
|
|
|
|
changed: if since != 0 {
|
|
|
|
|
db.users
|
|
|
|
|
.device_keys_changed(since)
|
|
|
|
|
.map(|u| u.unwrap())
|
|
|
|
|
.collect(),
|
|
|
|
|
left: Vec::new(), // TODO
|
|
|
|
|
})
|
|
|
|
|
.collect()
|
|
|
|
|
} else {
|
|
|
|
|
None // TODO: left
|
|
|
|
|
Vec::new()
|
|
|
|
|
},
|
|
|
|
|
left: Vec::new(), // TODO
|
|
|
|
|
},
|
|
|
|
|
device_one_time_keys_count: Default::default(), // TODO
|
|
|
|
|
to_device: sync_events::ToDevice {
|
|
|
|
|