prompt before giving equal ops

pull/21833/head
Matthew Hodgson 2016-03-21 00:49:18 +00:00
parent 31ed7b9dd7
commit 59f599af5c
2 changed files with 58 additions and 19 deletions

View File

@ -85,14 +85,20 @@ module.exports = React.createClass({
customPicker = <span> of { input }</span>; customPicker = <span> of { input }</span>;
} }
var selectValue = roles[this.props.value] || "Custom"; var selectValue;
if (this.state.custom) {
selectValue = "Custom";
}
else {
selectValue = roles[this.props.value] || "Custom";
}
var select; var select;
if (this.props.disabled) { if (this.props.disabled) {
select = <span>{ selectValue }</span>; select = <span>{ selectValue }</span>;
} }
else { else {
select = select =
<select ref="select" defaultValue={ selectValue } onChange={ this.onSelectChange }> <select ref="select" value={ selectValue } onChange={ this.onSelectChange }>
<option value="User">User (0)</option> <option value="User">User (0)</option>
<option value="Moderator">Moderator (50)</option> <option value="Moderator">Moderator (50)</option>
<option value="Admin">Admin (100)</option> <option value="Admin">Admin (100)</option>

View File

@ -179,22 +179,7 @@ module.exports = React.createClass({
this.props.onFinished(); this.props.onFinished();
}, },
onPowerChange: function(powerLevel) { _applyPowerChange: function(roomId, target, powerLevel, powerLevelEvent) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
var roomId = this.props.member.roomId;
var target = this.props.member.userId;
var room = MatrixClientPeg.get().getRoom(roomId);
if (!room) {
this.props.onFinished();
return;
}
var powerLevelEvent = room.currentState.getStateEvents(
"m.room.power_levels", ""
);
if (!powerLevelEvent) {
this.props.onFinished();
return;
}
MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).done( MatrixClientPeg.get().setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).done(
function() { function() {
// NO-OP; rely on the m.room.member event coming down else we could // NO-OP; rely on the m.room.member event coming down else we could
@ -207,7 +192,55 @@ module.exports = React.createClass({
}); });
} }
); );
this.props.onFinished(); this.props.onFinished();
},
onPowerChange: function(powerLevel) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
var roomId = this.props.member.roomId;
var target = this.props.member.userId;
var room = MatrixClientPeg.get().getRoom(roomId);
var self = this;
if (!room) {
this.props.onFinished();
return;
}
var powerLevelEvent = room.currentState.getStateEvents(
"m.room.power_levels", ""
);
if (!powerLevelEvent) {
this.props.onFinished();
return;
}
if (powerLevelEvent.getContent().users) {
var myPower = powerLevelEvent.getContent().users[MatrixClientPeg.get().credentials.userId];
if (parseInt(myPower) === parseInt(powerLevel)) {
var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
Modal.createDialog(QuestionDialog, {
title: "Warning",
description:
<div>
You will not be able to undo this change as you are promoting the user to have the same power level as yourself.<br/>
Are you sure?
</div>,
button: "Continue",
onFinished: function(confirmed) {
if (confirmed) {
self._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
}
else {
self.props.onFinished();
}
},
});
}
else {
this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
}
}
else {
this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);
}
}, },
onChatClick: function() { onChatClick: function() {