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;
}
},