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

click on nicks to insert them into the MessageComposer
pull/21833/head
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);
},
onMemberAvatarClicked: function(sender) {
onMemberAvatarClick: function(event) {
dispatcher.dispatch({
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 = (
<div className="mx_EventTile_avatar">
<MemberAvatar member={this.props.mxEvent.sender} width={24} height={24}
onClick={ this.onMemberAvatarClicked.bind(this, this.props.mxEvent.sender) } />
onClick={ this.onMemberAvatarClick } />
</div>
);
}
if (EventTileType.needsSenderProfile()) {
sender = <SenderProfile mxEvent={this.props.mxEvent} aux={aux} />;
sender = <SenderProfile onClick={ this.onSenderProfileClick } mxEvent={this.props.mxEvent} aux={aux} />;
}
}
return (

View File

@ -192,9 +192,29 @@ module.exports = React.createClass({
},
onAction: function(payload) {
var textarea = this.refs.textarea;
switch (payload.action) {
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;
}
},