+ The following players have submitted their answers:{' '}
+ {[...this.props.players_answered].join(', ')}
+
+ {still_waiting}
{move_on_button}
@@ -930,12 +986,29 @@ class Game extends React.PureComponent {
}
set_player_answering(player) {
+ /* Set the player as actively answering now. */
this.setState({
players_answering: {
...this.state.players_answering,
[player]: {active: true}
}
});
+ /* And arrange to have them marked idle very shortly.
+ *
+ * Note: This timeout is intentionally very, very short. We only
+ * need it long enough that the browser has latched onto the state
+ * change to "active" above. We actually use a CSS transition
+ * delay to control the user-perceptible length of time after
+ * which an active player appears inactive.
+ */
+ setTimeout(() => {
+ this.setState({
+ players_answering: {
+ ...this.state.players_answering,
+ [player]: {active: false}
+ }
+ });
+ }, 100);
}
set_answering_idle(value) {
@@ -995,12 +1068,30 @@ class Game extends React.PureComponent {
}
set_player_judging(player) {
+ /* Set the player as actively judging now. */
this.setState({
players_judging: {
...this.state.players_judging,
[player]: {active: true}
}
});
+ /* And arrange to have them marked idle very shortly.
+ *
+ * Note: This timeout is intentionally very, very short. We only
+ * need it long enough that the browser has latched onto the state
+ * change to "active" above. We actually use a CSS transition
+ * delay to control the user-perceptible length of time after
+ * which an active player appears inactive.
+ */
+ setTimeout(() => {
+ this.setState({
+ players_judging: {
+ ...this.state.players_judging,
+ [player]: {active: false}
+ }
+ });
+ }, 100);
+
}
set_judging_idle(value) {
@@ -1152,6 +1243,7 @@ class Game extends React.PureComponent {
,