From 2ad9b17ad74d82351aadda0f3de9dbcd702d2f41 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Wed, 19 Aug 2020 16:10:07 +0200 Subject: [PATCH] no need to update members, as all the info is in the member event as we won't store deviceTrackingStatus in the member --- src/matrix/room/RoomMember.js | 57 +++++-------------- .../room/timeline/persistence/SyncWriter.js | 30 ++-------- 2 files changed, 19 insertions(+), 68 deletions(-) diff --git a/src/matrix/room/RoomMember.js b/src/matrix/room/RoomMember.js index f6e5237d..7ac0141d 100644 --- a/src/matrix/room/RoomMember.js +++ b/src/matrix/room/RoomMember.js @@ -5,44 +5,25 @@ export class RoomMember { this._data = data; } - static async updateOrCreateMember(roomId, memberData, memberEvent) { - if (!memberEvent) { - return; - } - - const userId = memberEvent.state_key; - const {content} = memberEvent; - - if (!userId || !content) { - return; - } - - let member; - if (memberData) { - member = new RoomMember(memberData); - member.updateWithMemberEvent(memberEvent); - } else { - member = RoomMember.fromMemberEvent(this._roomId, memberEvent); - } - return member; - } - static fromMemberEvent(roomId, memberEvent) { const userId = memberEvent && memberEvent.state_key; if (!userId) { return; } - - const member = new RoomMember({ - roomId: roomId, - userId: userId, - avatarUrl: null, - displayName: null, - membership: null, - deviceTrackingStatus: 0, + const {content} = memberEvent; + const membership = content?.membership; + const avatarUrl = content?.avatar_url; + const displayName = content?.displayname; + if (typeof membership !== "string") { + return; + } + return new RoomMember({ + roomId, + userId, + membership, + avatarUrl, + displayName, }); - member.updateWithMemberEvent(memberEvent); - return member; } get roomId() { @@ -53,17 +34,7 @@ export class RoomMember { return this._data.userId; } - updateWithMemberEvent(event) { - if (!event || !event.content) { - return; - } - const {content} = event; - this._data.membership = content.membership; - this._data.avatarUrl = content.avatar_url; - this._data.displayName = content.displayname; - } - serialize() { - return this.data; + return this._data; } } diff --git a/src/matrix/room/timeline/persistence/SyncWriter.js b/src/matrix/room/timeline/persistence/SyncWriter.js index 51858164..62a2fb7e 100644 --- a/src/matrix/room/timeline/persistence/SyncWriter.js +++ b/src/matrix/room/timeline/persistence/SyncWriter.js @@ -98,34 +98,14 @@ export class SyncWriter { return {oldFragment, newFragment}; } - async _writeMember(event, txn) { - if (!event) { - return; - } - - const userId = event.state_key; - const {content} = event; - - if (!userId || !content) { - return; - } - - let member; - if (memberData) { - member = new RoomMember(memberData); - member.updateWithMemberEvent(event); - } else { - member = RoomMember.fromMemberEvent(this._roomId, event); - } - } - - async _writeStateEvent(event, txn) { + _writeStateEvent(event, txn) { if (event.type === MEMBER_EVENT_TYPE) { - const userId = event && event.state_key; + const userId = event.state_key; if (userId) { - const memberData = await txn.roomMembers.get(this._roomId, userId); - const member = updateOrCreateMember(this._roomId, memberData, event); + const member = RoomMember.fromMemberEvent(this._roomId, event); if (member) { + // as this is sync, we can just replace the member + // if it is there already txn.roomMembers.set(member.serialize()); } }