summaryrefslogtreecommitdiffstats
path: root/web/react/components/textbox.jsx
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-07-07 11:22:58 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-07-09 16:41:33 -0700
commit80f9ebadeff1f96fe2235e35cc5a1f80afd6dd58 (patch)
tree643ebe72ead6e53b5ece607470b54d0be1741677 /web/react/components/textbox.jsx
parenteddf43e1337f713b6e9f4ef6e733171f742e76a5 (diff)
downloadchat-80f9ebadeff1f96fe2235e35cc5a1f80afd6dd58.tar.gz
chat-80f9ebadeff1f96fe2235e35cc5a1f80afd6dd58.tar.bz2
chat-80f9ebadeff1f96fe2235e35cc5a1f80afd6dd58.zip
Added errorchange listener to textbox that detects if inet is not connected. Still do not have reliable way of checking if inet has reconnected
Diffstat (limited to 'web/react/components/textbox.jsx')
-rw-r--r--web/react/components/textbox.jsx35
1 files changed, 33 insertions, 2 deletions
diff --git a/web/react/components/textbox.jsx b/web/react/components/textbox.jsx
index 6b746aa78..227d61e3f 100644
--- a/web/react/components/textbox.jsx
+++ b/web/react/components/textbox.jsx
@@ -8,11 +8,22 @@ var SocketStore = require('../stores/socket_store.jsx');
var MsgTyping = require('./msg_typing.jsx');
var MentionList = require('./mention_list.jsx');
var CommandList = require('./command_list.jsx');
+var ErrorStore = require('../stores/error_store.jsx');
var utils = require('../utils/utils.jsx');
var Constants = require('../utils/constants.jsx');
var ActionTypes = Constants.ActionTypes;
+function getStateFromStores() {
+ var error = ErrorStore.getLastError();
+
+ if (error) {
+ return { message: error.message };
+ } else {
+ return { message: null };
+ }
+}
+
module.exports = React.createClass({
caret: -1,
addedMention: false,
@@ -20,6 +31,8 @@ module.exports = React.createClass({
mentions: [],
componentDidMount: function() {
PostStore.addAddMentionListener(this._onChange);
+ ErrorStore.addChangeListener(this._onError);
+ //SocketStore.addChangeListener(this._onSocketChange);
this.resize();
this.processMentions();
@@ -27,11 +40,29 @@ module.exports = React.createClass({
},
componentWillUnmount: function() {
PostStore.removeAddMentionListener(this._onChange);
+ ErrorStore.removeChangeListener(this._onError);
},
_onChange: function(id, username) {
if (id !== this.props.id) return;
this.addMention(username);
},
+ _onError: function() {
+ var errorState = getStateFromStores();
+
+ if (errorState.message === "There appears to be a problem with your internet connection") {
+ this.setState({ connection: " bad-connection" });
+ }
+ else {
+ console.log("Logged the error correctly");
+ this.setState({ connection: "" });
+ }
+ },
+ /*_onSocketChange: function() {
+ if (SocketStore.isSocketClosed())
+ this.setState({ connection: " bad-connection" });
+ else
+ this.setState({ connection: "" });
+ },*/
componentDidUpdate: function() {
if (this.caret >= 0) {
utils.setCaretPosition(this.refs.message.getDOMNode(), this.caret)
@@ -57,7 +88,7 @@ module.exports = React.createClass({
this.resize();
},
getInitialState: function() {
- return { mentionText: '-1', mentions: [] };
+ return { mentionText: '-1', mentions: [], connection: "" };
},
updateMentionTab: function(mentionText, excludeList) {
var self = this;
@@ -287,7 +318,7 @@ module.exports = React.createClass({
<div ref="wrapper" className="textarea-wrapper">
<CommandList ref='commands' addCommand={this.addCommand} channelId={this.props.channelId} />
<div className="form-control textarea-div" ref="textdiv"/>
- <textarea id={this.props.id} ref="message" className="form-control custom-textarea" spellCheck="true" autoComplete="off" autoCorrect="off" rows="1" placeholder={this.props.createMessage} value={this.props.messageText} onInput={this.handleChange} onChange={this.handleChange} onKeyPress={this.handleKeyPress} onKeyDown={this.handleKeyDown} onScroll={this.scroll} onFocus={this.handleFocus} onBlur={this.handleBlur} onPaste={this.handlePaste} />
+ <textarea id={this.props.id} ref="message" className={"form-control custom-textarea" + this.state.connection} spellCheck="true" autoComplete="off" autoCorrect="off" rows="1" placeholder={this.props.createMessage} value={this.props.messageText} onInput={this.handleChange} onChange={this.handleChange} onKeyPress={this.handleKeyPress} onKeyDown={this.handleKeyDown} onScroll={this.scroll} onFocus={this.handleFocus} onBlur={this.handleBlur} onPaste={this.handlePaste} />
</div>
);
}