empathy: Don't force active:true when adding state for a new player
authorCarl Worth <cworth@cworth.org>
Sat, 4 Jul 2020 14:53:32 +0000 (07:53 -0700)
committerCarl Worth <cworth@cworth.org>
Sat, 4 Jul 2020 14:53:32 +0000 (07:53 -0700)
This fixes the bug where reloading the interface would cause inactive,
grayed-out player names to appear solid instead of grayed out.

What I had been thinking when writing this code is that this function
would be called only when a new player joins the game, (and by
definition, a newly joined player must be active). But this function
can also be called when a player reloads their interface, and at that
point player-join events are received for all players whether active
or not.

Meanwhile, the server is now explicitly providing the active bit for
players, so we get the right information without doing anything.

empathy/empathy.jsx

index b58f9359ff5bdc7bed3bef174cc6119ee7cee0b7..90bf0fd360829299facce85a1e3593c3a82db63a 100644 (file)
@@ -996,13 +996,12 @@ class Game extends React.PureComponent {
   }
 
   set_other_player_info(info) {
-    const player_object = {...info, active: true};
     const other_players_copy = [...this.state.other_players];
     const idx = other_players_copy.findIndex(o => o.id === info.id);
     if (idx >= 0) {
-      other_players_copy[idx] = player_object;
+      other_players_copy[idx] = info;
     } else {
-      other_players_copy.push(player_object);
+      other_players_copy.push(info);
     }
     this.setState({
       other_players: other_players_copy