Make the settings page load for guests. Add checkboxes for guest r/w
parent
8bd4fdbd5a
commit
d729dee31d
|
@ -15,7 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
var q = require("q");
|
||||||
var MatrixClientPeg = require("./MatrixClientPeg");
|
var MatrixClientPeg = require("./MatrixClientPeg");
|
||||||
var Notifier = require("./Notifier");
|
var Notifier = require("./Notifier");
|
||||||
|
|
||||||
|
@ -35,6 +35,11 @@ module.exports = {
|
||||||
},
|
},
|
||||||
|
|
||||||
loadThreePids: function() {
|
loadThreePids: function() {
|
||||||
|
if (MatrixClientPeg.get().isGuest()) {
|
||||||
|
return q({
|
||||||
|
threepids: []
|
||||||
|
}); // guests can't poke 3pid endpoint
|
||||||
|
}
|
||||||
return MatrixClientPeg.get().getThreePids();
|
return MatrixClientPeg.get().getThreePids();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -733,7 +733,7 @@ module.exports = React.createClass({
|
||||||
return ret;
|
return ret;
|
||||||
},
|
},
|
||||||
|
|
||||||
uploadNewState: function(new_name, new_topic, new_join_rule, new_history_visibility, new_power_levels) {
|
uploadNewState: function(newVals) {
|
||||||
var old_name = this.state.room.name;
|
var old_name = this.state.room.name;
|
||||||
|
|
||||||
var old_topic = this.state.room.currentState.getStateEvents('m.room.topic', '');
|
var old_topic = this.state.room.currentState.getStateEvents('m.room.topic', '');
|
||||||
|
@ -759,46 +759,54 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
var deferreds = [];
|
var deferreds = [];
|
||||||
|
|
||||||
if (old_name != new_name && new_name != undefined && new_name) {
|
if (old_name != newVals.name && newVals.name != undefined && newVals.name) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().setRoomName(this.state.room.roomId, new_name)
|
MatrixClientPeg.get().setRoomName(this.state.room.roomId, newVals.name)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_topic != new_topic && new_topic != undefined) {
|
if (old_topic != newVals.topic && newVals.topic != undefined) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().setRoomTopic(this.state.room.roomId, new_topic)
|
MatrixClientPeg.get().setRoomTopic(this.state.room.roomId, newVals.topic)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_join_rule != new_join_rule && new_join_rule != undefined) {
|
if (old_join_rule != newVals.join_rule && newVals.join_rule != undefined) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().sendStateEvent(
|
MatrixClientPeg.get().sendStateEvent(
|
||||||
this.state.room.roomId, "m.room.join_rules", {
|
this.state.room.roomId, "m.room.join_rules", {
|
||||||
join_rule: new_join_rule,
|
join_rule: newVals.join_rule,
|
||||||
}, ""
|
}, ""
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_history_visibility != new_history_visibility && new_history_visibility != undefined) {
|
if (old_history_visibility != newVals.history_visibility &&
|
||||||
|
newVals.history_visibility != undefined) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().sendStateEvent(
|
MatrixClientPeg.get().sendStateEvent(
|
||||||
this.state.room.roomId, "m.room.history_visibility", {
|
this.state.room.roomId, "m.room.history_visibility", {
|
||||||
history_visibility: new_history_visibility,
|
history_visibility: newVals.history_visibility,
|
||||||
}, ""
|
}, ""
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_power_levels) {
|
if (newVals.power_levels) {
|
||||||
deferreds.push(
|
deferreds.push(
|
||||||
MatrixClientPeg.get().sendStateEvent(
|
MatrixClientPeg.get().sendStateEvent(
|
||||||
this.state.room.roomId, "m.room.power_levels", new_power_levels, ""
|
this.state.room.roomId, "m.room.power_levels", newVals.power_levels, ""
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deferreds.push(
|
||||||
|
MatrixClientPeg.get().setGuestAccess(this.state.room.roomId, {
|
||||||
|
allowRead: newVals.guest_read,
|
||||||
|
allowJoin: newVals.guest_join
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
if (deferreds.length) {
|
if (deferreds.length) {
|
||||||
var self = this;
|
var self = this;
|
||||||
q.all(deferreds).fail(function(err) {
|
q.all(deferreds).fail(function(err) {
|
||||||
|
@ -883,19 +891,15 @@ module.exports = React.createClass({
|
||||||
uploadingRoomSettings: true,
|
uploadingRoomSettings: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
var new_name = this.refs.header.getRoomName();
|
this.uploadNewState({
|
||||||
var new_topic = this.refs.room_settings.getTopic();
|
name: this.refs.header.getRoomName(),
|
||||||
var new_join_rule = this.refs.room_settings.getJoinRules();
|
topic: this.refs.room_settings.getTopic(),
|
||||||
var new_history_visibility = this.refs.room_settings.getHistoryVisibility();
|
join_rule: this.refs.room_settings.getJoinRules(),
|
||||||
var new_power_levels = this.refs.room_settings.getPowerLevels();
|
history_visibility: this.refs.room_settings.getHistoryVisibility(),
|
||||||
|
power_levels: this.refs.room_settings.getPowerLevels(),
|
||||||
this.uploadNewState(
|
guest_join: this.refs.room_settings.canGuestsJoin(),
|
||||||
new_name,
|
guest_read: this.refs.room_settings.canGuestsRead()
|
||||||
new_topic,
|
});
|
||||||
new_join_rule,
|
|
||||||
new_history_visibility,
|
|
||||||
new_power_levels
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onCancelClick: function() {
|
onCancelClick: function() {
|
||||||
|
|
|
@ -31,6 +31,14 @@ module.exports = React.createClass({
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
canGuestsJoin: function() {
|
||||||
|
return this.refs.guests_join.checked;
|
||||||
|
},
|
||||||
|
|
||||||
|
canGuestsRead: function() {
|
||||||
|
return this.refs.guests_read.checked;
|
||||||
|
},
|
||||||
|
|
||||||
getTopic: function() {
|
getTopic: function() {
|
||||||
return this.refs.topic.value;
|
return this.refs.topic.value;
|
||||||
},
|
},
|
||||||
|
@ -83,6 +91,10 @@ module.exports = React.createClass({
|
||||||
if (history_visibility) history_visibility = history_visibility.getContent().history_visibility;
|
if (history_visibility) history_visibility = history_visibility.getContent().history_visibility;
|
||||||
|
|
||||||
var power_levels = this.props.room.currentState.getStateEvents('m.room.power_levels', '');
|
var power_levels = this.props.room.currentState.getStateEvents('m.room.power_levels', '');
|
||||||
|
var guest_access = this.props.room.currentState.getStateEvents('m.room.guest_access', '');
|
||||||
|
if (guest_access) {
|
||||||
|
guest_access = guest_access.getContent().guest_access;
|
||||||
|
}
|
||||||
|
|
||||||
var events_levels = power_levels.events || {};
|
var events_levels = power_levels.events || {};
|
||||||
|
|
||||||
|
@ -154,6 +166,14 @@ module.exports = React.createClass({
|
||||||
<textarea className="mx_RoomSettings_description" placeholder="Topic" defaultValue={topic} ref="topic"/> <br/>
|
<textarea className="mx_RoomSettings_description" placeholder="Topic" defaultValue={topic} ref="topic"/> <br/>
|
||||||
<label><input type="checkbox" ref="is_private" defaultChecked={join_rule != "public"}/> Make this room private</label> <br/>
|
<label><input type="checkbox" ref="is_private" defaultChecked={join_rule != "public"}/> Make this room private</label> <br/>
|
||||||
<label><input type="checkbox" ref="share_history" defaultChecked={history_visibility == "shared"}/> Share message history with new users</label> <br/>
|
<label><input type="checkbox" ref="share_history" defaultChecked={history_visibility == "shared"}/> Share message history with new users</label> <br/>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" ref="guests_read" defaultChecked={history_visibility === "world_readable"}/>
|
||||||
|
Allow guests to read messages in this room
|
||||||
|
</label> <br/>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" ref="guests_join" defaultChecked={guest_access === "can_join"}/>
|
||||||
|
Allow guests to join this room
|
||||||
|
</label> <br/>
|
||||||
<label className="mx_RoomSettings_encrypt"><input type="checkbox" /> Encrypt room</label> <br/>
|
<label className="mx_RoomSettings_encrypt"><input type="checkbox" /> Encrypt room</label> <br/>
|
||||||
|
|
||||||
<h3>Power levels</h3>
|
<h3>Power levels</h3>
|
||||||
|
|
Loading…
Reference in New Issue