From 9452a3cc099666d1423245c24838ec9d6fb3277f Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Thu, 9 Dec 2021 09:28:12 +0000
Subject: [PATCH] Iterate room context menus for DMs (#7308)
---
.../views/context_menus/RoomContextMenu.tsx | 75 +++++++++++--------
src/components/views/rooms/RoomTile.tsx | 8 +-
2 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/src/components/views/context_menus/RoomContextMenu.tsx b/src/components/views/context_menus/RoomContextMenu.tsx
index 38cbdd69e4..f5081c4a7a 100644
--- a/src/components/views/context_menus/RoomContextMenu.tsx
+++ b/src/components/views/context_menus/RoomContextMenu.tsx
@@ -44,6 +44,7 @@ import { Action } from "../../../dispatcher/actions";
import { RightPanelPhases } from "../../../stores/RightPanelStorePhases";
import { ROOM_NOTIFICATIONS_TAB } from "../dialogs/RoomSettingsDialog";
import { useEventEmitterState } from "../../../hooks/useEventEmitter";
+import DMRoomMap from "../../../utils/DMRoomMap";
interface IProps extends IContextMenuProps {
room: Room;
@@ -96,8 +97,10 @@ const RoomContextMenu = ({ room, onFinished, ...props }: IProps) => {
/>;
}
+ const isDm = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
+
let inviteOption: JSX.Element;
- if (room.canInvite(cli.getUserId())) {
+ if (room.canInvite(cli.getUserId()) && !isDm) {
const onInviteClick = (ev: ButtonEvent) => {
ev.preventDefault();
ev.stopPropagation();
@@ -179,6 +182,42 @@ const RoomContextMenu = ({ room, onFinished, ...props }: IProps) => {
;
}
+ let peopleOption: JSX.Element;
+ let copyLinkOption: JSX.Element;
+ if (!isDm) {
+ peopleOption = {
+ ev.preventDefault();
+ ev.stopPropagation();
+
+ ensureViewingRoom();
+ onRoomMembersClick(false);
+ onFinished();
+ }}
+ label={_t("People")}
+ iconClassName="mx_RoomTile_iconPeople"
+ >
+
+ { room.getJoinedMemberCount() }
+
+ ;
+
+ copyLinkOption = {
+ ev.preventDefault();
+ ev.stopPropagation();
+
+ dis.dispatch({
+ action: "copy_room",
+ room_id: room.roomId,
+ });
+ onFinished();
+ }}
+ label={_t("Copy link")}
+ iconClassName="mx_RoomTile_iconCopyLink"
+ />;
+ }
+
const onTagRoom = (ev: ButtonEvent, tagId: TagID) => {
ev.preventDefault();
ev.stopPropagation();
@@ -212,23 +251,7 @@ const RoomContextMenu = ({ room, onFinished, ...props }: IProps) => {
{ inviteOption }
{ notificationOption }
{ favouriteOption }
-
- {
- ev.preventDefault();
- ev.stopPropagation();
-
- ensureViewingRoom();
- onRoomMembersClick(false);
- onFinished();
- }}
- label={_t("People")}
- iconClassName="mx_RoomTile_iconPeople"
- >
-
- { room.getJoinedMemberCount() }
-
-
+ { peopleOption }
{
@@ -261,21 +284,7 @@ const RoomContextMenu = ({ room, onFinished, ...props }: IProps) => {
/>
{ lowPriorityOption }
-
- {
- ev.preventDefault();
- ev.stopPropagation();
-
- dis.dispatch({
- action: "copy_room",
- room_id: room.roomId,
- });
- onFinished();
- }}
- label={_t("Copy link")}
- iconClassName="mx_RoomTile_iconCopyLink"
- />
+ { copyLinkOption }
{
diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx
index e413a55276..8d989ee209 100644
--- a/src/components/views/rooms/RoomTile.tsx
+++ b/src/components/views/rooms/RoomTile.tsx
@@ -485,8 +485,10 @@ export default class RoomTile extends React.PureComponent {
const isLowPriority = roomTags.includes(DefaultTagID.LowPriority);
const lowPriorityLabel = _t("Low Priority");
+ const isDm = roomTags.includes(DefaultTagID.DM);
+
const userId = MatrixClientPeg.get().getUserId();
- const canInvite = this.props.room.canInvite(userId);
+ const canInvite = this.props.room.canInvite(userId) && !isDm; // hide invite in DMs from this quick menu
contextMenu = {
iconClassName="mx_RoomTile_iconInvite"
/>
) : null }
-
+ /> : null }