Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Remove the Forward and Share buttons for location messages only (#7423)
Browse files Browse the repository at this point in the history
  • Loading branch information
andybalaam authored Dec 21, 2021
1 parent d6af729 commit de881d2
Showing 1 changed file with 52 additions and 27 deletions.
79 changes: 52 additions & 27 deletions src/components/views/context_menus/MessageContextMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -313,13 +314,15 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
}

if (isContentActionable(mxEvent)) {
forwardButton = (
<IconizedContextMenuOption
iconClassName="mx_MessageContextMenu_iconForward"
label={_t("Forward")}
onClick={this.onForwardClick}
/>
);
if (canForward(mxEvent)) {
forwardButton = (
<IconizedContextMenuOption
iconClassName="mx_MessageContextMenu_iconForward"
label={_t("Forward")}
onClick={this.onForwardClick}
/>
);
}

if (this.state.canPin) {
pinButton = (
Expand Down Expand Up @@ -352,26 +355,29 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
}
}

let permalink;
if (this.props.permalinkCreator) {
permalink = this.props.permalinkCreator.forEvent(this.props.mxEvent.getId());
}
const permalinkButton = (
<IconizedContextMenuOption
iconClassName="mx_MessageContextMenu_iconPermalink"
onClick={this.onPermalinkClick}
label={_t('Share')}
element="a"
{
// XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a`
...{
href: permalink,
target: "_blank",
rel: "noreferrer noopener",
let permalink: string | null = null;
let permalinkButton: ReactElement | null = null;
if (canShare(mxEvent)) {
if (this.props.permalinkCreator) {
permalink = this.props.permalinkCreator.forEvent(this.props.mxEvent.getId());
}
permalinkButton = (
<IconizedContextMenuOption
iconClassName="mx_MessageContextMenu_iconPermalink"
onClick={this.onPermalinkClick}
label={_t('Share')}
element="a"
{
// XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a`
...{
href: permalink,
target: "_blank",
rel: "noreferrer noopener",
}
}
}
/>
);
/>
);
}

if (this.canEndPoll(mxEvent)) {
endPollButton = (
Expand Down Expand Up @@ -486,3 +492,22 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
);
}
}

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)
)
);
}

0 comments on commit de881d2

Please sign in to comment.