Focus the text box at appropriate times

This commit is contained in:
David Baker 2015-06-18 15:03:57 +01:00
parent 90f6764cbf
commit b31794cda5
2 changed files with 28 additions and 0 deletions

View File

@ -2,7 +2,25 @@ var React = require('react');
var MatrixClientPeg = require("../MatrixClientPeg"); var MatrixClientPeg = require("../MatrixClientPeg");
var dis = require("../dispatcher");
module.exports = React.createClass({ module.exports = React.createClass({
componentDidMount: function() {
this.dispatcherRef = dis.register(this.onAction);
},
componentWillUnmount: function() {
dis.unregister(this.dispatcherRef);
},
onAction: function(payload) {
switch (payload.action) {
case 'focus_composer':
this.refs.textarea.getDOMNode().focus();
break;
}
},
onKeyDown: function (ev) { onKeyDown: function (ev) {
if (ev.keyCode == 13) { if (ev.keyCode == 13) {
var contentText = this.refs.textarea.getDOMNode().value; var contentText = this.refs.textarea.getDOMNode().value;

View File

@ -27,12 +27,20 @@ module.exports = React.createClass({
if (this.state.logged_in) { if (this.state.logged_in) {
this.startMatrixClient(); this.startMatrixClient();
} }
this.focusComposer = false;
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
dis.unregister(this.dispatcherRef); dis.unregister(this.dispatcherRef);
}, },
componentDidUpdate: function() {
if (this.focusComposer) {
dis.dispatch({action: 'focus_composer'});
this.focusComposer = false;
}
},
onAction: function(payload) { onAction: function(payload) {
switch (payload.action) { switch (payload.action) {
case 'logout': case 'logout':
@ -47,6 +55,7 @@ module.exports = React.createClass({
this.setState({ this.setState({
currentRoom: payload.room_id currentRoom: payload.room_id
}); });
this.focusComposer = true;
break; break;
} }
}, },
@ -65,6 +74,7 @@ module.exports = React.createClass({
firstRoom = cli.getRooms()[0].roomId; firstRoom = cli.getRooms()[0].roomId;
} }
that.setState({ready: true, currentRoom: firstRoom}); that.setState({ready: true, currentRoom: firstRoom});
dis.dispatch({action: 'focus_composer'});
}); });
cli.startClient(); cli.startClient();
}, },