Browse Source

Move {insert,remove}_member() from RoomMap to RoomEntry.

main
Titouan Rigoudy 2 years ago
parent
commit
3f661aa2b8
2 changed files with 33 additions and 42 deletions
  1. +20
    -14
      client/src/client.rs
  2. +13
    -28
      client/src/room/map.rs

+ 20
- 14
client/src/client.rs View File

@ -648,13 +648,16 @@ impl Client {
&mut self,
response: server::RoomUserJoinedResponse,
) {
let result = self
.rooms
.insert_member(&response.room_name, response.user.name.clone());
if let Err(err) = result {
error!("RoomUserJoinedResponse: {}", err);
return;
}
let room = match self.rooms.get_mut_strict(&response.room_name) {
Ok(room) => room,
Err(err) => {
error!("RoomUserJoinedResponse: {}", err);
return;
}
};
room.insert_member(response.user.name.clone());
self.send_to_controller(control::Response::RoomUserJoinedResponse(
control::RoomUserJoinedResponse {
room_name: response.room_name,
@ -667,13 +670,16 @@ impl Client {
&mut self,
response: server::RoomUserLeftResponse,
) {
let result = self
.rooms
.remove_member(&response.room_name, &response.user_name);
if let Err(err) = result {
error!("RoomUserLeftResponse: {}", err);
return;
}
let room = match self.rooms.get_mut_strict(&response.room_name) {
Ok(room) => room,
Err(err) => {
error!("RoomUserLeftResponse: {}", err);
return;
}
};
room.remove_member(&response.user_name);
self.send_to_controller(control::Response::RoomUserLeftResponse(
control::RoomUserLeftResponse {
room_name: response.room_name,


+ 13
- 28
client/src/room/map.rs View File

@ -95,9 +95,8 @@ impl RoomEntry {
self.state.members = members.iter().map(|user| user.name.clone()).collect();
}
/// Records that we are now trying to leave the given room.
/// If the room is not found, or if its membership status is not `Member`,
/// returns an error.
/// Records that we are now trying to leave this room.
/// Returns an error if its membership status is not `Member`,
#[cfg(test)]
pub fn start_leaving(&mut self) -> Result<(), RoomMembershipChangeError> {
match self.state.membership {
@ -113,7 +112,7 @@ impl RoomEntry {
}
}
/// Records that we have now left the given room.
/// Records that we have now left this room.
pub fn leave(&mut self) {
match self.state.membership {
RoomMembership::Leaving => info!("Left room {:?}", self.name),
@ -126,6 +125,16 @@ impl RoomEntry {
self.state.membership = RoomMembership::NonMember;
}
/// Adds the given user to this room's members.
pub fn insert_member(&mut self, user_name: String) {
self.state.members.insert(user_name);
}
/// Removes the given user from this room's members.
pub fn remove_member(&mut self, user_name: &str) {
self.state.members.remove(user_name);
}
}
/// Contains the mapping from room names to room data and provides a clean
@ -249,30 +258,6 @@ impl RoomMap {
// TODO: Move remaining methods to `RoomEntry`.
/// Inserts the given user in the given room's set of members.
/// Returns an error if the room is not found.
pub fn insert_member(
&mut self,
room_name: &str,
user_name: String,
) -> Result<(), RoomError> {
let room = self.get_mut_strict(room_name)?;
room.state.members.insert(user_name);
Ok(())
}
/// Removes the given user from the given room's set of members.
/// Returns an error if the room is not found.
pub fn remove_member(
&mut self,
room_name: &str,
user_name: &str,
) -> Result<(), RoomError> {
let room = self.get_mut_strict(room_name)?;
room.state.members.remove(user_name);
Ok(())
}
/*---------*
* Tickers *
*---------*/


Loading…
Cancel
Save