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

Commit fb7b486

Browse files
committed
Add beta pills to video room creation buttons
1 parent 7b07716 commit fb7b486

File tree

5 files changed

+104
-63
lines changed

5 files changed

+104
-63
lines changed

src/components/structures/SpaceRoomView.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,19 +339,23 @@ const SpaceLandingAddButton = ({ space }) => {
339339
}
340340
}}
341341
/>
342-
{ videoRoomsEnabled && <IconizedContextMenuOption
343-
label={_t("New video room")}
344-
iconClassName="mx_RoomList_iconNewVideoRoom"
345-
onClick={async (e) => {
346-
e.preventDefault();
347-
e.stopPropagation();
348-
closeMenu();
349-
350-
if (await showCreateNewRoom(space, RoomType.ElementVideo)) {
351-
defaultDispatcher.fire(Action.UpdateSpaceHierarchy);
352-
}
353-
}}
354-
/> }
342+
{ videoRoomsEnabled && (
343+
<IconizedContextMenuOption
344+
label={_t("New video room")}
345+
iconClassName="mx_RoomList_iconPlus"
346+
onClick={async (e) => {
347+
e.preventDefault();
348+
e.stopPropagation();
349+
closeMenu();
350+
351+
if (await showCreateNewRoom(space, RoomType.ElementVideo)) {
352+
defaultDispatcher.fire(Action.UpdateSpaceHierarchy);
353+
}
354+
}}
355+
>
356+
<BetaPill />
357+
</IconizedContextMenuOption>
358+
) }
355359
</> }
356360
<IconizedContextMenuOption
357361
label={_t("Add existing room")}

src/components/views/context_menus/SpaceContextMenu.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ limitations under the License.
1616

1717
import React, { useContext } from "react";
1818
import { Room } from "matrix-js-sdk/src/models/room";
19-
import { EventType } from "matrix-js-sdk/src/@types/event";
19+
import { EventType, RoomType } from "matrix-js-sdk/src/@types/event";
2020

2121
import { IProps as IContextMenuProps } from "../../structures/ContextMenu";
2222
import IconizedContextMenu, { IconizedContextMenuOption, IconizedContextMenuOptionList } from "./IconizedContextMenu";
@@ -136,6 +136,7 @@ const SpaceContextMenu = ({ space, hideHeader, onFinished, ...props }: IProps) =
136136

137137
const hasPermissionToAddSpaceChild = space.currentState.maySendStateEvent(EventType.SpaceChild, userId);
138138
const canAddRooms = hasPermissionToAddSpaceChild && shouldShowComponent(UIComponent.CreateRooms);
139+
const canAddVideoRooms = canAddRooms && SettingsStore.getValue("feature_video_rooms");
139140
const canAddSubSpaces = hasPermissionToAddSpaceChild && shouldShowComponent(UIComponent.CreateSpaces);
140141

141142
let newRoomSection: JSX.Element;
@@ -149,6 +150,14 @@ const SpaceContextMenu = ({ space, hideHeader, onFinished, ...props }: IProps) =
149150
onFinished();
150151
};
151152

