Merge pull request #230 from matrix-org/matthew/insert-displayname

click on nicks to insert them into the MessageComposer
This commit is contained in:
Matthew Hodgson 2016-03-17 17:07:02 +00:00
commit cbf0349855
2 changed files with 32 additions and 5 deletions

View file

@ -268,10 +268,17 @@ module.exports = React.createClass({
this.readAvatarNode = ReactDom.findDOMNode(node); this.readAvatarNode = ReactDom.findDOMNode(node);
}, },
onMemberAvatarClicked: function(sender) { onMemberAvatarClick: function(event) {
dispatcher.dispatch({ dispatcher.dispatch({
action: 'view_user', action: 'view_user',
member: sender member: this.props.mxEvent.sender,
});
},
onSenderProfileClick: function(event) {
dispatcher.dispatch({
action: 'insert_displayname',
displayname: this.props.mxEvent.sender.name,
}); });
}, },
@ -318,12 +325,12 @@ module.exports = React.createClass({
avatar = ( avatar = (
<div className="mx_EventTile_avatar"> <div className="mx_EventTile_avatar">
<MemberAvatar member={this.props.mxEvent.sender} width={24} height={24} <MemberAvatar member={this.props.mxEvent.sender} width={24} height={24}
onClick={ this.onMemberAvatarClicked.bind(this, this.props.mxEvent.sender) } /> onClick={ this.onMemberAvatarClick } />
</div> </div>
); );
} }
if (EventTileType.needsSenderProfile()) { if (EventTileType.needsSenderProfile()) {
sender = <SenderProfile mxEvent={this.props.mxEvent} aux={aux} />; sender = <SenderProfile onClick={ this.onSenderProfileClick } mxEvent={this.props.mxEvent} aux={aux} />;
} }
} }
return ( return (

View file

@ -192,9 +192,29 @@ module.exports = React.createClass({
}, },
onAction: function(payload) { onAction: function(payload) {
var textarea = this.refs.textarea;
switch (payload.action) { switch (payload.action) {
case 'focus_composer': case 'focus_composer':
this.refs.textarea.focus(); textarea.focus();
break;
case 'insert_displayname':
if (textarea.value.length) {
var left = textarea.value.substring(0, textarea.selectionStart);
var right = textarea.value.substring(textarea.selectionEnd);
if (right.length) {
left += payload.displayname;
}
else {
left = left.replace(/( ?)$/, " " + payload.displayname);
}
textarea.value = left + right;
textarea.focus();
textarea.setSelectionRange(left.length, left.length);
}
else {
textarea.value = payload.displayname + ": ";
textarea.focus();
}
break; break;
} }
}, },