fix ability to save room settings if you don't have ops

This commit is contained in:
Matthew Hodgson 2016-04-12 01:27:12 +01:00
parent f9c7ae1ab9
commit bf1e0da598

View file

@ -56,7 +56,7 @@ module.exports = React.createClass({
tags_changed: false, tags_changed: false,
tags: tags, tags: tags,
areNotifsMuted: areNotifsMuted, 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 this.props.room.roomId
).done((result) => { ).done((result) => {
this.setState({ isRoomPublished: result.visibility === "public" }); this.setState({ isRoomPublished: result.visibility === "public" });
this._originalIsRoomPublished = result.visibility === "public";
}, (err) => { }, (err) => {
console.error("Failed to get room visibility: " + err); console.error("Failed to get room visibility: " + err);
}); });
}, },
setName: function(name) { setName: function(name) {
this.setState({ this.setState({
name: name name: name
}); });
}, },
setTopic: function(topic) { setTopic: function(topic) {
this.setState({ this.setState({
topic: topic topic: topic
}); });
}, },
save: function() { save: function() {
var stateWasSetDefer = q.defer(); var stateWasSetDefer = q.defer();
// the caller may have JUST called setState on stuff, so we need to re-render before saving // 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(); stateWasSetDefer.resolve();
this.setState({ _loading: false}); this.setState({ _loading: false});
}); });
return stateWasSetDefer.promise.then(() => { return stateWasSetDefer.promise.then(() => {
return this._save(); return this._save();
}); });
}, },
_save: function() { _save: function() {
const roomId = this.props.room.roomId; const roomId = this.props.room.roomId;
var promises = this.saveAliases(); // returns Promise[] var promises = this.saveAliases(); // returns Promise[]
var originalState = this.getInitialState(); var originalState = this.getInitialState();
@ -125,7 +126,7 @@ module.exports = React.createClass({
if (this.state.isRoomPublished !== originalState.isRoomPublished) { if (this.state.isRoomPublished !== originalState.isRoomPublished) {
promises.push(MatrixClientPeg.get().setRoomDirectoryVisibility( promises.push(MatrixClientPeg.get().setRoomDirectoryVisibility(
roomId, roomId,
this.state.isRoomPublished ? "public" : "private" this.state.isRoomPublished ? "public" : "private"
)); ));
} }
@ -187,7 +188,7 @@ module.exports = React.createClass({
// color scheme // color scheme
promises.push(this.saveColor()); promises.push(this.saveColor());
return q.allSettled(promises); return q.allSettled(promises);
}, },