From a90bd6cd4f077b78912d180936bc5871464130b1 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Fri, 13 Apr 2018 12:28:58 +0100
Subject: [PATCH] Allow collapsing ReplyThread from MessageContextMenu
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/views/elements/ReplyThread.js | 14 ++++++++++++--
src/components/views/rooms/EventTile.js | 12 ++++++++----
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js
index de6ff46610..6796e2bcc7 100644
--- a/src/components/views/elements/ReplyThread.js
+++ b/src/components/views/elements/ReplyThread.js
@@ -52,6 +52,8 @@ export default class ReplyThread extends React.Component {
};
this.onQuoteClick = this.onQuoteClick.bind(this);
+ this.canCollapse = this.canCollapse.bind(this);
+ this.collapse = this.collapse.bind(this);
}
componentWillMount() {
@@ -64,6 +66,14 @@ export default class ReplyThread extends React.Component {
this.unmounted = true;
}
+ canCollapse() {
+ return this.state.events.length > 1;
+ }
+
+ collapse() {
+ this.initialize();
+ }
+
async initialize() {
const {parentEv} = this.props;
const inReplyTo = ReplyThread.getInReplyTo(parentEv);
@@ -227,11 +237,11 @@ export default class ReplyThread extends React.Component {
};
}
- static getQuote(parentEv, onWidgetLoad) {
+ static getThread(parentEv, onWidgetLoad, ref) {
if (!SettingsStore.isFeatureEnabled("feature_rich_quoting") || !ReplyThread.getInReplyTo(parentEv)) {
return
;
}
- return ;
+ return ;
}
render() {
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index c754f7ceeb..50c0e29ed4 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -18,7 +18,7 @@ limitations under the License.
'use strict';
-import Reply from "../elements/ReplyThread";
+import ReplyThread from "../elements/ReplyThread";
const React = require('react');
import PropTypes from 'prop-types';
@@ -302,12 +302,16 @@ module.exports = withMatrixClient(React.createClass({
const x = buttonRect.right + window.pageXOffset;
const y = (buttonRect.top + (buttonRect.height / 2) + window.pageYOffset) - 19;
const self = this;
+
+ const {tile, replyThread} = this.refs;
+
ContextualMenu.createMenu(MessageContextMenu, {
chevronOffset: 10,
mxEvent: this.props.mxEvent,
left: x,
top: y,
- eventTileOps: this.refs.tile && this.refs.tile.getEventTileOps ? this.refs.tile.getEventTileOps() : undefined,
+ eventTileOps: tile && tile.getEventTileOps ? tile.getEventTileOps() : undefined,
+ collapseReplyThread: replyThread && replyThread.canCollapse() ? replyThread.collapse : undefined,
onFinished: function() {
self.setState({menu: false});
},
@@ -662,7 +666,7 @@ module.exports = withMatrixClient(React.createClass({
{ this._renderE2EPadlock() }
{
this.props.tileShape === 'reply_preview'
- && Reply.getQuote(this.props.mxEvent, this.props.onWidgetLoad)
+ && ReplyThread.getThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread')
}
{ this._renderE2EPadlock() }
- { Reply.getQuote(this.props.mxEvent, this.props.onWidgetLoad) }
+ { ReplyThread.getThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread') }