fix: maintain server list again
This commit is contained in:
parent
25c3d89f28
commit
5a04559cb4
2 changed files with 30 additions and 8 deletions
|
@ -124,6 +124,36 @@ impl service::rooms::state_cache::Data for KeyValueDatabase {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.insert(room_id.to_owned(), Arc::new(real_users));
|
.insert(room_id.to_owned(), Arc::new(real_users));
|
||||||
|
|
||||||
|
for old_joined_server in self.room_servers(room_id).filter_map(|r| r.ok()) {
|
||||||
|
if !joined_servers.remove(&old_joined_server) {
|
||||||
|
// Server not in room anymore
|
||||||
|
let mut roomserver_id = room_id.as_bytes().to_vec();
|
||||||
|
roomserver_id.push(0xff);
|
||||||
|
roomserver_id.extend_from_slice(old_joined_server.as_bytes());
|
||||||
|
|
||||||
|
let mut serverroom_id = old_joined_server.as_bytes().to_vec();
|
||||||
|
serverroom_id.push(0xff);
|
||||||
|
serverroom_id.extend_from_slice(room_id.as_bytes());
|
||||||
|
|
||||||
|
self.roomserverids.remove(&roomserver_id)?;
|
||||||
|
self.serverroomids.remove(&serverroom_id)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now only new servers are in joined_servers anymore
|
||||||
|
for server in joined_servers {
|
||||||
|
let mut roomserver_id = room_id.as_bytes().to_vec();
|
||||||
|
roomserver_id.push(0xff);
|
||||||
|
roomserver_id.extend_from_slice(server.as_bytes());
|
||||||
|
|
||||||
|
let mut serverroom_id = server.as_bytes().to_vec();
|
||||||
|
serverroom_id.push(0xff);
|
||||||
|
serverroom_id.extend_from_slice(room_id.as_bytes());
|
||||||
|
|
||||||
|
self.roomserverids.insert(&roomserver_id, &[])?;
|
||||||
|
self.serverroomids.insert(&serverroom_id, &[])?;
|
||||||
|
}
|
||||||
|
|
||||||
self.appservice_in_room_cache
|
self.appservice_in_room_cache
|
||||||
.write()
|
.write()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
|
@ -39,14 +39,6 @@ impl Service {
|
||||||
// TODO: displayname, avatar url
|
// TODO: displayname, avatar url
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut roomserver_id = room_id.as_bytes().to_vec();
|
|
||||||
roomserver_id.push(0xff);
|
|
||||||
roomserver_id.extend_from_slice(user_id.server_name().as_bytes());
|
|
||||||
|
|
||||||
let mut serverroom_id = user_id.server_name().as_bytes().to_vec();
|
|
||||||
serverroom_id.push(0xff);
|
|
||||||
serverroom_id.extend_from_slice(room_id.as_bytes());
|
|
||||||
|
|
||||||
match &membership {
|
match &membership {
|
||||||
MembershipState::Join => {
|
MembershipState::Join => {
|
||||||
// Check if the user never joined this room
|
// Check if the user never joined this room
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue