From 9f26cca2562e22fe97b1f3ef6b53514e3ec6c04f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 24 Sep 2021 14:35:00 +0100 Subject: [PATCH] Fix the User View Extreme confusion between users and members, and presumably we were passing one as the other and they were similar enough that it worked. UserView still makes fake member objects but this at least fixes the user view in the right panel. Fixes https://github.com/vector-im/element-web/issues/19158 --- src/components/structures/RightPanel.tsx | 9 ++++----- src/components/structures/UserView.tsx | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/structures/RightPanel.tsx b/src/components/structures/RightPanel.tsx index f626bb67d96..5d9d2a0b6a6 100644 --- a/src/components/structures/RightPanel.tsx +++ b/src/components/structures/RightPanel.tsx @@ -18,7 +18,6 @@ limitations under the License. import React from 'react'; import { Room } from "matrix-js-sdk/src/models/room"; import { RoomState } from "matrix-js-sdk/src/models/room-state"; -import { User } from "matrix-js-sdk/src/models/user"; import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { VerificationRequest } from "matrix-js-sdk/src/crypto/verification/request/VerificationRequest"; @@ -59,7 +58,7 @@ import { SetRightPanelPhasePayload } from '../../dispatcher/payloads/SetRightPan interface IProps { room?: Room; // if showing panels for a given room, this is set groupId?: string; // if showing panels for a given group, this is set - user?: User; // used if we know the user ahead of opening the panel + member?: RoomMember; // used if we know the room member ahead of opening the panel resizeNotifier: ResizeNotifier; permalinkCreator?: RoomPermalinkCreator; e2eStatus?: E2EStatus; @@ -100,10 +99,10 @@ export default class RightPanel extends React.Component { // Helper function to split out the logic for getPhaseFromProps() and the constructor // as both are called at the same time in the constructor. - private getUserForPanel() { + private getUserForPanel(): RoomMember { if (this.state && this.state.member) return this.state.member; const lastParams = RightPanelStore.getSharedInstance().roomPanelPhaseParams; - return this.props.user || lastParams['member']; + return this.props.member || lastParams['member']; } // gets the current phase from the props and also maybe the store @@ -225,7 +224,7 @@ export default class RightPanel extends React.Component { // XXX: There are three different ways of 'closing' this panel depending on what state // things are in... this knows far more than it should do about the state of the rest // of the app and is generally a bit silly. - if (this.props.user) { + if (this.props.member) { // If we have a user prop then we're displaying a user from the 'user' page type // in LoggedInView, so need to change the page type to close the panel (we switch // to the home page which is not obviously the correct thing to do, but I'm not sure diff --git a/src/components/structures/UserView.tsx b/src/components/structures/UserView.tsx index 0b686995fde..32168e8449e 100644 --- a/src/components/structures/UserView.tsx +++ b/src/components/structures/UserView.tsx @@ -86,8 +86,8 @@ export default class UserView extends React.Component { public render(): JSX.Element { if (this.state.loading) { return ; - } else if (this.state.member?.user) { - const panel = ; + } else if (this.state.member) { + const panel = ; return ( );