mirror of https://github.com/vector-im/riot-web
Merge pull request #696 from matrix-org/dbkr/ban_becomes_unban
Make ban either ban or unbanpull/21833/head
commit
1e1ae5c950
|
@ -247,19 +247,27 @@ module.exports = WithMatrixClient(React.createClass({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onBan: function() {
|
onBanOrUnban: function() {
|
||||||
const ConfirmUserActionDialog = sdk.getComponent("dialogs.ConfirmUserActionDialog");
|
const ConfirmUserActionDialog = sdk.getComponent("dialogs.ConfirmUserActionDialog");
|
||||||
Modal.createDialog(ConfirmUserActionDialog, {
|
Modal.createDialog(ConfirmUserActionDialog, {
|
||||||
member: this.props.member,
|
member: this.props.member,
|
||||||
action: 'Ban',
|
action: this.props.member.membership == 'ban' ? 'Unban' : 'Ban',
|
||||||
danger: true,
|
danger: this.props.member.membership != 'ban',
|
||||||
onFinished: (proceed) => {
|
onFinished: (proceed) => {
|
||||||
if (!proceed) return;
|
if (!proceed) return;
|
||||||
|
|
||||||
this.setState({ updating: this.state.updating + 1 });
|
this.setState({ updating: this.state.updating + 1 });
|
||||||
this.props.matrixClient.ban(
|
let promise;
|
||||||
this.props.member.roomId, this.props.member.userId,
|
if (this.props.member.membership == 'ban') {
|
||||||
).then(
|
promise = this.props.matrixClient.unban(
|
||||||
|
this.props.member.roomId, this.props.member.userId,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
promise = this.props.matrixClient.ban(
|
||||||
|
this.props.member.roomId, this.props.member.userId,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
promise.then(
|
||||||
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
|
||||||
// get out of sync if we force setState here!
|
// get out of sync if we force setState here!
|
||||||
|
@ -451,26 +459,26 @@ module.exports = WithMatrixClient(React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_calculateOpsPermissions: function(member) {
|
_calculateOpsPermissions: function(member) {
|
||||||
var defaultPerms = {
|
const defaultPerms = {
|
||||||
can: {},
|
can: {},
|
||||||
muted: false,
|
muted: false,
|
||||||
modifyLevel: false
|
modifyLevel: false
|
||||||
};
|
};
|
||||||
var room = this.props.matrixClient.getRoom(member.roomId);
|
const room = this.props.matrixClient.getRoom(member.roomId);
|
||||||
if (!room) {
|
if (!room) {
|
||||||
return defaultPerms;
|
return defaultPerms;
|
||||||
}
|
}
|
||||||
var powerLevels = room.currentState.getStateEvents(
|
const powerLevels = room.currentState.getStateEvents(
|
||||||
"m.room.power_levels", ""
|
"m.room.power_levels", ""
|
||||||
);
|
);
|
||||||
if (!powerLevels) {
|
if (!powerLevels) {
|
||||||
return defaultPerms;
|
return defaultPerms;
|
||||||
}
|
}
|
||||||
var me = room.getMember(this.props.matrixClient.credentials.userId);
|
const me = room.getMember(this.props.matrixClient.credentials.userId);
|
||||||
if (!me) {
|
if (!me) {
|
||||||
return defaultPerms;
|
return defaultPerms;
|
||||||
}
|
}
|
||||||
var them = member;
|
const them = member;
|
||||||
return {
|
return {
|
||||||
can: this._calculateCanPermissions(
|
can: this._calculateCanPermissions(
|
||||||
me, them, powerLevels.getContent()
|
me, them, powerLevels.getContent()
|
||||||
|
@ -481,22 +489,22 @@ module.exports = WithMatrixClient(React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
_calculateCanPermissions: function(me, them, powerLevels) {
|
_calculateCanPermissions: function(me, them, powerLevels) {
|
||||||
var can = {
|
const can = {
|
||||||
kick: false,
|
kick: false,
|
||||||
ban: false,
|
ban: false,
|
||||||
mute: false,
|
mute: false,
|
||||||
modifyLevel: false
|
modifyLevel: false
|
||||||
};
|
};
|
||||||
var canAffectUser = them.powerLevel < me.powerLevel;
|
const canAffectUser = them.powerLevel < me.powerLevel;
|
||||||
if (!canAffectUser) {
|
if (!canAffectUser) {
|
||||||
//console.log("Cannot affect user: %s >= %s", them.powerLevel, me.powerLevel);
|
//console.log("Cannot affect user: %s >= %s", them.powerLevel, me.powerLevel);
|
||||||
return can;
|
return can;
|
||||||
}
|
}
|
||||||
var editPowerLevel = (
|
const editPowerLevel = (
|
||||||
(powerLevels.events ? powerLevels.events["m.room.power_levels"] : null) ||
|
(powerLevels.events ? powerLevels.events["m.room.power_levels"] : null) ||
|
||||||
powerLevels.state_default
|
powerLevels.state_default
|
||||||
);
|
);
|
||||||
var levelToSend = (
|
const levelToSend = (
|
||||||
(powerLevels.events ? powerLevels.events["m.room.message"] : null) ||
|
(powerLevels.events ? powerLevels.events["m.room.message"] : null) ||
|
||||||
powerLevels.events_default
|
powerLevels.events_default
|
||||||
);
|
);
|
||||||
|
@ -643,10 +651,14 @@ module.exports = WithMatrixClient(React.createClass({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (this.state.can.ban) {
|
if (this.state.can.ban) {
|
||||||
|
let label = 'Ban';
|
||||||
|
if (this.props.member.membership == 'ban') {
|
||||||
|
label = 'Unban';
|
||||||
|
}
|
||||||
banButton = (
|
banButton = (
|
||||||
<AccessibleButton className="mx_MemberInfo_field"
|
<AccessibleButton className="mx_MemberInfo_field"
|
||||||
onClick={this.onBan}>
|
onClick={this.onBanOrUnban}>
|
||||||
Ban
|
{label}
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue