diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 2d1581da6b..8f2087cadf 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -1,6 +1,6 @@ /* Copyright 2017 Vector Creations Ltd. -Copyright 2017 New Vector Ltd. +Copyright 2017, 2018 New Vector Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -399,6 +399,9 @@ FeaturedRoom.contextTypes = GroupContext; RoleUserList.contextTypes = GroupContext; FeaturedUser.contextTypes = GroupContext; +const GROUP_JOINPOLICY_OPEN = "open"; +const GROUP_JOINPOLICY_INVITE = "invite"; + export default React.createClass({ displayName: 'GroupView', @@ -545,6 +548,9 @@ export default React.createClass({ this.setState({ editing: true, profileForm: Object.assign({}, this.state.summary.profile), + joinableForm: { + policyType: this.state.summary.profile.join_policy, + }, }); dis.dispatch({ action: 'panel_disable', @@ -607,11 +613,15 @@ export default React.createClass({ }).done(); }, + _onJoinableChange: function(ev) { + this.setState({ + joinableForm: { policyType: ev.target.value }, + }); + }, + _onSaveClick: function() { this.setState({saving: true}); - const savePromise = this.state.isUserPrivileged ? - this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm) : - Promise.resolve(); + const savePromise = this.state.isUserPrivileged ? this._saveGroup() : Promise.resolve(); savePromise.then((result) => { this.setState({ saving: false, @@ -642,6 +652,13 @@ export default React.createClass({ }).done(); }, + _saveGroup: async function() { + await this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm); + await this._matrixClient.setGroupJoinPolicy(this.props.groupId, { + type: this.state.joinableForm.policyType, + }); + }, + _onAcceptInviteClick: function() { this.setState({membershipBusy: true}); this._groupStore.acceptGroupInvite().then(() => { @@ -735,6 +752,7 @@ export default React.createClass({ return