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') }
+