From aff1e14efc70ab5c2bc86d4d724c604d63806d6b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 16 May 2017 13:15:14 +0100 Subject: [PATCH] first go at show redact only if we can redact Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/context_menus/MessageContextMenu.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index db416b8a0..0f750c10a 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -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 = (