stream-chat 9.41.0 → 9.41.1

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.
@@ -748,6 +748,7 @@ export declare class Channel {
748
748
  _checkInitialized(): void;
749
749
  _initializeState(state: ChannelAPIResponse, messageSetToAddToIfDoesNotExist?: MessageSetType): {
750
750
  messageSet: import("./types").MessageSet;
751
+ filteredMessageIds: string[];
751
752
  };
752
753
  _extendEventWithOwnReactions(event: Event): void;
753
754
  _hydrateMembers({ members, overrideCurrentState, }: {
@@ -67,6 +67,7 @@ export declare class ChannelState {
67
67
  */
68
68
  addMessageSorted(newMessage: MessageResponse | LocalMessage, timestampChanged?: boolean, addIfDoesNotExist?: boolean, messageSetToAddToIfDoesNotExist?: MessageSetType): {
69
69
  messageSet: MessageSet;
70
+ filteredMessageIds: string[];
70
71
  };
71
72
  /**
72
73
  * Takes the message object, parses the dates, sets `__html`
@@ -87,6 +88,7 @@ export declare class ChannelState {
87
88
  */
88
89
  addMessagesSorted(newMessages: (MessageResponse | LocalMessage)[], timestampChanged?: boolean, initializing?: boolean, addIfDoesNotExist?: boolean, messageSetToAddToIfDoesNotExist?: MessageSetType): {
89
90
  messageSet: MessageSet;
91
+ filteredMessageIds: string[];
90
92
  };
91
93
  /**
92
94
  * addPinnedMessages - adds messages in pinnedMessages property
@@ -223,6 +223,7 @@ type MessagePaginationUpdatedParams = {
223
223
  parentSet: MessageSet;
224
224
  requestedPageSize: number;
225
225
  returnedPage: MessageResponse[];
226
+ filteredReturnedPage: MessageResponse[];
226
227
  logger?: Logger;
227
228
  messagePaginationOptions?: MessagePaginationOptions;
228
229
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-chat",
3
- "version": "9.41.0",
3
+ "version": "9.41.1",
4
4
  "description": "JS SDK for the Stream Chat API",
5
5
  "homepage": "https://getstream.io/chat/",
6
6
  "author": {
package/src/channel.ts CHANGED
@@ -1581,7 +1581,10 @@ export class Channel {
1581
1581
  }
1582
1582
 
1583
1583
  // add any messages to our channel state
1584
- const { messageSet } = this._initializeState(state, messageSetToAddToIfDoesNotExist);
1584
+ const { messageSet, filteredMessageIds } = this._initializeState(
1585
+ state,
1586
+ messageSetToAddToIfDoesNotExist,
1587
+ );
1585
1588
  messageSet.pagination = {
1586
1589
  ...messageSet.pagination,
1587
1590
  ...messageSetPagination({
@@ -1590,6 +1593,9 @@ export class Channel {
1590
1593
  requestedPageSize:
1591
1594
  options?.messages?.limit ?? DEFAULT_QUERY_CHANNEL_MESSAGE_LIST_PAGE_SIZE,
1592
1595
  returnedPage: state.messages,
1596
+ filteredReturnedPage: state.messages.filter(
1597
+ (m) => !filteredMessageIds.includes(m.id),
1598
+ ),
1593
1599
  logger: this.getClient().logger,
1594
1600
  }),
1595
1601
  };
@@ -2368,7 +2374,7 @@ export class Channel {
2368
2374
  if (!this.state.messages) {
2369
2375
  this.state.initMessages();
2370
2376
  }
2371
- const { messageSet } = this.state.addMessagesSorted(
2377
+ const { messageSet, filteredMessageIds } = this.state.addMessagesSorted(
2372
2378
  messages,
2373
2379
  false,
2374
2380
  true,
@@ -2434,6 +2440,7 @@ export class Channel {
2434
2440
 
2435
2441
  return {
2436
2442
  messageSet,
2443
+ filteredMessageIds,
2437
2444
  };
2438
2445
  }
2439
2446
 
@@ -217,9 +217,12 @@ export class ChannelState {
217
217
  messageSetToAddToIfDoesNotExist,
218
218
  );
219
219
 
220
+ const filteredMessageIds: string[] = [];
221
+
220
222
  for (let i = 0; i < messagesToAdd.length; i += 1) {
221
223
  const isFromShadowBannedUser = messagesToAdd[i].shadowed;
222
- if (isFromShadowBannedUser) {
224
+ if (isFromShadowBannedUser && addIfDoesNotExist) {
225
+ filteredMessageIds.push(messagesToAdd[i].id);
223
226
  continue;
224
227
  }
225
228
  // If message is already formatted we can skip the tasks below
@@ -306,6 +309,7 @@ export class ChannelState {
306
309
 
307
310
  return {
308
311
  messageSet: this.messageSets[targetMessageSetIndex],
312
+ filteredMessageIds,
309
313
  };
310
314
  }
311
315
 
package/src/client.ts CHANGED
@@ -2040,12 +2040,17 @@ export class StreamChat {
2040
2040
  c.push_preferences = channelState.push_preferences;
2041
2041
 
2042
2042
  let updatedMessagesSet;
2043
+ let filteredMessageIds: string[] = [];
2043
2044
  if (skipInitialization === undefined) {
2044
- const { messageSet } = c._initializeState(channelState, 'latest');
2045
+ const { messageSet, filteredMessageIds: _filteredMessageIds } =
2046
+ c._initializeState(channelState, 'latest');
2047
+ filteredMessageIds = _filteredMessageIds;
2045
2048
  updatedMessagesSet = messageSet;
2046
2049
  } else if (!skipInitialization.includes(channelState.channel.id)) {
2047
2050
  c.state.clearMessages();
2048
- const { messageSet } = c._initializeState(channelState, 'latest');
2051
+ const { messageSet, filteredMessageIds: _filteredMessageIds } =
2052
+ c._initializeState(channelState, 'latest');
2053
+ filteredMessageIds = _filteredMessageIds;
2049
2054
  updatedMessagesSet = messageSet;
2050
2055
  }
2051
2056
 
@@ -2058,6 +2063,9 @@ export class StreamChat {
2058
2063
  queryChannelsOptions?.message_limit ||
2059
2064
  DEFAULT_QUERY_CHANNELS_MESSAGE_LIST_PAGE_SIZE,
2060
2065
  returnedPage: channelState.messages,
2066
+ filteredReturnedPage: channelState.messages.filter(
2067
+ (m) => !filteredMessageIds.includes(m.id),
2068
+ ),
2061
2069
  logger: this.logger,
2062
2070
  }),
2063
2071
  };
package/src/utils.ts CHANGED
@@ -811,6 +811,7 @@ type MessagePaginationUpdatedParams = {
811
811
  parentSet: MessageSet;
812
812
  requestedPageSize: number;
813
813
  returnedPage: MessageResponse[];
814
+ filteredReturnedPage: MessageResponse[];
814
815
  logger?: Logger;
815
816
  messagePaginationOptions?: MessagePaginationOptions;
816
817
  };
@@ -849,6 +850,7 @@ const messagePaginationCreatedAtAround = ({
849
850
  parentSet,
850
851
  requestedPageSize,
851
852
  returnedPage,
853
+ filteredReturnedPage,
852
854
  messagePaginationOptions,
853
855
  }: MessagePaginationUpdatedParams) => {
854
856
  const newPagination = { ...parentSet.pagination };
@@ -892,9 +894,14 @@ const messagePaginationCreatedAtAround = ({
892
894
  hasNext = hasPrev = false;
893
895
  updateHasPrev = updateHasNext = true;
894
896
  } else {
897
+ const [firstFilteredPageMsg, lastFilteredPageMsg] = [
898
+ filteredReturnedPage[0],
899
+ filteredReturnedPage.slice(-1)[0],
900
+ ];
895
901
  const [firstPageMsgIsFirstInSet, lastPageMsgIsLastInSet] = [
896
- firstPageMsg?.id && firstPageMsg.id === parentSet.messages[0]?.id,
897
- lastPageMsg?.id && lastPageMsg.id === parentSet.messages.slice(-1)[0]?.id,
902
+ firstFilteredPageMsg?.id && firstFilteredPageMsg.id === parentSet.messages[0]?.id,
903
+ lastFilteredPageMsg?.id &&
904
+ lastFilteredPageMsg.id === parentSet.messages.slice(-1)[0]?.id,
898
905
  ];
899
906
  updateHasPrev = firstPageMsgIsFirstInSet;
900
907
  updateHasNext = lastPageMsgIsLastInSet;
@@ -920,6 +927,7 @@ const messagePaginationIdAround = ({
920
927
  parentSet,
921
928
  requestedPageSize,
922
929
  returnedPage,
930
+ filteredReturnedPage,
923
931
  messagePaginationOptions,
924
932
  }: MessagePaginationUpdatedParams) => {
925
933
  const newPagination = { ...parentSet.pagination };
@@ -928,10 +936,13 @@ const messagePaginationIdAround = ({
928
936
  let hasPrev;
929
937
  let hasNext;
930
938
 
931
- const [firstPageMsg, lastPageMsg] = [returnedPage[0], returnedPage.slice(-1)[0]];
939
+ const [firstFilteredPageMsg, lastFilteredPageMsg] = [
940
+ filteredReturnedPage[0],
941
+ filteredReturnedPage.slice(-1)[0],
942
+ ];
932
943
  const [firstPageMsgIsFirstInSet, lastPageMsgIsLastInSet] = [
933
- firstPageMsg?.id === parentSet.messages[0]?.id,
934
- lastPageMsg?.id === parentSet.messages.slice(-1)[0]?.id,
944
+ firstFilteredPageMsg?.id === parentSet.messages[0]?.id,
945
+ lastFilteredPageMsg?.id === parentSet.messages.slice(-1)[0]?.id,
935
946
  ];
936
947
  let updateHasPrev = firstPageMsgIsFirstInSet;
937
948
  let updateHasNext = lastPageMsgIsLastInSet;
@@ -974,6 +985,7 @@ const messagePaginationLinear = ({
974
985
  parentSet,
975
986
  requestedPageSize,
976
987
  returnedPage,
988
+ filteredReturnedPage,
977
989
  messagePaginationOptions,
978
990
  }: MessagePaginationUpdatedParams) => {
979
991
  const newPagination = { ...parentSet.pagination };
@@ -981,10 +993,14 @@ const messagePaginationLinear = ({
981
993
  let hasPrev;
982
994
  let hasNext;
983
995
 
984
- const [firstPageMsg, lastPageMsg] = [returnedPage[0], returnedPage.slice(-1)[0]];
996
+ const [firstFilteredPageMsg, lastFilteredPageMsg] = [
997
+ filteredReturnedPage[0],
998
+ filteredReturnedPage.slice(-1)[0],
999
+ ];
985
1000
  const [firstPageMsgIsFirstInSet, lastPageMsgIsLastInSet] = [
986
- firstPageMsg?.id && firstPageMsg.id === parentSet.messages[0]?.id,
987
- lastPageMsg?.id && lastPageMsg.id === parentSet.messages.slice(-1)[0]?.id,
1001
+ firstFilteredPageMsg?.id && firstFilteredPageMsg.id === parentSet.messages[0]?.id,
1002
+ lastFilteredPageMsg?.id &&
1003
+ lastFilteredPageMsg.id === parentSet.messages.slice(-1)[0]?.id,
988
1004
  ];
989
1005
 
990
1006
  const queriedNextMessages =
@@ -1028,9 +1044,9 @@ const messagePaginationLinear = ({
1028
1044
  };
1029
1045
 
1030
1046
  export const messageSetPagination = (params: MessagePaginationUpdatedParams) => {
1031
- const messagesFilteredLocally = params.returnedPage.filter(({ shadowed }) => shadowed);
1032
1047
  if (
1033
- params.parentSet.messages.length + messagesFilteredLocally.length <
1048
+ params.parentSet.messages.length +
1049
+ (params.returnedPage.length - params.filteredReturnedPage.length) <
1034
1050
  params.returnedPage.length
1035
1051
  ) {
1036
1052
  params.logger?.(