Skip to content

Commit 3f22189

Browse files
committed
Remove space-specific right panel store handling
This is no longer needed as the right panel always corresponds to the currently viewed room/space only. Signed-off-by: Michael Telatynski <[email protected]>
1 parent a2a066d commit 3f22189

21 files changed

+53
-83
lines changed

src/components/structures/RightPanel.tsx

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ export default class RightPanel extends React.Component<Props, IState> {
109109
}
110110

111111
// redraw the badge on the membership list
112-
if (this.state.phase === RightPanelPhases.RoomMemberList) {
112+
if (this.state.phase === RightPanelPhases.MemberList) {
113113
this.delayedUpdate();
114114
} else if (
115-
this.state.phase === RightPanelPhases.RoomMemberInfo &&
115+
this.state.phase === RightPanelPhases.MemberInfo &&
116116
member.userId === this.state.cardState?.member?.userId
117117
) {
118118
// refresh the member info (e.g. new power level)
@@ -157,7 +157,7 @@ export default class RightPanel extends React.Component<Props, IState> {
157157
const phase = this.props.overwriteCard?.phase ?? this.state.phase;
158158
const cardState = this.props.overwriteCard?.state ?? this.state.cardState;
159159
switch (phase) {
160-
case RightPanelPhases.RoomMemberList:
160+
case RightPanelPhases.MemberList:
161161
if (!!roomId) {
162162
card = (
163163
<MemberList
@@ -170,22 +170,8 @@ export default class RightPanel extends React.Component<Props, IState> {
170170
);
171171
}
172172
break;
173-
case RightPanelPhases.SpaceMemberList:
174-
if (!!cardState?.spaceId || !!roomId) {
175-
card = (
176-
<MemberList
177-
roomId={cardState?.spaceId ?? roomId!}
178-
key={cardState?.spaceId ?? roomId!}
179-
onClose={this.onClose}
180-
searchQuery={this.state.searchQuery}
181-
onSearchQueryChanged={this.onSearchQueryChanged}
182-
/>
183-
);
184-
}
185-
break;
186173

187-
case RightPanelPhases.RoomMemberInfo:
188-
case RightPanelPhases.SpaceMemberInfo:
174+
case RightPanelPhases.MemberInfo:
189175
case RightPanelPhases.EncryptionPanel: {
190176
if (!!cardState?.member) {
191177
const roomMember = cardState.member instanceof RoomMember ? cardState.member : undefined;
@@ -203,8 +189,7 @@ export default class RightPanel extends React.Component<Props, IState> {
203189
}
204190
break;
205191
}
206-
case RightPanelPhases.Room3pidMemberInfo:
207-
case RightPanelPhases.Space3pidMemberInfo:
192+
case RightPanelPhases.ThreePidMemberInfo:
208193
if (!!cardState?.memberInfoEvent) {
209194
card = (
210195
<ThirdPartyMemberInfo event={cardState.memberInfoEvent} key={roomId} onClose={this.onClose} />

src/components/structures/RoomView.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,18 +1214,18 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
12141214
if (payload.member) {
12151215
if (payload.push) {
12161216
RightPanelStore.instance.pushCard({
1217-
phase: RightPanelPhases.RoomMemberInfo,
1217+
phase: RightPanelPhases.MemberInfo,
12181218
state: { member: payload.member },
12191219
});
12201220
} else {
12211221
RightPanelStore.instance.setCards([
12221222
{ phase: RightPanelPhases.RoomSummary },
1223-
{ phase: RightPanelPhases.RoomMemberList },
1224-
{ phase: RightPanelPhases.RoomMemberInfo, state: { member: payload.member } },
1223+
{ phase: RightPanelPhases.MemberList },
1224+
{ phase: RightPanelPhases.MemberInfo, state: { member: payload.member } },
12251225
]);
12261226
}
12271227
} else {
1228-
RightPanelStore.instance.showOrHidePhase(RightPanelPhases.RoomMemberList);
1228+
RightPanelStore.instance.showOrHidePhase(RightPanelPhases.MemberList);
12291229
}
12301230
break;
12311231
case Action.View3pidInvite:

src/components/structures/SpaceRoomView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ const SpaceLanding: React.FC<{ space: Room }> = ({ space }) => {
208208
const storeIsShowingSpaceMembers = useCallback(
209209
() =>
210210
RightPanelStore.instance.isOpenForRoom(space.roomId) &&
211-
RightPanelStore.instance.currentCardForRoom(space.roomId)?.phase === RightPanelPhases.SpaceMemberList,
211+
RightPanelStore.instance.currentCardForRoom(space.roomId)?.phase === RightPanelPhases.MemberList,
212212
[space.roomId],
213213
);
214214
const isShowingMembers = useEventEmitterState(RightPanelStore.instance, UPDATE_EVENT, storeIsShowingSpaceMembers);
@@ -251,7 +251,7 @@ const SpaceLanding: React.FC<{ space: Room }> = ({ space }) => {
251251
}
252252

253253
const onMembersClick = (): void => {
254-
RightPanelStore.instance.setCard({ phase: RightPanelPhases.SpaceMemberList });
254+
RightPanelStore.instance.setCard({ phase: RightPanelPhases.MemberList });
255255
};
256256

257257
return (

src/components/structures/UserView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export default class UserView extends React.Component<IProps, IState> {
8282
} else if (this.state.member) {
8383
const panel = (
8484
<RightPanel
85-
overwriteCard={{ phase: RightPanelPhases.RoomMemberInfo, state: { member: this.state.member } }}
85+
overwriteCard={{ phase: RightPanelPhases.MemberInfo, state: { member: this.state.member } }}
8686
resizeNotifier={this.props.resizeNotifier}
8787
/>
8888
);

src/components/views/right_panel/RoomSummaryCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ interface IProps {
8686
}
8787

8888
const onRoomMembersClick = (): void => {
89-
RightPanelStore.instance.pushCard({ phase: RightPanelPhases.RoomMemberList }, true);
89+
RightPanelStore.instance.pushCard({ phase: RightPanelPhases.MemberList }, true);
9090
};
9191

9292
const onRoomThreadsClick = (): void => {

src/components/views/right_panel/UserInfo.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1739,13 +1739,13 @@ export const UserInfoHeader: React.FC<{
17391739
interface IProps {
17401740
user: Member;
17411741
room?: Room;
1742-
phase: RightPanelPhases.RoomMemberInfo | RightPanelPhases.SpaceMemberInfo | RightPanelPhases.EncryptionPanel;
1742+
phase: RightPanelPhases.MemberInfo | RightPanelPhases.MemberInfo | RightPanelPhases.EncryptionPanel;
17431743
onClose(): void;
17441744
verificationRequest?: VerificationRequest;
17451745
verificationRequestPromise?: Promise<VerificationRequest>;
17461746
}
17471747

1748-
const UserInfo: React.FC<IProps> = ({ user, room, onClose, phase = RightPanelPhases.RoomMemberInfo, ...props }) => {
1748+
const UserInfo: React.FC<IProps> = ({ user, room, onClose, phase = RightPanelPhases.MemberInfo, ...props }) => {
17491749
const cli = useContext(MatrixClientContext);
17501750

17511751
// fetch latest room member if we have a room, so we don't show historical information, falling back to user
@@ -1767,8 +1767,6 @@ const UserInfo: React.FC<IProps> = ({ user, room, onClose, phase = RightPanelPha
17671767
// We have no previousPhase for when viewing a UserInfo without a Room at this time
17681768
if (room && phase === RightPanelPhases.EncryptionPanel) {
17691769
cardState = { member };
1770-
} else if (room?.isSpaceRoom()) {
1771-
cardState = { spaceId: room.roomId };
17721770
}
17731771

17741772
const onEncryptionPanelClose = (): void => {
@@ -1777,8 +1775,7 @@ const UserInfo: React.FC<IProps> = ({ user, room, onClose, phase = RightPanelPha
17771775

17781776
let content: JSX.Element | undefined;
17791777
switch (phase) {
1780-
case RightPanelPhases.RoomMemberInfo:
1781-
case RightPanelPhases.SpaceMemberInfo:
1778+
case RightPanelPhases.MemberInfo:
17821779
content = (
17831780
<BasicUserInfo
17841781
room={room as Room}
@@ -1823,7 +1820,7 @@ const UserInfo: React.FC<IProps> = ({ user, room, onClose, phase = RightPanelPha
18231820
closeLabel={closeLabel}
18241821
cardState={cardState}
18251822
onBack={(ev: ButtonEvent) => {
1826-
if (RightPanelStore.instance.previousCard.phase === RightPanelPhases.RoomMemberList) {
1823+
if (RightPanelStore.instance.previousCard.phase === RightPanelPhases.MemberList) {
18271824
PosthogTrackers.trackInteraction("WebRightPanelRoomUserInfoBackButton", ev);
18281825
}
18291826
}}

src/components/views/rooms/RoomHeader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ export default function RoomHeader({
392392
viewUserOnClick={false}
393393
tooltipLabel={_t("room|header_face_pile_tooltip")}
394394
onClick={(e: ButtonEvent) => {
395-
RightPanelStore.instance.showOrHidePhase(RightPanelPhases.RoomMemberList);
395+
RightPanelStore.instance.showOrHidePhase(RightPanelPhases.MemberList);
396396
e.stopPropagation();
397397
}}
398398
aria-label={_t("common|n_members", { count: memberCount })}

src/components/views/rooms/RoomInfoLine.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ const RoomInfoLine: FC<IProps> = ({ room }) => {
6464
// summary is not still loading
6565
const viewMembers = (): void =>
6666
RightPanelStore.instance.setCard({
67-
phase: room.isSpaceRoom() ? RightPanelPhases.SpaceMemberList : RightPanelPhases.RoomMemberList,
67+
phase: RightPanelPhases.MemberList,
6868
});
6969

7070
members = (

src/components/views/toasts/VerificationRequestToast.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export default class VerificationRequestToast extends React.PureComponent<IProps
117117
RightPanelStore.instance.setCards(
118118
[
119119
{ phase: RightPanelPhases.RoomSummary },
120-
{ phase: RightPanelPhases.RoomMemberInfo, state: { member } },
120+
{ phase: RightPanelPhases.MemberInfo, state: { member } },
121121
{ phase: RightPanelPhases.EncryptionPanel, state: { verificationRequest: request, member } },
122122
],
123123
undefined,

src/stores/right-panel/RightPanelStore.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,15 @@ export default class RightPanelStore extends ReadyWatchingStore {
304304
logger.warn("removed card from right panel because of missing threadHeadEvent in card state");
305305
}
306306
return !!card.state?.threadHeadEvent;
307-
case RightPanelPhases.RoomMemberInfo:
308-
case RightPanelPhases.SpaceMemberInfo:
307+
case RightPanelPhases.MemberInfo:
308+
case RightPanelPhases.MemberInfo:
309309
case RightPanelPhases.EncryptionPanel:
310310
if (!card.state?.member) {
311311
logger.warn("removed card from right panel because of missing member in card state");
312312
}
313313
return !!card.state?.member;
314-
case RightPanelPhases.Room3pidMemberInfo:
315-
case RightPanelPhases.Space3pidMemberInfo:
314+
case RightPanelPhases.ThreePidMemberInfo:
315+
case RightPanelPhases.ThreePidMemberInfo:
316316
if (!card.state?.memberInfoEvent) {
317317
logger.warn("removed card from right panel because of missing memberInfoEvent in card state");
318318
}
@@ -327,7 +327,7 @@ export default class RightPanelStore extends ReadyWatchingStore {
327327
}
328328

329329
private getVerificationRedirect(card: IRightPanelCard): IRightPanelCard | null {
330-
if (card.phase === RightPanelPhases.RoomMemberInfo && card.state) {
330+
if (card.phase === RightPanelPhases.MemberInfo && card.state) {
331331
// RightPanelPhases.RoomMemberInfo -> needs to be changed to RightPanelPhases.EncryptionPanel if there is a pending verification request
332332
const { member } = card.state;
333333
const pendingRequest = member
@@ -385,8 +385,7 @@ export default class RightPanelStore extends ReadyWatchingStore {
385385
if (panel?.history) {
386386
panel.history = panel.history.filter(
387387
(card: IRightPanelCard) =>
388-
card.phase != RightPanelPhases.RoomMemberInfo &&
389-
card.phase != RightPanelPhases.Room3pidMemberInfo,
388+
card.phase != RightPanelPhases.MemberInfo && card.phase != RightPanelPhases.ThreePidMemberInfo,
390389
);
391390
}
392391
}

src/stores/right-panel/RightPanelStoreIPanelState.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export interface IRightPanelCardState {
1616
verificationRequest?: VerificationRequest;
1717
verificationRequestPromise?: Promise<VerificationRequest>;
1818
widgetId?: string;
19-
spaceId?: string;
2019
// Room3pidMemberInfo, Space3pidMemberInfo,
2120
memberInfoEvent?: MatrixEvent;
2221
// threads
@@ -32,7 +31,6 @@ export interface IRightPanelCardStateStored {
3231
memberId?: string;
3332
// we do not store the things associated with verification
3433
widgetId?: string;
35-
spaceId?: string;
3634
// 3pidMemberInfo
3735
memberInfoEventId?: string;
3836
// threads
@@ -80,7 +78,6 @@ export function convertCardToStore(panelState: IRightPanelCard): IRightPanelCard
8078
const state = panelState.state ?? {};
8179
const stateStored: IRightPanelCardStateStored = {
8280
widgetId: state.widgetId,
83-
spaceId: state.spaceId,
8481
isInitialEventHighlighted: state.isInitialEventHighlighted,
8582
initialEventScrollIntoView: state.initialEventScrollIntoView,
8683
threadHeadEventId: !!state?.threadHeadEvent?.getId() ? state.threadHeadEvent.getId() : undefined,
@@ -97,7 +94,6 @@ function convertStoreToCard(panelStateStore: IRightPanelCardStored, room: Room):
9794
const stateStored = panelStateStore.state ?? {};
9895
const state: IRightPanelCardState = {
9996
widgetId: stateStored.widgetId,
100-
spaceId: stateStored.spaceId,
10197
isInitialEventHighlighted: stateStored.isInitialEventHighlighted,
10298
initialEventScrollIntoView: stateStored.initialEventScrollIntoView,
10399
threadHeadEvent: !!stateStored?.threadHeadEventId

src/stores/right-panel/RightPanelStorePhases.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,21 @@ import { _t } from "../../languageHandler";
1010

1111
// These are in their own file because of circular imports being a problem.
1212
export enum RightPanelPhases {
13+
// Room & Space stuff
14+
MemberList = "MemberList",
15+
MemberInfo = "MemberInfo",
16+
ThreePidMemberInfo = "ThreePidMemberInfo",
17+
1318
// Room stuff
14-
RoomMemberList = "RoomMemberList",
1519
FilePanel = "FilePanel",
1620
NotificationPanel = "NotificationPanel",
17-
RoomMemberInfo = "RoomMemberInfo",
1821
EncryptionPanel = "EncryptionPanel",
1922
RoomSummary = "RoomSummary",
2023
Widget = "Widget",
2124
PinnedMessages = "PinnedMessages",
2225
Timeline = "Timeline",
2326
Extensions = "Extensions",
2427

25-
Room3pidMemberInfo = "Room3pidMemberInfo",
26-
27-
// Space stuff
28-
SpaceMemberList = "SpaceMemberList",
29-
SpaceMemberInfo = "SpaceMemberInfo",
30-
Space3pidMemberInfo = "Space3pidMemberInfo",
31-
3228
// Thread stuff
3329
ThreadView = "ThreadView",
3430
ThreadPanel = "ThreadPanel",
@@ -42,7 +38,7 @@ export function backLabelForPhase(phase: RightPanelPhases | null): string | null
4238
return _t("chat_card_back_action_label");
4339
case RightPanelPhases.RoomSummary:
4440
return _t("room_summary_card_back_action_label");
45-
case RightPanelPhases.RoomMemberList:
41+
case RightPanelPhases.MemberList:
4642
return _t("member_list_back_action_label");
4743
case RightPanelPhases.ThreadView:
4844
return _t("thread_view_back_action_label");

src/stores/right-panel/action-handlers/View3pidInvite.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import { RightPanelPhases } from "../RightPanelStorePhases";
2020
export const onView3pidInvite = (payload: ActionPayload, rightPanelStore: RightPanelStore): void => {
2121
if (payload.event) {
2222
rightPanelStore.pushCard({
23-
phase: RightPanelPhases.Room3pidMemberInfo,
23+
phase: RightPanelPhases.ThreePidMemberInfo,
2424
state: { memberInfoEvent: payload.event },
2525
});
2626
} else {
27-
rightPanelStore.showOrHidePhase(RightPanelPhases.RoomMemberList);
27+
rightPanelStore.showOrHidePhase(RightPanelPhases.MemberList);
2828
}
2929
};

src/verification.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ function setRightPanel(state: IRightPanelCardState): void {
8181
} else {
8282
RightPanelStore.instance.setCards([
8383
{ phase: RightPanelPhases.RoomSummary },
84-
{ phase: RightPanelPhases.RoomMemberInfo, state: { member: state.member } },
84+
{ phase: RightPanelPhases.MemberInfo, state: { member: state.member } },
8585
{ phase: RightPanelPhases.EncryptionPanel, state },
8686
]);
8787
}

test/unit-tests/components/structures/RightPanel-test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ describe("RightPanel", () => {
9191
if (name !== "RightPanel.phases") return realGetValue(name, roomId);
9292
if (roomId === "r1") {
9393
return {
94-
history: [{ phase: RightPanelPhases.RoomMemberList }],
94+
history: [{ phase: RightPanelPhases.MemberList }],
9595
isOpen: true,
9696
};
9797
}
@@ -123,7 +123,7 @@ describe("RightPanel", () => {
123123
await rpsUpdated;
124124
await waitFor(() => expect(screen.queryByTestId("spinner")).not.toBeInTheDocument());
125125

126-
// room one will be in the RoomMemberList phase - confirm this is rendered
126+
// room one will be in the MemberList phase - confirm this is rendered
127127
expect(container.getElementsByClassName("mx_MemberList")).toHaveLength(1);
128128

129129
// wait for RPS room 2 updates to fire, then rerender

test/unit-tests/components/views/right_panel/RoomSummaryCard-test.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,7 @@ describe("<RoomSummaryCard />", () => {
254254

255255
fireEvent.click(getByText("People"));
256256

257-
expect(RightPanelStore.instance.pushCard).toHaveBeenCalledWith(
258-
{ phase: RightPanelPhases.RoomMemberList },
259-
true,
260-
);
257+
expect(RightPanelStore.instance.pushCard).toHaveBeenCalledWith({ phase: RightPanelPhases.MemberList }, true);
261258
});
262259

263260
it("opens room threads list on button click", () => {

test/unit-tests/components/views/right_panel/UserInfo-test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ describe("<UserInfo />", () => {
188188
const defaultProps = {
189189
user: defaultUser,
190190
// idk what is wrong with this type
191-
phase: RightPanelPhases.RoomMemberInfo as RightPanelPhases.RoomMemberInfo,
191+
phase: RightPanelPhases.MemberInfo as RightPanelPhases.MemberInfo,
192192
onClose: jest.fn(),
193193
};
194194

@@ -455,7 +455,7 @@ describe("<UserInfo />", () => {
455455
mockCrypto.getUserVerificationStatus.mockResolvedValue(new UserVerificationStatus(false, false, false));
456456

457457
const { container } = renderComponent({
458-
phase: RightPanelPhases.SpaceMemberInfo,
458+
phase: RightPanelPhases.MemberInfo,
459459
verificationRequest,
460460
room: mockRoom,
461461
});
@@ -649,7 +649,7 @@ describe("<UserInfo />", () => {
649649
mockClient.getDomain.mockReturnValue("example.com");
650650

651651
const { container } = renderComponent({
652-
phase: RightPanelPhases.RoomMemberInfo,
652+
phase: RightPanelPhases.MemberInfo,
653653
room: mockRoom,
654654
});
655655

test/unit-tests/components/views/rooms/PinnedMessageBanner-test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ describe("<PinnedMessageBanner />", () => {
224224
// The Right panel is opened on another card
225225
jest.spyOn(RightPanelStore.instance, "isOpenForRoom").mockReturnValue(true);
226226
jest.spyOn(RightPanelStore.instance, "currentCard", "get").mockReturnValue({
227-
phase: RightPanelPhases.RoomMemberList,
227+
phase: RightPanelPhases.MemberList,
228228
});
229229

230230
renderBanner();

test/unit-tests/components/views/rooms/RoomHeader-test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ describe("RoomHeader", () => {
158158

159159
fireEvent.click(facePile);
160160

161-
expect(setCardSpy).toHaveBeenCalledWith({ phase: RightPanelPhases.RoomMemberList });
161+
expect(setCardSpy).toHaveBeenCalledWith({ phase: RightPanelPhases.MemberList });
162162
});
163163

164164
it("has room info icon that opens the room info panel", async () => {

0 commit comments

Comments
 (0)