From ab77b0f9a5db62f77798c6189a4819e29cc14347 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Apr 2020 09:53:24 +1000 Subject: [PATCH] disable message contextmenu on group chats when kicked --- js/models/messages.js | 8 +++++++- ts/components/conversation/Message.tsx | 10 +++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/js/models/messages.js b/js/models/messages.js index e6dc4f074..ed0a66e15 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -113,6 +113,8 @@ this.propsForMessage = this.getPropsForMessage(); } }; + const triggerChange = () => this.trigger('change'); + this.on('change', generateProps); const applicableConversationChanges = @@ -120,8 +122,11 @@ const conversation = this.getConversation(); const fromContact = this.getIncomingContact(); - this.listenTo(conversation, applicableConversationChanges, generateProps); + + // trigger a change event on this component. + // this will call generateProps and refresh the Message.tsx component with new props + this.listenTo(conversation, 'disable:input', triggerChange ); if (fromContact) { this.listenTo( fromContact, @@ -703,6 +708,7 @@ multiSelectMode: conversation && conversation.selectedMessages.size > 0, isPublic: !!this.get('isPublic'), isRss: !!this.get('isRss'), + isKickedFromGroup: conversation.get('isKickedFromGroup'), senderIsModerator: !!this.get('isPublic') && conversation && diff --git a/ts/components/conversation/Message.tsx b/ts/components/conversation/Message.tsx index 16b7700c8..ad21af24f 100644 --- a/ts/components/conversation/Message.tsx +++ b/ts/components/conversation/Message.tsx @@ -100,6 +100,7 @@ export interface Props { isPublic?: boolean; isRss?: boolean; selected: boolean; + isKickedFromGroup: boolean; // whether or not to show check boxes multiSelectMode: boolean; @@ -782,11 +783,12 @@ export class Message extends React.PureComponent { attachments, direction, disableMenu, + isKickedFromGroup, onDownload, onReply, } = this.props; - if (!isCorrectSide || disableMenu) { + if (!isCorrectSide || disableMenu || isKickedFromGroup) { return null; } @@ -1051,12 +1053,14 @@ export class Message extends React.PureComponent { return false; } + // tslint:disable-next-line: cyclomatic-complexity public render() { const { authorPhoneNumber, authorColor, direction, id, + isKickedFromGroup, isRss, timestamp, selected, @@ -1106,7 +1110,7 @@ export class Message extends React.PureComponent { divClasses.push('public-chat-message-wrapper'); } - const enableContextMenu = !isRss && !multiSelectMode; + const enableContextMenu = !isRss && !multiSelectMode && !isKickedFromGroup; return (
@@ -1136,7 +1140,7 @@ export class Message extends React.PureComponent { }} > {this.renderError(isIncoming)} - {isRss ? null : this.renderMenu(!isIncoming, triggerId)} + {isRss || isKickedFromGroup ? null : this.renderMenu(!isIncoming, triggerId)}