diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index cfff797e7d..9d5a17b3d2 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -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 = (
+ onClick={ this.onMemberAvatarClick } />
); } if (EventTileType.needsSenderProfile()) { - sender = ; + sender = ; } } return ( diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 6744de5d14..89633f18f8 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -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; } },