From de881d2321f60c30f2024cc8c6672f470f701ab7 Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Tue, 21 Dec 2021 12:57:56 +0000 Subject: [PATCH] Remove the Forward and Share buttons for location messages only (#7423) --- .../context_menus/MessageContextMenu.tsx | 79 ++++++++++++------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/src/components/views/context_menus/MessageContextMenu.tsx b/src/components/views/context_menus/MessageContextMenu.tsx index 019691e4c7..34782c00e2 100644 --- a/src/components/views/context_menus/MessageContextMenu.tsx +++ b/src/components/views/context_menus/MessageContextMenu.tsx @@ -15,11 +15,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; +import React, { ReactElement } from 'react'; import { EventStatus, MatrixEvent } from 'matrix-js-sdk/src/models/event'; import { EventType, RelationType } from "matrix-js-sdk/src/@types/event"; import { Relations } from 'matrix-js-sdk/src/models/relations'; import { POLL_START_EVENT_TYPE } from "matrix-js-sdk/src/@types/polls"; +import { LOCATION_EVENT_TYPE } from 'matrix-js-sdk/src/@types/location'; import { MatrixClientPeg } from '../../../MatrixClientPeg'; import dis from '../../../dispatcher/dispatcher'; @@ -313,13 +314,15 @@ export default class MessageContextMenu extends React.Component } if (isContentActionable(mxEvent)) { - forwardButton = ( - - ); + if (canForward(mxEvent)) { + forwardButton = ( + + ); + } if (this.state.canPin) { pinButton = ( @@ -352,26 +355,29 @@ export default class MessageContextMenu extends React.Component } } - let permalink; - if (this.props.permalinkCreator) { - permalink = this.props.permalinkCreator.forEvent(this.props.mxEvent.getId()); - } - const permalinkButton = ( - - ); + /> + ); + } if (this.canEndPoll(mxEvent)) { endPollButton = ( @@ -486,3 +492,22 @@ export default class MessageContextMenu extends React.Component ); } } + +function canForward(event: MatrixEvent): boolean { + return !isLocationEvent(event); +} + +function canShare(event: MatrixEvent): boolean { + return !isLocationEvent(event); +} + +function isLocationEvent(event: MatrixEvent): boolean { + const eventType = event.getType(); + return ( + LOCATION_EVENT_TYPE.matches(eventType) || + ( + eventType === EventType.RoomMessage && + LOCATION_EVENT_TYPE.matches(event.getContent().msgtype) + ) + ); +}