From df905cfcb7997722e15c03f38b6ea493f6455a24 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 22 Mar 2016 12:10:58 +0000 Subject: [PATCH] incorporate PR review, and explicitly spell out if the room has ended up with guest_access=forbidden but join_rules=invite --- src/components/views/rooms/RoomSettings.js | 42 ++++++++++++++++------ 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index 2b933cd57a..bbe90ee059 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -56,15 +56,15 @@ module.exports = React.createClass({ tags_changed: false, tags: tags, areNotifsMuted: areNotifsMuted, + isRoomPublished: false, // updated in componentWillMount }; }, componentWillMount: function() { - var self = this; - MatrixClientPeg.get().getRoomVisibility( + MatrixClientPeg.get().getRoomDirectoryVisibility( this.props.room.roomId ).done((result) => { - self.setState({ isRoomPublished: result.visibility === "public" }); + this.setState({ isRoomPublished: result.visibility === "public" }); }, (err) => { console.error("Failed to get room visibility: " + err); }); @@ -124,7 +124,7 @@ module.exports = React.createClass({ } if (this.state.isRoomPublished !== originalState.isRoomPublished) { - promises.push(MatrixClientPeg.get().setRoomVisibility( + promises.push(MatrixClientPeg.get().setRoomDirectoryVisibility( roomId, this.state.isRoomPublished ? "public" : "private" )); @@ -271,22 +271,30 @@ module.exports = React.createClass({ }, _onRoomAccessRadioToggle: function(ev) { - var self = this; + + // join_rule + // INVITE | PUBLIC + // ----------------------+---------------- + // guest CAN_JOIN | inv_only | pub_with_guest + // access ----------------------+---------------- + // FORBIDDEN | inv_only | pub_no_guest + // ----------------------+---------------- + switch (ev.target.value) { case "invite_only": - self.setState({ + this.setState({ join_rule: "invite", guest_access: "can_join", }); break; case "public_no_guests": - self.setState({ + this.setState({ join_rule: "public", guest_access: "forbidden", }); break; case "public_with_guests": - self.setState({ + this.setState({ join_rule: "public", guest_access: "can_join", }); @@ -483,6 +491,17 @@ module.exports = React.createClass({ } + var inviteGuestWarning; + if (this.state.join_rule !== "public" && this.state.guest_access === "forbidden") { + inviteGuestWarning = +
+ Guests cannot join this room even if explicitly invited. { + this.setState({ join_rule: "invite", guest_access: "can_join" }); + e.preventDefault(); + }}>Click here to fix. +
+ } + return (
@@ -497,11 +516,12 @@ module.exports = React.createClass({

Who can access this room?

+ { inviteGuestWarning } { addressWarning }