diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js
index 42cbb90cd9..3d2dee9e64 100644
--- a/src/components/views/rooms/RoomHeader.js
+++ b/src/components/views/rooms/RoomHeader.js
@@ -129,6 +129,10 @@ module.exports = React.createClass({
}).done();
},
+ onAvatarRemoveClick: function() {
+ MatrixClientPeg.get().sendStateEvent(this.props.room.roomId, 'm.room.avatar', {url: null}, '');
+ },
+
onShowRhsClick: function(ev) {
dis.dispatch({ action: 'show_right_panel' });
},
@@ -268,11 +272,15 @@ module.exports = React.createClass({
+
+
+
);
} else if (this.props.room || (this.props.oobData && this.props.oobData.name)) {
diff --git a/src/components/views/settings/ChangeAvatar.js b/src/components/views/settings/ChangeAvatar.js
index b3204ab86e..7d8b1d9534 100644
--- a/src/components/views/settings/ChangeAvatar.js
+++ b/src/components/views/settings/ChangeAvatar.js
@@ -53,6 +53,10 @@ module.exports = React.createClass({
};
},
+ componentWillMount: function() {
+ MatrixClientPeg.get().on("RoomState.events", this.onRoomStateEvents);
+ },
+
componentWillReceiveProps: function(newProps) {
if (this.avatarSet) {
// don't clobber what the user has just set
@@ -63,6 +67,24 @@ module.exports = React.createClass({
});
},
+ componentWillUnmount: function() {
+ if (MatrixClientPeg.get()) {
+ MatrixClientPeg.get().removeListener("RoomState.events", this.onRoomStateEvents);
+ }
+ },
+
+ onRoomStateEvents: function(ev) {
+ if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar'
+ || ev.getSender() !== MatrixClientPeg.get().getUserId()) {
+ return;
+ }
+
+ if (!ev.getContent().url) {
+ this.avatarSet = false;
+ this.setState({}); // force update
+ }
+ },
+
setAvatarFromFile: function(file) {
let newUrl = null;