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 db416b8a06..0f750c10a5 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 = (
                 <div className="mx_MessageContextMenu_field" onClick={this.onRedactClick}>
                     Redact