From ca1bd78921e0fb05bbaaae185f3a29402b61a38e Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Tue, 2 Mar 2021 14:19:40 +0000
Subject: [PATCH] Add space specific variant of the dropdown on "Rooms +"
sublist
---
res/css/views/rooms/_RoomList.scss | 5 +-
.../element-icons/roomlist/hash-circle.svg | 7 +++
.../element-icons/roomlist/plus-circle.svg | 3 ++
src/components/views/rooms/RoomList.tsx | 47 +++++++++++++++++++
src/i18n/strings/en_EN.json | 4 ++
5 files changed, 65 insertions(+), 1 deletion(-)
create mode 100644 res/img/element-icons/roomlist/hash-circle.svg
create mode 100644 res/img/element-icons/roomlist/plus-circle.svg
diff --git a/res/css/views/rooms/_RoomList.scss b/res/css/views/rooms/_RoomList.scss
index 66e1b827d0..d49ed4b736 100644
--- a/res/css/views/rooms/_RoomList.scss
+++ b/res/css/views/rooms/_RoomList.scss
@@ -19,7 +19,10 @@ limitations under the License.
}
.mx_RoomList_iconPlus::before {
- mask-image: url('$(res)/img/element-icons/roomlist/plus.svg');
+ mask-image: url('$(res)/img/element-icons/roomlist/plus-circle.svg');
+}
+.mx_RoomList_iconHash::before {
+ mask-image: url('$(res)/img/element-icons/roomlist/hash-circle.svg');
}
.mx_RoomList_iconExplore::before {
mask-image: url('$(res)/img/element-icons/roomlist/explore.svg');
diff --git a/res/img/element-icons/roomlist/hash-circle.svg b/res/img/element-icons/roomlist/hash-circle.svg
new file mode 100644
index 0000000000..924b22cf32
--- /dev/null
+++ b/res/img/element-icons/roomlist/hash-circle.svg
@@ -0,0 +1,7 @@
+
diff --git a/res/img/element-icons/roomlist/plus-circle.svg b/res/img/element-icons/roomlist/plus-circle.svg
new file mode 100644
index 0000000000..251ded225c
--- /dev/null
+++ b/res/img/element-icons/roomlist/plus-circle.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx
index 45db15df7c..f7da6571da 100644
--- a/src/components/views/rooms/RoomList.tsx
+++ b/src/components/views/rooms/RoomList.tsx
@@ -47,6 +47,9 @@ import { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../con
import AccessibleButton from "../elements/AccessibleButton";
import { CommunityPrototypeStore } from "../../../stores/CommunityPrototypeStore";
import CallHandler from "../../../CallHandler";
+import SpaceStore from "../../../stores/SpaceStore";
+import { showAddExistingRooms, showCreateNewRoom } from "../../../utils/space";
+import { EventType } from "matrix-js-sdk/src/@types/event";
interface IProps {
onKeyDown: (ev: React.KeyboardEvent) => void;
@@ -152,6 +155,50 @@ const TAG_AESTHETICS: ITagAestheticsMap = {
defaultHidden: false,
addRoomLabel: _td("Add room"),
addRoomContextMenu: (onFinished: () => void) => {
+ if (SpaceStore.instance.activeSpace) {
+ const canAddRooms = SpaceStore.instance.activeSpace.currentState.maySendStateEvent(EventType.SpaceChild,
+ MatrixClientPeg.get().getUserId());
+
+ return
+ {
+ e.preventDefault();
+ e.stopPropagation();
+ onFinished();
+ showCreateNewRoom(MatrixClientPeg.get(), SpaceStore.instance.activeSpace);
+ }}
+ disabled={!canAddRooms}
+ tooltip={canAddRooms ? undefined
+ : _t("You do not have permissions to create new rooms in this space")}
+ />
+ {
+ e.preventDefault();
+ e.stopPropagation();
+ onFinished();
+ showAddExistingRooms(MatrixClientPeg.get(), SpaceStore.instance.activeSpace);
+ }}
+ disabled={!canAddRooms}
+ tooltip={canAddRooms ? undefined
+ : _t("You do not have permissions to add rooms to this space")}
+ />
+ {
+ e.preventDefault();
+ e.stopPropagation();
+ onFinished();
+ defaultDispatcher.fire(Action.ViewRoomDirectory);
+ }}
+ />
+ ;
+ }
+
return