diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index 4d1285678b..8b156f2ccc 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -35,6 +35,47 @@ function parseIntWithDefault(val, def) { return isNaN(res) ? def : res; } +const BannedUser = React.createClass({ + propTypes: { + member: React.PropTypes.string.isRequired, + }, + + _onUnbanClick: function() { + const ConfirmUserActionDialog = sdk.getComponent("dialogs.ConfirmUserActionDialog"); + Modal.createDialog(ConfirmUserActionDialog, { + member: this.props.member, + action: 'Unban', + danger: false, + onFinished: (proceed) => { + if (!proceed) return; + + MatrixClientPeg.get().unban( + this.props.member.roomId, this.props.member.userId, + ).catch((err) => { + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + Modal.createDialog(ErrorDialog, { + title: "Failed to unban", + description: err.message, + }); + }).done(); + }, + }); + }, + + render: function() { + return ( +
  • + + Unban + + {this.props.member.userId} +
  • + ); + } +}); + module.exports = React.createClass({ displayName: 'RoomSettings', @@ -74,6 +115,9 @@ module.exports = React.createClass({ componentWillMount: function() { ScalarMessaging.startListening(); + + MatrixClientPeg.get().on("RoomMember.membership", this._onRoomMemberMembership); + MatrixClientPeg.get().getRoomDirectoryVisibility( this.props.room.roomId ).done((result) => { @@ -102,6 +146,8 @@ module.exports = React.createClass({ componentWillUnmount: function() { ScalarMessaging.stopListening(); + MatrixClientPeg.get().removeListener("RoomMember.membership", this._onRoomMemberMembership); + dis.dispatch({ action: 'ui_opacity', sideOpacity: 1.0, @@ -501,6 +547,11 @@ module.exports = React.createClass({ }); }, + _onRoomMemberMembership: function() { + // Update, since our banned user list may have changed + this.forceUpdate(); + }, + _renderEncryptionSection: function() { var cli = MatrixClientPeg.get(); var roomState = this.props.room.currentState; @@ -611,11 +662,9 @@ module.exports = React.createClass({

    Banned users