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

Commit d87cfae

Browse files
authored
Change spaceroomfacepile tooltip if memberlist is shown (#8571)
1 parent 997d8ab commit d87cfae

File tree

3 files changed

+65
-75
lines changed

3 files changed

+65
-75
lines changed

src/components/structures/SpaceRoomView.tsx

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2021 The Matrix.org Foundation C.I.C.
2+
Copyright 2021-2022 The Matrix.org Foundation C.I.C.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -14,35 +14,32 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import React, { RefObject, useContext, useRef, useState } from "react";
1817
import { EventType, RoomType } from "matrix-js-sdk/src/@types/event";
1918
import { JoinRule, Preset } from "matrix-js-sdk/src/@types/partials";
20-
import { Room, RoomEvent } from "matrix-js-sdk/src/models/room";
2119
import { logger } from "matrix-js-sdk/src/logger";
20+
import { Room, RoomEvent } from "matrix-js-sdk/src/models/room";
21+
import React, { RefObject, useCallback, useContext, useRef, useState } from "react";
2222

2323
import MatrixClientContext from "../../contexts/MatrixClientContext";
24-
import RoomAvatar from "../views/avatars/RoomAvatar";
25-
import { _t } from "../../languageHandler";
26-
import AccessibleButton from "../views/elements/AccessibleButton";
27-
import RoomName from "../views/elements/RoomName";
28-
import RoomTopic from "../views/elements/RoomTopic";
29-
import { inviteMultipleToRoom, showRoomInviteDialog } from "../../RoomInvite";
30-
import { useFeatureEnabled } from "../../hooks/useSettings";
3124
import createRoom, { IOpts } from "../../createRoom";
32-
import Field from "../views/elements/Field";
33-
import withValidation from "../views/elements/Validation";
34-
import * as Email from "../../email";
35-
import defaultDispatcher from "../../dispatcher/dispatcher";
25+
import { shouldShowComponent } from "../../customisations/helpers/UIComponents";
3626
import { Action } from "../../dispatcher/actions";
37-
import ResizeNotifier from "../../utils/ResizeNotifier";
38-
import MainSplit from './MainSplit';
39-
import ErrorBoundary from "../views/elements/ErrorBoundary";
27+
import defaultDispatcher from "../../dispatcher/dispatcher";
4028
import { ActionPayload } from "../../dispatcher/payloads";
41-
import RightPanel from "./RightPanel";
29+
import { ViewRoomPayload } from "../../dispatcher/payloads/ViewRoomPayload";
30+
import * as Email from "../../email";
31+
import { useEventEmitterState } from "../../hooks/useEventEmitter";
32+
import { useMyRoomMembership } from "../../hooks/useRoomMembers";
33+
import { useFeatureEnabled } from "../../hooks/useSettings";
34+
import { useStateArray } from "../../hooks/useStateArray";
35+
import { _t } from "../../languageHandler";
36+
import PosthogTrackers from "../../PosthogTrackers";
37+
import { inviteMultipleToRoom, showRoomInviteDialog } from "../../RoomInvite";
38+
import { UIComponent } from "../../settings/UIFeature";
39+
import { UPDATE_EVENT } from "../../stores/AsyncStore";
4240
import RightPanelStore from "../../stores/right-panel/RightPanelStore";
4341
import { RightPanelPhases } from "../../stores/right-panel/RightPanelStorePhases";
44-
import { useStateArray } from "../../hooks/useStateArray";
45-
import SpacePublicShare from "../views/spaces/SpacePublicShare";
42+
import ResizeNotifier from "../../utils/ResizeNotifier";
4643
import {
4744
shouldShowSpaceInvite,
4845
shouldShowSpaceSettings,
@@ -52,29 +49,33 @@ import {
5249
showSpaceInvite,
5350
showSpaceSettings,
5451
} from "../../utils/space";
55-
import SpaceHierarchy, { showRoom } from "./SpaceHierarchy";
56-
import RoomFacePile from "../views/elements/RoomFacePile";
52+
import RoomAvatar from "../views/avatars/RoomAvatar";
53+
import { BetaPill } from "../views/beta/BetaCard";
54+
import IconizedContextMenu, {
55+
IconizedContextMenuOption,
56+
IconizedContextMenuOptionList,
57+
} from "../views/context_menus/IconizedContextMenu";
5758
import {
5859
AddExistingToSpace,
5960
defaultDmsRenderer,
6061
defaultRoomsRenderer,
6162
} from "../views/dialogs/AddExistingToSpaceDialog";
62-
import { ChevronFace, ContextMenuButton, useContextMenu } from "./ContextMenu";
63-
import IconizedContextMenu, {
64-
IconizedContextMenuOption,
65-
IconizedContextMenuOptionList,
66-
} from "../views/context_menus/IconizedContextMenu";
63+
import AccessibleButton from "../views/elements/AccessibleButton";
6764
import AccessibleTooltipButton from "../views/elements/AccessibleTooltipButton";
68-
import { BetaPill } from "../views/beta/BetaCard";
69-
import { SpaceFeedbackPrompt } from "../views/spaces/SpaceCreateMenu";
65+
import ErrorBoundary from "../views/elements/ErrorBoundary";
66+
import Field from "../views/elements/Field";
67+
import RoomFacePile from "../views/elements/RoomFacePile";
68+
import RoomName from "../views/elements/RoomName";
69+
import RoomTopic from "../views/elements/RoomTopic";
70+
import withValidation from "../views/elements/Validation";
7071
import RoomInfoLine from "../views/rooms/RoomInfoLine";
7172
import RoomPreviewCard from "../views/rooms/RoomPreviewCard";
72-
import { useMyRoomMembership } from "../../hooks/useRoomMembers";
73-
import { shouldShowComponent } from "../../customisations/helpers/UIComponents";
74-
import { UIComponent } from "../../settings/UIFeature";
75-
import { UPDATE_EVENT } from "../../stores/AsyncStore";
76-
import PosthogTrackers from "../../PosthogTrackers";
77-
import { ViewRoomPayload } from "../../dispatcher/payloads/ViewRoomPayload";
73+
import { SpaceFeedbackPrompt } from "../views/spaces/SpaceCreateMenu";
74+
import SpacePublicShare from "../views/spaces/SpacePublicShare";
75+
import { ChevronFace, ContextMenuButton, useContextMenu } from "./ContextMenu";
76+
import MainSplit from './MainSplit';
77+
import RightPanel from "./RightPanel";
78+
import SpaceHierarchy, { showRoom } from "./SpaceHierarchy";
7879

7980
interface IProps {
8081
space: Room;
@@ -195,6 +196,13 @@ const SpaceLanding = ({ space }: { space: Room }) => {
195196
const myMembership = useMyRoomMembership(space);
196197
const userId = cli.getUserId();
197198

199+
const storeIsShowingSpaceMembers = useCallback(
200+
() => RightPanelStore.instance.isOpenForRoom(space.roomId)
201+
&& RightPanelStore.instance.currentCardForRoom(space.roomId)?.phase === RightPanelPhases.SpaceMemberList,
202+
[space.roomId],
203+
);
204+
const isShowingMembers = useEventEmitterState(RightPanelStore.instance, UPDATE_EVENT, storeIsShowingSpaceMembers);
205+
198206
let inviteButton;
199207
if (shouldShowSpaceInvite(space) && shouldShowComponent(UIComponent.InviteUsers)) {
200208
inviteButton = (
@@ -249,7 +257,12 @@ const SpaceLanding = ({ space }: { space: Room }) => {
249257
<div className="mx_SpaceRoomView_landing_infoBar">
250258
<RoomInfoLine room={space} />
251259
<div className="mx_SpaceRoomView_landing_infoBar_interactive">
252-
<RoomFacePile room={space} onlyKnownUsers={false} numShown={7} onClick={onMembersClick} />
260+
<RoomFacePile
261+
room={space}
262+
onlyKnownUsers={false}
263+
numShown={7}
264+
onClick={isShowingMembers ? undefined : onMembersClick}
265+
/>
253266
{ inviteButton }
254267
{ settingsButton }
255268
</div>

src/components/views/elements/RoomFacePile.tsx

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2021 The Matrix.org Foundation C.I.C.
2+
Copyright 2021-2022 The Matrix.org Foundation C.I.C.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import React, { FC, HTMLAttributes, ReactNode, useContext } from "react";
17+
import React, { FC, HTMLAttributes, useContext } from "react";
1818
import { Room } from "matrix-js-sdk/src/models/room";
1919
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
2020
import { sortBy } from "lodash";
@@ -60,36 +60,18 @@ const RoomFacePile: FC<IProps> = (
6060
// reverse members in tooltip order to make the order between the two match up.
6161
const commaSeparatedMembers = shownMembers.map(m => m.name).reverse().join(", ");
6262

63-
let tooltip: ReactNode;
64-
if (props.onClick) {
65-
let subText: string;
66-
if (isJoined) {
67-
subText = _t("Including you, %(commaSeparatedMembers)s", { commaSeparatedMembers });
68-
} else {
69-
subText = _t("Including %(commaSeparatedMembers)s", { commaSeparatedMembers });
70-
}
71-
72-
tooltip = <div>
73-
<div className="mx_Tooltip_title">
74-
{ _t("View all %(count)s members", { count }) }
75-
</div>
76-
<div className="mx_Tooltip_sub">
77-
{ subText }
78-
</div>
79-
</div>;
80-
} else {
81-
if (isJoined) {
82-
tooltip = _t("%(count)s members including you, %(commaSeparatedMembers)s", {
83-
count: count - 1,
84-
commaSeparatedMembers,
85-
});
86-
} else {
87-
tooltip = _t("%(count)s members including %(commaSeparatedMembers)s", {
88-
count,
89-
commaSeparatedMembers,
90-
});
91-
}
92-
}
63+
const tooltip = <div>
64+
<div className="mx_Tooltip_title">
65+
{ props.onClick
66+
? _t("View all %(count)s members", { count })
67+
: _t("%(count)s members", { count }) }
68+
</div>
69+
<div className="mx_Tooltip_sub">
70+
{ isJoined
71+
? _t("Including you, %(commaSeparatedMembers)s", { commaSeparatedMembers })
72+
: _t("Including %(commaSeparatedMembers)s", { commaSeparatedMembers }) }
73+
</div>
74+
</div>;
9375

9476
return <FacePile
9577
members={shownMembers}

src/i18n/strings/en_EN.json

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2364,15 +2364,10 @@
23642364
"This address is available to use": "This address is available to use",
23652365
"This address is already in use": "This address is already in use",
23662366
"This address had invalid server or is already in use": "This address had invalid server or is already in use",
2367-
"Including you, %(commaSeparatedMembers)s": "Including you, %(commaSeparatedMembers)s",
2368-
"Including %(commaSeparatedMembers)s": "Including %(commaSeparatedMembers)s",
23692367
"View all %(count)s members|other": "View all %(count)s members",
23702368
"View all %(count)s members|one": "View 1 member",
2371-
"%(count)s members including you, %(commaSeparatedMembers)s|other": "%(count)s members including you, %(commaSeparatedMembers)s",
2372-
"%(count)s members including you, %(commaSeparatedMembers)s|zero": "You",
2373-
"%(count)s members including you, %(commaSeparatedMembers)s|one": "%(count)s members including you and %(commaSeparatedMembers)s",
2374-
"%(count)s members including %(commaSeparatedMembers)s|other": "%(count)s members including %(commaSeparatedMembers)s",
2375-
"%(count)s members including %(commaSeparatedMembers)s|one": "%(commaSeparatedMembers)s",
2369+
"Including you, %(commaSeparatedMembers)s": "Including you, %(commaSeparatedMembers)s",
2370+
"Including %(commaSeparatedMembers)s": "Including %(commaSeparatedMembers)s",
23762371
"%(count)s people you know have already joined|other": "%(count)s people you know have already joined",
23772372
"%(count)s people you know have already joined|one": "%(count)s person you know has already joined",
23782373
"Message search initialisation failed, check <a>your settings</a> for more information": "Message search initialisation failed, check <a>your settings</a> for more information",

0 commit comments

Comments
 (0)