From 8d03799ffe60f248e289ba51b885a1e22d43cb7d Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Tue, 8 Sep 2020 16:51:55 +0100
Subject: [PATCH 1/2] Fix create-react-class regression.
Can't call setState in c'tor
---
src/components/structures/auth/Login.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/components/structures/auth/Login.js b/src/components/structures/auth/Login.js
index 53769fb5a6..a20bf0dd0a 100644
--- a/src/components/structures/auth/Login.js
+++ b/src/components/structures/auth/Login.js
@@ -124,7 +124,11 @@ export default class LoginComponent extends React.Component {
'm.login.cas': () => this._renderSsoStep("cas"),
'm.login.sso': () => this._renderSsoStep("sso"),
};
+ }
+ // TODO: [REACT-WARNING] Replace with appropriate lifecycle event
+ // eslint-disable-next-line camelcase
+ UNSAFE_componentWillMount() {
this._initLoginLogic();
}
From 27a65fff2b194aed3773b48b9f89d9c2d8dca92d Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Tue, 8 Sep 2020 17:34:32 +0100
Subject: [PATCH 2/2] null-guard roomId in RightPanel and pass Room to UserView
---
src/components/structures/RightPanel.js | 13 +++++++------
src/components/views/right_panel/UserInfo.js | 8 +++-----
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index 11416b29fb..4dd2a7f75e 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -225,11 +225,12 @@ export default class RightPanel extends React.Component {
const GroupRoomInfo = sdk.getComponent('groups.GroupRoomInfo');
let panel =
;
+ const roomId = this.props.room ? this.props.room.roomId : undefined;
switch (this.state.phase) {
case RightPanelPhases.RoomMemberList:
- if (this.props.room.roomId) {
- panel = ;
+ if (roomId) {
+ panel = ;
}
break;
case RightPanelPhases.GroupMemberList:
@@ -244,8 +245,8 @@ export default class RightPanel extends React.Component {
case RightPanelPhases.EncryptionPanel:
panel = ;
break;
case RightPanelPhases.Room3pidMemberInfo:
- panel = ;
+ panel = ;
break;
case RightPanelPhases.GroupMemberInfo:
panel = ;
break;
case RightPanelPhases.FilePanel:
- panel = ;
+ panel = ;
break;
}
diff --git a/src/components/views/right_panel/UserInfo.js b/src/components/views/right_panel/UserInfo.js
index 518bb133ce..b98211e5c8 100644
--- a/src/components/views/right_panel/UserInfo.js
+++ b/src/components/views/right_panel/UserInfo.js
@@ -20,7 +20,7 @@ limitations under the License.
import React, {useCallback, useMemo, useState, useEffect, useContext} from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
-import {Group, RoomMember, User} from 'matrix-js-sdk';
+import {Group, RoomMember, User, Room} from 'matrix-js-sdk';
import dis from '../../../dispatcher/dispatcher';
import Modal from '../../../Modal';
import * as sdk from '../../../index';
@@ -1471,11 +1471,9 @@ const UserInfoHeader = ({onClose, member, e2eStatus}) => {
;
};
-const UserInfo = ({user, groupId, roomId, onClose, phase=RightPanelPhases.RoomMemberInfo, ...props}) => {
+const UserInfo = ({user, groupId, room, onClose, phase=RightPanelPhases.RoomMemberInfo, ...props}) => {
const cli = useContext(MatrixClientContext);
- // Load room if we are given a room id and memoize it - this can be undefined for User Info/Group Member Info
- const room = useMemo(() => roomId ? cli.getRoom(roomId) : null, [cli, roomId]);
// fetch latest room member if we have a room, so we don't show historical information, falling back to user
const member = useMemo(() => room ? (room.getMember(user.userId) || user) : user, [room, user]);
@@ -1529,7 +1527,7 @@ UserInfo.propTypes = {
]).isRequired,
group: PropTypes.instanceOf(Group),
groupId: PropTypes.string,
- roomId: PropTypes.string,
+ room: PropTypes.instanceOf(Room),
onClose: PropTypes.func,
};