From 908de56c6da45f4a398c025c639935157b90dd28 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Thu, 2 Aug 2018 11:42:05 +0200 Subject: [PATCH] replace getMember(myId).membership with getMyMembership This works with rooms which haven't had their members loaded yet. --- src/RoomInvite.js | 3 +-- src/components/structures/RoomView.js | 3 ++- .../views/dialogs/ChatCreateOrReuseDialog.js | 6 +++--- src/components/views/rooms/MemberInfo.js | 11 ++++++----- src/components/views/rooms/RoomTile.js | 6 ++---- src/utils/WidgetUtils.js | 3 +-- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/RoomInvite.js b/src/RoomInvite.js index 3a9088e65f..a96d1b2f6b 100644 --- a/src/RoomInvite.js +++ b/src/RoomInvite.js @@ -194,8 +194,7 @@ function _getDirectMessageRooms(addr) { const rooms = dmRooms.filter((dmRoom) => { const room = MatrixClientPeg.get().getRoom(dmRoom); if (room) { - const me = room.getMember(MatrixClientPeg.get().credentials.userId); - return me && me.membership == 'join'; + return room.getMyMembership() === 'join'; } }); return rooms; diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index c742975377..5135936a28 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -759,7 +759,8 @@ module.exports = React.createClass({ _updateDMState() { const me = this.state.room.getMember(MatrixClientPeg.get().getUserId()); - if (!me || me.membership !== "join") { + const room = this.state.room; + if (room.getMyMembership() != "join") { return; } const roomId = this.state.room.roomId; diff --git a/src/components/views/dialogs/ChatCreateOrReuseDialog.js b/src/components/views/dialogs/ChatCreateOrReuseDialog.js index b7cf0f5a6e..550abe5299 100644 --- a/src/components/views/dialogs/ChatCreateOrReuseDialog.js +++ b/src/components/views/dialogs/ChatCreateOrReuseDialog.js @@ -54,8 +54,8 @@ export default class ChatCreateOrReuseDialog extends React.Component { for (const roomId of dmRooms) { const room = client.getRoom(roomId); if (room) { - const me = room.getMember(client.credentials.userId); - const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === "invite"; + const isInvite = room.getMyMembership() === "invite"; + const highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite; tiles.push( , ); diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 8b465cef9d..794e1e5cfd 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -774,15 +774,16 @@ module.exports = withMatrixClient(React.createClass({ for (const roomId of dmRooms) { const room = this.props.matrixClient.getRoom(roomId); if (room) { - const me = room.getMember(this.props.matrixClient.credentials.userId); - + const myMembership = room.getMyMembership(); + if (myMembership !== 'join') continue; + + const isInvite = myMembership === "invite"; // not a DM room if we have are not joined - if (!me.membership || me.membership !== 'join') continue; // not a DM room if they are not joined const them = this.props.member; if (!them.membership || them.membership !== 'join') continue; - const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite'; + const highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite; tiles.push( , ); diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index ee7f8a76c7..d73f9b5ccf 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -243,9 +243,7 @@ module.exports = React.createClass({ }, render: function() { - const myUserId = MatrixClientPeg.get().credentials.userId; - const me = this.props.room.currentState.members[myUserId]; - + const isInvite = this.props.room.getMyMembership() === "invite"; const notificationCount = this.state.notificationCount; // var highlightCount = this.props.room.getUnreadNotificationCount("highlight"); @@ -259,7 +257,7 @@ module.exports = React.createClass({ 'mx_RoomTile_unread': this.props.unread, 'mx_RoomTile_unreadNotify': notifBadges, 'mx_RoomTile_highlight': mentionBadges, - 'mx_RoomTile_invited': (me && me.membership === 'invite'), + 'mx_RoomTile_invited': isInvite, 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed, 'mx_RoomTile_noBadges': !badges, 'mx_RoomTile_transparent': this.props.transparent, diff --git a/src/utils/WidgetUtils.js b/src/utils/WidgetUtils.js index 008bed1005..b5a2ae31fb 100644 --- a/src/utils/WidgetUtils.js +++ b/src/utils/WidgetUtils.js @@ -77,8 +77,7 @@ export default class WidgetUtils { return false; } - const member = room.getMember(me); - if (!member || member.membership !== "join") { + if (room.getMyMembership() !== "join") { console.warn(`User ${me} is not in room ${roomId}`); return false; }