summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Kangas <gabek@real-ity.com>2021-12-12 00:11:38 -0800
committerGabe Kangas <gabek@real-ity.com>2021-12-12 00:11:38 -0800
commit70027d058fb7a41ca03d08141a7ca1715a3a5721 (patch)
treedb3f039753b418eb0ab65ff548a70c12160a8bef
parentf3a8266c992b692d2d4b55eb50a9c3b451515c89 (diff)
Fix chat react state getting overwritten. Closes #1529
-rw-r--r--webroot/js/components/chat/chat.js23
1 files changed, 15 insertions, 8 deletions
diff --git a/webroot/js/components/chat/chat.js b/webroot/js/components/chat/chat.js
index 94c1fa873..5c7df8ce3 100644
--- a/webroot/js/components/chat/chat.js
+++ b/webroot/js/components/chat/chat.js
@@ -169,10 +169,14 @@ export default class Chat extends Component {
const chatUserNames = allChatUserNames.filter(
(name) => name != username
);
- this.setState({
- messages: data.concat(this.state.messages),
- chatUserNames,
+ this.setState((previousState, currentProps) => {
+ return {
+ ...previousState,
+ messages: data.concat(previousState.messages),
+ chatUserNames,
+ };
});
+
this.scrollToBottom();
})
.catch((error) => {
@@ -208,8 +212,8 @@ export default class Chat extends Component {
if (messageType === SOCKET_MESSAGE_TYPES.CONNECTED_USER_INFO) {
const modStatusUpdate = checkIsModerator(message);
if (modStatusUpdate !== this.state.isModerator) {
- this.setState({
- isModerator: modStatusUpdate,
+ this.setState((previousState, currentProps) => {
+ return { ...previousState, isModerator: modStatusUpdate };
});
}
}
@@ -252,8 +256,8 @@ export default class Chat extends Component {
Math.max(updatedMessageList.length - 300, 0)
);
}
- this.setState({
- messages: updatedMessageList,
+ this.setState((previousState, currentProps) => {
+ return { ...previousState, messages: updatedMessageList };
});
} else if (
renderableChatStyleMessages.includes(messageType) &&
@@ -270,7 +274,10 @@ export default class Chat extends Component {
);
newState.chatUserNames = [...updatedChatUserNames];
}
- this.setState(newState);
+
+ this.setState((previousState, currentProps) => {
+ return { ...previousState, newState };
+ });
}
// if window is blurred and we get a new message, add 1 to title