153+
const onNewVideoRoomClick = (ev: ButtonEvent) => {
154+
ev.preventDefault();
155+
ev.stopPropagation();
156+
157+
showCreateNewRoom(space, RoomType.ElementVideo);
158+
onFinished();
159+
};
160+
152161
const onNewSubspaceClick = (ev: ButtonEvent) => {
153162
ev.preventDefault();
154163
ev.stopPropagation();
@@ -169,6 +178,16 @@ const SpaceContextMenu = ({ space, hideHeader, onFinished, ...props }: IProps) =
169178
onClick={onNewRoomClick}
170179
/>
171180
}
181+
{ canAddVideoRooms &&
182+
<IconizedContextMenuOption
183+
data-test-id='new-video-room-option'
184+
iconClassName="mx_SpacePanel_iconPlus"
185+
label={_t("Video room")}
186+
onClick={onNewVideoRoomClick}
187+
>
188+
<BetaPill />
189+
</IconizedContextMenuOption>
190+
}
172191
{ canAddSubSpaces &&
173192
<IconizedContextMenuOption
174193
data-test-id='new-subspace-option'

src/components/views/rooms/RoomList.tsx

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import IconizedContextMenu, {
4242
IconizedContextMenuOptionList,
4343
} from "../context_menus/IconizedContextMenu";
4444
import AccessibleButton, { ButtonEvent } from "../elements/AccessibleButton";
45+
import { BetaPill } from "../beta/BetaCard";
4546
import SpaceStore from "../../../stores/spaces/SpaceStore";
4647
import {
4748
isMetaSpace,
@@ -239,19 +240,23 @@ const UntaggedAuxButton = ({ tabIndex }: IAuxButtonProps) => {
239240
tooltip={canAddRooms ? undefined
240241
: _t("You do not have permissions to create new rooms in this space")}
241242
/>
242-
{ SettingsStore.getValue("feature_video_rooms") && <IconizedContextMenuOption
243-
label={_t("New video room")}
244-
iconClassName="mx_RoomList_iconNewVideoRoom"
245-
onClick={(e) => {
246-
e.preventDefault();
247-
e.stopPropagation();
248-
closeMenu();
249-
showCreateNewRoom(activeSpace, RoomType.ElementVideo);
250-
}}
251-
disabled={!canAddRooms}
252-
tooltip={canAddRooms ? undefined
253-
: _t("You do not have permissions to create new rooms in this space")}
254-
/> }
243+
{ SettingsStore.getValue("feature_video_rooms") && (
244+
<IconizedContextMenuOption
245+
label={_t("New video room")}
246+
iconClassName="mx_RoomList_iconNewVideoRoom"
247+
onClick={(e) => {
248+
e.preventDefault();
249+
e.stopPropagation();
250+
closeMenu();
251+
showCreateNewRoom(activeSpace, RoomType.ElementVideo);
252+
}}
253+
disabled={!canAddRooms}
254+
tooltip={canAddRooms ? undefined
255+
: _t("You do not have permissions to create new rooms in this space")}
256+
>
257+
<BetaPill />
258+
</IconizedContextMenuOption>
259+
) }
255260
<IconizedContextMenuOption
256261
label={_t("Add existing room")}
257262
iconClassName="mx_RoomList_iconAddExistingRoom"
@@ -283,19 +288,23 @@ const UntaggedAuxButton = ({ tabIndex }: IAuxButtonProps) => {
283288
PosthogTrackers.trackInteraction("WebRoomListRoomsSublistPlusMenuCreateRoomItem", e);
284289
}}
285290
/>
286-
{ SettingsStore.getValue("feature_video_rooms") && <IconizedContextMenuOption
287-
label={_t("New video room")}
288-
iconClassName="mx_RoomList_iconNewVideoRoom"
289-
onClick={(e) => {
290-
e.preventDefault();
291-
e.stopPropagation();
292-
closeMenu();
293-
defaultDispatcher.dispatch({
294-
action: "view_create_room",
295-
type: RoomType.ElementVideo,
296-
});
297-
}}
298-
/> }
291+
{ SettingsStore.getValue("feature_video_rooms") && (
292+
<IconizedContextMenuOption
293+
label={_t("New video room")}
294+
iconClassName="mx_RoomList_iconNewVideoRoom"
295+
onClick={(e) => {
296+
e.preventDefault();
297+
e.stopPropagation();
298+
closeMenu();
299+
defaultDispatcher.dispatch({
300+
action: "view_create_room",
301+
type: RoomType.ElementVideo,
302+
});
303+
}}
304+
>
305+
<BetaPill />
306+
</IconizedContextMenuOption>
307+
) }
299308
</> }
300309
<IconizedContextMenuOption
301310
label={_t("Explore public rooms")}

src/components/views/rooms/RoomListHeader.tsx

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -220,16 +220,20 @@ const RoomListHeader = ({ onVisibilityChange }: IProps) => {
220220
closePlusMenu();
221221
}}
222222
/>
223-
{ videoRoomsEnabled && <IconizedContextMenuOption
224-
iconClassName="mx_RoomListHeader_iconNewVideoRoom"
225-
label={_t("New video room")}
226-
onClick={(e) => {
227-
e.preventDefault();
228-
e.stopPropagation();
229-
showCreateNewRoom(activeSpace, RoomType.ElementVideo);
230-
closePlusMenu();
231-
}}
232-
/> }
223+
{ videoRoomsEnabled && (
224+
<IconizedContextMenuOption
225+
iconClassName="mx_RoomListHeader_iconNewVideoRoom"
226+
label={_t("New video room")}
227+
onClick={(e) => {
228+
e.preventDefault();
229+
e.stopPropagation();
230+
showCreateNewRoom(activeSpace, RoomType.ElementVideo);
231+
closePlusMenu();
232+
}}
233+
>
234+
<BetaPill />
235+
</IconizedContextMenuOption>
236+
) }
233237
</>;
234238
}
235239

@@ -312,19 +316,23 @@ const RoomListHeader = ({ onVisibilityChange }: IProps) => {
312316
closePlusMenu();
313317
}}
314318
/>
315-
{ videoRoomsEnabled && <IconizedContextMenuOption
316-
label={_t("New video room")}
317-
iconClassName="mx_RoomListHeader_iconNewVideoRoom"
318-
onClick={(e) => {
319-
e.preventDefault();
320-
e.stopPropagation();
321-
defaultDispatcher.dispatch({
322-
action: "view_create_room",
323-
type: RoomType.ElementVideo,
324-
});
325-
closePlusMenu();
326-
}}
327-
/> }
319+
{ videoRoomsEnabled && (
320+
<IconizedContextMenuOption
321+
label={_t("New video room")}
322+
iconClassName="mx_RoomListHeader_iconNewVideoRoom"
323+
onClick={(e) => {
324+
e.preventDefault();
325+
e.stopPropagation();
326+
defaultDispatcher.dispatch({
327+
action: "view_create_room",
328+
type: RoomType.ElementVideo,
329+
});
330+
closePlusMenu();
331+
}}
332+
>
333+
<BetaPill />
334+
</IconizedContextMenuOption>
335+
) }
328336
</>;
329337
}
330338
if (canExploreRooms) {

src/i18n/strings/en_EN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2923,6 +2923,7 @@
29232923
"Forget": "Forget",
29242924
"Mentions only": "Mentions only",
29252925
"See room timeline (devtools)": "See room timeline (devtools)",
2926+
"Video room": "Video room",
29262927
"Space": "Space",
29272928
"Space home": "Space home",
29282929
"Manage & explore rooms": "Manage & explore rooms",

0 commit comments

Comments
 (0)