diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 89303a2e41..3fa628b8a3 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -773,15 +773,13 @@ module.exports = React.createClass({ dis.dispatch({action: 'view_set_mxid'}); return; } - const TextInputDialog = sdk.getComponent("dialogs.TextInputDialog"); - Modal.createTrackedDialog('Create Room', '', TextInputDialog, { - title: _t('Create Room'), - description: _t('Room name (optional)'), - button: _t('Create Room'), - onFinished: (shouldCreate, name) => { + const CreateRoomDialog = sdk.getComponent('dialogs.CreateRoomDialog'); + Modal.createTrackedDialog('Create Room', '', CreateRoomDialog, { + onFinished: (shouldCreate, name, noFederate) => { if (shouldCreate) { const createOpts = {}; if (name) createOpts.name = name; + if (noFederate) createOpts.creation_content = {'m.federate': false}; createRoom({createOpts}).done(); } }, diff --git a/src/components/views/dialogs/CreateRoomDialog.js b/src/components/views/dialogs/CreateRoomDialog.js new file mode 100644 index 0000000000..f7be47b3eb --- /dev/null +++ b/src/components/views/dialogs/CreateRoomDialog.js @@ -0,0 +1,81 @@ +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from 'react'; +import sdk from '../../../index'; +import SdkConfig from '../../../SdkConfig'; +import { _t } from '../../../languageHandler'; + +export default React.createClass({ + displayName: 'CreateRoomDialog', + propTypes: { + onFinished: React.PropTypes.func.isRequired, + }, + + componentDidMount: function() { + const config = SdkConfig.get(); + // Dialog shows inverse of m.federate (noFederate) strict false check to skip undefined check (default = true) + this.defaultNoFederate = config.default_federate === false; + }, + + onOk: function() { + this.props.onFinished(true, this.refs.textinput.value, this.refs.checkbox.checked); + }, + + onCancel: function() { + this.props.onFinished(false); + }, + + render: function() { + const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + return ( + +
+
+ +
+
+ +
+
+ +
+ { _t('Advanced options') } +
+ + +
+
+
+
+ + +
+
+ ); + }, +}); diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index b542dbaf55..031e089c4e 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -395,11 +395,12 @@ module.exports = React.createClass({ _yankValueFromEvent: function(stateEventType, keyName, defaultValue) { // E.g.("m.room.name","name") would yank the "name" content key from "m.room.name" - var event = this.props.room.currentState.getStateEvents(stateEventType, ''); + const event = this.props.room.currentState.getStateEvents(stateEventType, ''); if (!event) { return defaultValue; } - return event.getContent()[keyName] || defaultValue; + const content = event.getContent(); + return keyName in content ? content[keyName] : defaultValue; }, _onHistoryRadioToggle: function(ev) { @@ -678,7 +679,7 @@ module.exports = React.createClass({ } var unfederatableSection; - if (this._yankValueFromEvent("m.room.create", "m.federate") === false) { + if (this._yankValueFromEvent("m.room.create", "m.federate", true) === false) { unfederatableSection = (
{ _t('This room is not accessible by remote Matrix servers') }. diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 37c7655ed6..cf2be3c2f8 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -26,6 +26,7 @@ "Microphone": "Microphone", "Camera": "Camera", "Advanced": "Advanced", + "Advanced options": "Advanced options", "Algorithm": "Algorithm", "Hide removed messages": "Hide removed messages", "Always show message timestamps": "Always show message timestamps", @@ -58,6 +59,8 @@ "Banned users": "Banned users", "Bans user with given id": "Bans user with given id", "Blacklisted": "Blacklisted", + "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", + "This setting cannot be changed later!": "This setting cannot be changed later!", "Bug Report": "Bug Report", "Bulk Options": "Bulk Options", "Call Timeout": "Call Timeout",