Merge pull request #4362 from matrix-org/t3chguy/private_room_e2ee

Add toggle for e2ee when creating private room
This commit is contained in:
Michael Telatynski 2020-04-09 17:22:58 +01:00 committed by GitHub
commit a9a253f27f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 8 deletions

View file

@ -15,6 +15,8 @@ limitations under the License.
*/ */
.mx_CreateRoomDialog_details { .mx_CreateRoomDialog_details {
margin-top: 15px;
.mx_CreateRoomDialog_details_summary { .mx_CreateRoomDialog_details_summary {
outline: none; outline: none;
list-style: none; list-style: none;
@ -71,11 +73,19 @@ limitations under the License.
} }
.mx_CreateRoomDialog { .mx_CreateRoomDialog {
&.mx_Dialog_fixedWidth { &.mx_Dialog_fixedWidth {
width: 450px; width: 450px;
} }
.mx_Dialog_content {
margin-bottom: 40px;
}
p,
.mx_Field_input label {
color: $muted-fg-color;
}
.mx_SettingsFlag { .mx_SettingsFlag {
display: flex; display: flex;
} }
@ -90,5 +100,18 @@ limitations under the License.
flex: 0 0 auto; flex: 0 0 auto;
margin-left: 30px; margin-left: 30px;
} }
.mx_CreateRoomDialog_topic {
margin-bottom: 36px;
}
.mx_Dialog_content > .mx_SettingsFlag {
margin-top: 24px;
}
p {
margin: 0 85px 0 0;
font-size: $font-12px;
}
} }

View file

@ -24,6 +24,7 @@ import withValidation from '../elements/Validation';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import {MatrixClientPeg} from '../../../MatrixClientPeg'; import {MatrixClientPeg} from '../../../MatrixClientPeg';
import {Key} from "../../../Keyboard"; import {Key} from "../../../Keyboard";
import SettingsStore from "../../../settings/SettingsStore";
export default createReactClass({ export default createReactClass({
displayName: 'CreateRoomDialog', displayName: 'CreateRoomDialog',
@ -35,6 +36,7 @@ export default createReactClass({
const config = SdkConfig.get(); const config = SdkConfig.get();
return { return {
isPublic: false, isPublic: false,
isEncrypted: true,
name: "", name: "",
topic: "", topic: "",
alias: "", alias: "",
@ -62,6 +64,11 @@ export default createReactClass({
if (this.state.noFederate) { if (this.state.noFederate) {
createOpts.creation_content = {'m.federate': false}; createOpts.creation_content = {'m.federate': false};
} }
if (!this.state.isPublic && SettingsStore.isFeatureEnabled("feature_cross_signing")) {
createOpts.encryption = this.state.isEncrypted;
}
return opts; return opts;
}, },
@ -127,6 +134,10 @@ export default createReactClass({
this.setState({isPublic}); this.setState({isPublic});
}, },
onEncryptedChange(isEncrypted) {
this.setState({isEncrypted});
},
onAliasChange(alias) { onAliasChange(alias) {
this.setState({alias}); this.setState({alias});
}, },
@ -166,11 +177,10 @@ export default createReactClass({
const LabelledToggleSwitch = sdk.getComponent('views.elements.LabelledToggleSwitch'); const LabelledToggleSwitch = sdk.getComponent('views.elements.LabelledToggleSwitch');
const RoomAliasField = sdk.getComponent('views.elements.RoomAliasField'); const RoomAliasField = sdk.getComponent('views.elements.RoomAliasField');
let privateLabel; let publicPrivateLabel;
let publicLabel;
let aliasField; let aliasField;
if (this.state.isPublic) { if (this.state.isPublic) {
publicLabel = (<p>{_t("Set a room alias to easily share your room with other people.")}</p>); publicPrivateLabel = (<p>{_t("Set a room alias to easily share your room with other people.")}</p>);
const domain = MatrixClientPeg.get().getDomain(); const domain = MatrixClientPeg.get().getDomain();
aliasField = ( aliasField = (
<div className="mx_CreateRoomDialog_aliasContainer"> <div className="mx_CreateRoomDialog_aliasContainer">
@ -178,7 +188,15 @@ export default createReactClass({
</div> </div>
); );
} else { } else {
privateLabel = (<p>{_t("This room is private, and can only be joined by invitation.")}</p>); publicPrivateLabel = (<p>{_t("This room is private, and can only be joined by invitation.")}</p>);
}
let e2eeSection;
if (!this.state.isPublic && SettingsStore.isFeatureEnabled("feature_cross_signing")) {
e2eeSection = <React.Fragment>
<LabelledToggleSwitch label={ _t("Enable end-to-end encryption")} onChange={this.onEncryptedChange} value={this.state.isEncrypted} />
<p>{ _t("You cant disable this later. Bridges & most bots wont work yet.") }</p>
</React.Fragment>;
} }
const title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room'); const title = this.state.isPublic ? _t('Create a public room') : _t('Create a private room');
@ -189,10 +207,10 @@ export default createReactClass({
<form onSubmit={this.onOk} onKeyDown={this._onKeyDown}> <form onSubmit={this.onOk} onKeyDown={this._onKeyDown}>
<div className="mx_Dialog_content"> <div className="mx_Dialog_content">
<Field ref={ref => this._nameFieldRef = ref} label={ _t('Name') } onChange={this.onNameChange} onValidate={this.onNameValidate} value={this.state.name} className="mx_CreateRoomDialog_name" /> <Field ref={ref => this._nameFieldRef = ref} label={ _t('Name') } onChange={this.onNameChange} onValidate={this.onNameValidate} value={this.state.name} className="mx_CreateRoomDialog_name" />
<Field label={ _t('Topic (optional)') } onChange={this.onTopicChange} value={this.state.topic} /> <Field label={ _t('Topic (optional)') } onChange={this.onTopicChange} value={this.state.topic} className="mx_CreateRoomDialog_topic" />
<LabelledToggleSwitch label={ _t("Make this room public")} onChange={this.onPublicChange} value={this.state.isPublic} /> <LabelledToggleSwitch label={ _t("Make this room public")} onChange={this.onPublicChange} value={this.state.isPublic} />
{ privateLabel } { publicPrivateLabel }
{ publicLabel } { e2eeSection }
{ aliasField } { aliasField }
<details ref={this.collectDetailsRef} className="mx_CreateRoomDialog_details"> <details ref={this.collectDetailsRef} className="mx_CreateRoomDialog_details">
<summary className="mx_CreateRoomDialog_details_summary">{ this.state.detailsOpen ? _t('Hide advanced') : _t('Show advanced') }</summary> <summary className="mx_CreateRoomDialog_details_summary">{ this.state.detailsOpen ? _t('Hide advanced') : _t('Show advanced') }</summary>

View file

@ -1557,6 +1557,8 @@
"Please enter a name for the room": "Please enter a name for the room", "Please enter a name for the room": "Please enter a name for the room",
"Set a room alias to easily share your room with other people.": "Set a room alias to easily share your room with other people.", "Set a room alias to easily share your room with other people.": "Set a room alias to easily share your room with other people.",
"This room is private, and can only be joined by invitation.": "This room is private, and can only be joined by invitation.", "This room is private, and can only be joined by invitation.": "This room is private, and can only be joined by invitation.",
"Enable end-to-end encryption": "Enable end-to-end encryption",
"You cant disable this later. Bridges & most bots wont work yet.": "You cant disable this later. Bridges & most bots wont work yet.",
"Create a public room": "Create a public room", "Create a public room": "Create a public room",
"Create a private room": "Create a private room", "Create a private room": "Create a private room",
"Name": "Name", "Name": "Name",