chiark / gitweb /
fix
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 23 Aug 2020 21:58:26 +0000 (22:58 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 23 Aug 2020 21:58:26 +0000 (22:58 +0100)
src/cmdlistener.rs
src/global.rs

index bff29ba8c4b5dad6e7a9d4b13dca2c4812e83e55..e50ccf251221350fb25047523d99fe74f92054a0 100644 (file)
@@ -144,7 +144,8 @@ fn execute_game_insn(cs: &CommandStream,
         Err(ME::AlreadyExists)?;
       }
       let logentry = LogEntry {
-        html: format!("The facilitator added a player xxx"),
+        html: format!("The facilitator added a player: {}",
+                      htmlescape::encode_minimal(&pl.nick)),
       };
       let (player, logentry) = ig.player_new(pl, logentry)?;
       #[allow(clippy::useless_format)] // xxx below
@@ -164,12 +165,13 @@ fn execute_game_insn(cs: &CommandStream,
     }),
 
     RemovePlayer(player) => {
-      ig.player_remove(player)?;
+      let old_state = ig.player_remove(player)?;
       #[allow(clippy::useless_format)] // xxx below
       (U{ pcs: vec![],
-          log: vec![ LogEntry {
-            html: format!("The facilitator removed a player xxx"),
-          }],
+          log: old_state.iter().map(|pl| LogEntry {
+            html: format!("The facilitator removed a player: {}",
+                          htmlescape::encode_minimal(&pl.nick)),
+          }).collect(),
           raw: None},
        Fine)
     },
index c6262052e7a211e0d462aec5617bb01d54db7ed2..d4e605e999d8eaf99f4d2bb9b5dd21b1f5eb72bb 100644 (file)
@@ -328,14 +328,14 @@ impl InstanceGuard<'_> {
   //  #[throws(ServerFailure)]
   //  https://github.com/withoutboats/fehler/issues/62
   pub fn player_remove(&mut self, oldplayer: PlayerId)
-                       -> Result<(),ServerFailure> {
+                       -> Result<Option<PlayerState>,ServerFailure> {
     // We have to filter this player out of everything
     // Then save
     // Then send updates
     // We make a copy so if the save fails, we can put everything back
 
     let mut players = self.c.g.gs.players.clone();
-    players.remove(oldplayer);
+    let old_data = players.remove(oldplayer);
 
     // New state
     let mut gs = GameState {
@@ -422,7 +422,7 @@ impl InstanceGuard<'_> {
       );
     })(); // <- No ?, ensures that IEFE is infallible (barring panics)
 
-    Ok(())
+    Ok(old_data)
   }
 
   #[throws(MgmtError)]