Browse Source

Handle JoinRoomResponse.

wip
Titouan Rigoudy 9 years ago
parent
commit
bac9a1f351
2 changed files with 21 additions and 1 deletions
  1. +16
    -1
      src/client.rs
  2. +5
    -0
      src/user.rs

+ 16
- 1
src/client.rs View File

@ -239,7 +239,8 @@ impl Client {
} }
} }
fn handle_join_room_response(&mut self, response: JoinRoomResponse) {
fn handle_join_room_response(&mut self, mut response: JoinRoomResponse) {
// First look up the room struct.
let room = match self.rooms.get_mut(&response.room_name) { let room = match self.rooms.get_mut(&response.room_name) {
Some(room) => room, Some(room) => room,
None => { None => {
@ -250,6 +251,8 @@ impl Client {
return; return;
} }
}; };
// Log what's happening.
if let room::Membership::Joining = room.membership { if let room::Membership::Joining = room.membership {
info!("Joined room \"{}\"", response.room_name); info!("Joined room \"{}\"", response.room_name);
} else { } else {
@ -258,8 +261,20 @@ impl Client {
response.room_name, room.membership response.room_name, room.membership
); );
} }
// Update the room struct.
room.membership = room::Membership::Member; room.membership = room::Membership::Member;
room.user_count = response.users.len(); room.user_count = response.users.len();
room.owner = response.owner;
room.operators = response.operators;
for &(ref name, _) in response.users.iter() {
room.members.push(name.clone());
}
// Then update the user structs based on the info we just got.
for (name, user) in response.users.drain(..) {
self.users.insert(name, user);
}
} }
fn handle_login_response(&mut self, login: LoginResponse) { fn handle_login_response(&mut self, login: LoginResponse) {


+ 5
- 0
src/user.rs View File

@ -85,6 +85,11 @@ impl UserMap {
self.map.get(name) self.map.get(name)
} }
/// Inserts the given user info for the given user name in the mapping.
pub fn insert(&mut self, name: String, user: User) {
self.map.insert(name, user);
}
/// Update the set of privileged users based on the last server response. /// Update the set of privileged users based on the last server response.
pub fn update_privileges( pub fn update_privileges(
&mut self, mut response: server::PrivilegedUsersResponse) &mut self, mut response: server::PrivilegedUsersResponse)


Loading…
Cancel
Save