first go at show redact only if we can redact

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
pull/3925/head
Michael Telatynski 2017-05-16 13:15:14 +01:00
parent fe61a7eefd
commit aff1e14efc
1 changed files with 18 additions and 1 deletions

View File

@ -25,6 +25,11 @@ var Modal = require('matrix-react-sdk/lib/Modal');
var Resend = require("matrix-react-sdk/lib/Resend");
import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
function parseIntWithDefault(val, def) {
var res = parseInt(val);
return isNaN(res) ? def : res;
}
module.exports = React.createClass({
displayName: 'MessageContextMenu',
@ -126,7 +131,19 @@ module.exports = React.createClass({
);
}
if (!eventStatus && !this.props.mxEvent.isRedacted()) { // sent and not redacted
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.mxEvent.getRoomId());
const powerLevelEvents = room.currentState.getStateEvents('m.room.power_levels', '');
const powerLevels = powerLevelEvents ? powerLevelEvents.getContent() : {};
const userLevels = powerLevels.users || {};
const userLevel = userLevels[cli.credentials.userId] || parseIntWithDefault(powerLevels.users_default, 0);
if (!eventStatus && !this.props.mxEvent.isRedacted() && (// sent and not redacted
this.props.mxEvent.getSender() === cli.credentials.userId // own event
|| userLevel >= parseIntWithDefault(powerLevels.redact, 50) // has PL to redact
)) {
redactButton = (
<div className="mx_MessageContextMenu_field" onClick={this.onRedactClick}>
Redact