mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Renaming team.Name to team.DisplayName and team.Domain to team.Name. So: team.Name -> url safe name. team.DisplayName -> nice name for users
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
|
// See License.txt for license information.
|
|
|
|
|
|
var SocketStore = require('../stores/socket_store.jsx');
|
|
var UserStore = require('../stores/user_store.jsx');
|
|
|
|
module.exports = React.createClass({
|
|
timer: null,
|
|
lastTime: 0,
|
|
componentDidMount: function() {
|
|
SocketStore.addChangeListener(this._onChange);
|
|
},
|
|
componentWillReceiveProps: function(newProps) {
|
|
if(this.props.channelId !== newProps.channelId) {
|
|
this.setState({text:""});
|
|
}
|
|
},
|
|
componentWillUnmount: function() {
|
|
SocketStore.removeChangeListener(this._onChange);
|
|
},
|
|
_onChange: function(msg) {
|
|
if (msg.action == "typing" &&
|
|
this.props.channelId == msg.channel_id &&
|
|
this.props.parentId == msg.props.parent_id) {
|
|
|
|
this.lastTime = new Date().getTime();
|
|
|
|
var username = "Someone";
|
|
if (UserStore.hasProfile(msg.user_id)) {
|
|
username = UserStore.getProfile(msg.user_id).username;
|
|
}
|
|
|
|
this.setState({ text: username + " is typing..." });
|
|
|
|
if (!this.timer) {
|
|
var outer = this;
|
|
outer.timer = setInterval(function() {
|
|
if ((new Date().getTime() - outer.lastTime) > 8000) {
|
|
outer.setState({ text: "" });
|
|
}
|
|
}, 3000);
|
|
}
|
|
}
|
|
else if (msg.action == "posted" && msg.channel_id === this.props.channelId) {
|
|
this.setState({text:""})
|
|
}
|
|
},
|
|
getInitialState: function() {
|
|
return { text: "" };
|
|
},
|
|
render: function() {
|
|
return (
|
|
<span className="msg-typing">{ this.state.text }</span>
|
|
);
|
|
}
|
|
});
|