From bf1e0da598646ce38c58d54f4a4fb7c1509f277b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 12 Apr 2016 01:27:12 +0100 Subject: [PATCH] fix ability to save room settings if you don't have ops --- src/components/views/rooms/RoomSettings.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index 0fd45d77f5..2b5a6c7172 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -56,7 +56,7 @@ module.exports = React.createClass({ tags_changed: false, tags: tags, areNotifsMuted: areNotifsMuted, - // isRoomPublished: // set in componentWillMount + isRoomPublished: this._originalIsRoomPublished, // loaded async in componentWillMount }; }, @@ -65,23 +65,24 @@ module.exports = React.createClass({ this.props.room.roomId ).done((result) => { this.setState({ isRoomPublished: result.visibility === "public" }); + this._originalIsRoomPublished = result.visibility === "public"; }, (err) => { console.error("Failed to get room visibility: " + err); }); }, - + setName: function(name) { this.setState({ name: name }); }, - + setTopic: function(topic) { this.setState({ topic: topic }); }, - + save: function() { var stateWasSetDefer = q.defer(); // the caller may have JUST called setState on stuff, so we need to re-render before saving @@ -92,13 +93,13 @@ module.exports = React.createClass({ stateWasSetDefer.resolve(); this.setState({ _loading: false}); }); - + return stateWasSetDefer.promise.then(() => { return this._save(); }); }, - _save: function() { + _save: function() { const roomId = this.props.room.roomId; var promises = this.saveAliases(); // returns Promise[] var originalState = this.getInitialState(); @@ -125,7 +126,7 @@ module.exports = React.createClass({ if (this.state.isRoomPublished !== originalState.isRoomPublished) { promises.push(MatrixClientPeg.get().setRoomDirectoryVisibility( - roomId, + roomId, this.state.isRoomPublished ? "public" : "private" )); } @@ -187,7 +188,7 @@ module.exports = React.createClass({ // color scheme promises.push(this.saveColor()); - + return q.allSettled(promises); },