stream-chat 8.40.2 → 8.40.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/channel.ts CHANGED
@@ -37,6 +37,7 @@ import {
37
37
  MuteChannelAPIResponse,
38
38
  PartialUpdateChannel,
39
39
  PartialUpdateChannelAPIResponse,
40
+ PartialUpdateMember,
40
41
  PinnedMessagePaginationOptions,
41
42
  PinnedMessagesSort,
42
43
  QueryMembersOptions,
@@ -299,6 +300,25 @@ export class Channel<StreamChatGenerics extends ExtendableGenerics = DefaultGene
299
300
  );
300
301
  }
301
302
 
303
+ /**
304
+ * partialUpdateMember - Partial update a member
305
+ *
306
+ * @param {string} user_id member user id
307
+ * @param {PartialUpdateMember<StreamChatGenerics>} updates
308
+ *
309
+ * @return {Promise<ChannelMemberResponse<StreamChatGenerics>>} Updated member
310
+ */
311
+ async partialUpdateMember(user_id: string, updates: PartialUpdateMember<StreamChatGenerics>) {
312
+ if (!user_id) {
313
+ throw Error('Please specify the user id');
314
+ }
315
+
316
+ return await this.getClient().patch<ChannelMemberResponse<StreamChatGenerics>>(
317
+ this._channelURL() + `/member/${encodeURIComponent(user_id)}`,
318
+ updates,
319
+ );
320
+ }
321
+
302
322
  /**
303
323
  * sendReaction - Send a reaction about a message
304
324
  *
@@ -1633,12 +1653,7 @@ export class Channel<StreamChatGenerics extends ExtendableGenerics = DefaultGene
1633
1653
  }
1634
1654
 
1635
1655
  if (state.members) {
1636
- this.state.members = state.members.reduce((acc, member) => {
1637
- if (member.user) {
1638
- acc[member.user.id] = member;
1639
- }
1640
- return acc;
1641
- }, {} as ChannelState<StreamChatGenerics>['members']);
1656
+ this._hydrateMembers(state.members);
1642
1657
  }
1643
1658
 
1644
1659
  return {
@@ -1656,6 +1671,15 @@ export class Channel<StreamChatGenerics extends ExtendableGenerics = DefaultGene
1656
1671
  }
1657
1672
  }
1658
1673
 
1674
+ _hydrateMembers(members: ChannelMemberResponse<StreamChatGenerics>[]) {
1675
+ this.state.members = members.reduce((acc, member) => {
1676
+ if (member.user) {
1677
+ acc[member.user.id] = member;
1678
+ }
1679
+ return acc;
1680
+ }, {} as ChannelState<StreamChatGenerics>['members']);
1681
+ }
1682
+
1659
1683
  _disconnect() {
1660
1684
  this._client.logger('info', `channel:disconnect() - Disconnecting the channel ${this.cid}`, {
1661
1685
  tags: ['connection', 'channel'],
package/src/thread.ts CHANGED
@@ -74,9 +74,17 @@ export class Thread<SCG extends ExtendableGenerics = DefaultGenerics> {
74
74
  private failedRepliesMap: Map<string, FormatMessageResponse<SCG>> = new Map();
75
75
 
76
76
  constructor({ client, threadData }: { client: StreamChat<SCG>; threadData: ThreadResponse<SCG> }) {
77
+ const channel = client.channel(threadData.channel.type, threadData.channel.id, {
78
+ name: threadData.channel.name,
79
+ });
80
+
81
+ if (threadData.channel.members) {
82
+ channel._hydrateMembers(threadData.channel.members);
83
+ }
84
+
77
85
  this.state = new StateStore<ThreadState<SCG>>({
78
86
  active: false,
79
- channel: client.channel(threadData.channel.type, threadData.channel.id),
87
+ channel,
80
88
  createdAt: new Date(threadData.created_at),
81
89
  deletedAt: threadData.deleted_at ? new Date(threadData.deleted_at) : null,
82
90
  isLoading: false,
package/src/types.ts CHANGED
@@ -2472,6 +2472,11 @@ export type PartialUpdateChannel<StreamChatGenerics extends ExtendableGenerics =
2472
2472
  unset?: Array<keyof ChannelResponse<StreamChatGenerics>>;
2473
2473
  };
2474
2474
 
2475
+ export type PartialUpdateMember<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
2476
+ set?: Partial<ChannelMemberResponse<StreamChatGenerics>>;
2477
+ unset?: Array<keyof ChannelMemberResponse<StreamChatGenerics>>;
2478
+ };
2479
+
2475
2480
  export type PartialUserUpdate<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
2476
2481
  id: string;
2477
2482
  set?: Partial<UserResponse<StreamChatGenerics>>;
package/src/utils.ts CHANGED
@@ -384,8 +384,10 @@ export function addToMessageList<T extends FormatMessageResponse>(
384
384
  }
385
385
 
386
386
  // for empty list just concat and return unless it's an update or deletion
387
- if (!newMessages.length && addMessageToList) {
387
+ if (newMessages.length === 0 && addMessageToList) {
388
388
  return newMessages.concat(newMessage);
389
+ } else if (newMessages.length === 0) {
390
+ return newMessages;
389
391
  }
390
392
 
391
393
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -396,6 +398,8 @@ export function addToMessageList<T extends FormatMessageResponse>(
396
398
  // if message is newer than last item in the list concat and return unless it's an update or deletion
397
399
  if (messageIsNewest && addMessageToList) {
398
400
  return newMessages.concat(newMessage);
401
+ } else if (newMessages.length === 0) {
402
+ return newMessages;
399
403
  }
400
404
 
401
405
  // find the closest index to push the new message