From 3e05e4fff056f75560b19d61c210aa21567773d2 Mon Sep 17 00:00:00 2001 From: Anton Arnautov Date: Mon, 14 Apr 2025 14:45:27 +0200 Subject: [PATCH] "undefine" null values (pinned_at, archived_at) --- src/channel.ts | 28 ++++++++++++++++++------- test/unit/channel.js | 49 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/channel.ts b/src/channel.ts index 910a81722..996d5818a 100644 --- a/src/channel.ts +++ b/src/channel.ts @@ -1618,22 +1618,36 @@ export class Channel { + expect(channel.state.members).to.be.empty; + expect(channel.state.membership).to.be.empty; + + const currentMember = generateMember({ + user, + pinned_at: new Date().toISOString(), + archived_at: new Date().toISOString(), + }); + + const otherMember = generateMember({ + user: { id: 'user-other' }, + }); + + channel._handleChannelEvent({ + type: 'member.added', + user, + member: currentMember, + }); + + expect(channel.state.members).to.have.property(user.id); + expect(channel.state.members[user.id]).to.deep.equal(currentMember); + expect(channel.state.membership).to.deep.equal(currentMember); + + channel._handleChannelEvent({ + type: 'member.added', + user, + member: otherMember, + }); + + expect(channel.state.members).to.have.keys([user.id, otherMember.user.id]); + expect(channel.state.members[otherMember.user.id]).to.deep.equal(otherMember); + expect(channel.state.members[user.id]).to.deep.equal(currentMember); + expect(channel.state.membership).to.deep.equal(currentMember); + + const currentMemberUpdated = generateMember({ user, pinned_at: null, archived_at: null }); + + channel._handleChannelEvent({ + type: 'member.updated', + user, + member: currentMemberUpdated, + }); + + expect(channel.state.membership).to.not.have.keys(['pinned_at', 'archived_at']); + expect(channel.state.membership).to.equal(channel.state.members[user.id]); + }); + it('message.new does not reset the unreadCount for current user messages', function () { channel.state.unreadCount = 100; channel._handleChannelEvent({