message: Remove the Forward and Share buttons for location messages only
diff: @@ -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,6 +314,7 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
  }
  if (isContentActionable(mxEvent)) {
  + if (canForward(mxEvent)) {
  forwardButton = (
  <IconizedContextMenuOption
  iconClassName="mx_MessageContextMenu_iconForward"
  @@ -320,6 +322,7 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
  onClick={this.onForwardClick}
  />
  );
  + }
  if (this.state.canPin) {
  pinButton = (
  @@ -352,11 +355,13 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
  }
  }
  - let permalink;
  + 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());
  }
  - const permalinkButton = (
  + permalinkButton = (
  <IconizedContextMenuOption
  iconClassName="mx_MessageContextMenu_iconPermalink"
  onClick={this.onPermalinkClick}
  @@ -372,6 +377,7 @@ export default class MessageContextMenu extends React.Component<IProps, IState>
  }
  />
  );
  + }
  if (this.canEndPoll(mxEvent)) {
  endPollButton = (
  @@ -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)
  + )
  + );
  +}
  