diff --git a/app/App.js b/app/App.js index 430094e..faf6d11 100644 --- a/app/App.js +++ b/app/App.js @@ -77,7 +77,7 @@ export default class App extends Component { }); } - onSendMessage(message){ + onSendMessage(message, onMessageSuccess, onMessageError){ this.setState({ isLoadingMessages: true }); @@ -86,7 +86,9 @@ export default class App extends Component { createMessage(currentRoomKey, message, username) .then((response) => { this.loadChatMessages(currentRoomKey); + onMessageSuccess(); }, (respErr) => { + onMessageError(); console.log("Error creating message: " + respErr); }); } diff --git a/app/components/chat/MessageForm.js b/app/components/chat/MessageForm.js index 9a581ce..fe08c62 100644 --- a/app/components/chat/MessageForm.js +++ b/app/components/chat/MessageForm.js @@ -6,22 +6,42 @@ class MessageForm extends Component { super(props); this.onSendMessage = this.onSendMessage.bind(this); + this.onMessageSuccess = this.onMessageSuccess.bind(this); + this.onMessageError = this.onMessageError.bind(this); } componentDidMount(){ ReactDOM.findDOMNode(this.refs.messageBox).focus(); } + disableMessageBox(){ + let box = $(ReactDOM.findDOMNode(this.refs.messageBox)); + box.prop('disabled', 'disabled'); + } + + enableMessageBox(){ + let box = $(ReactDOM.findDOMNode(this.refs.messageBox)); + box.removeAttr('disabled'); + } + + onMessageSuccess(){ + this.enableMessageBox() + let box = $(ReactDOM.findDOMNode(this.refs.messageBox)); + box.val('') + } + + onMessageError(){ + this.enableMessageBox(); + } + onSendMessage(e){ e.preventDefault(); - // this approach is only marginally less shitty than - // passing the value up the component tree on each keystroke. let messageBox = ReactDOM.findDOMNode(this.refs.messageBox); let message = messageBox.value; if (message && message.length > 0){ - this.props.onSendMessage(message); - messageBox.value = ''; + this.disableMessageBox(); + this.props.onSendMessage(message, this.onMessageSuccess, this.onMessageError); } }