stream-chat-react 12.2.1 → 12.3.0

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.
@@ -83,10 +83,12 @@ const ThreadAdapter = ({ children }) => {
83
83
  useActiveThread({ activeThread });
84
84
  return React.createElement(ThreadProvider, { thread: activeThread }, children);
85
85
  };
86
- const selector = (nextValue) => [nextValue.unreadThreadCount];
86
+ const selector = ({ unreadThreadCount }) => ({
87
+ unreadThreadCount,
88
+ });
87
89
  const ChatViewSelector = () => {
88
90
  const { client } = useChatContext();
89
- const [unreadThreadCount] = useStateStore(client.threads.state, selector);
91
+ const { unreadThreadCount } = useStateStore(client.threads.state, selector);
90
92
  const { activeChatView, setActiveChatView } = useContext(ChatViewContext);
91
93
  return (React.createElement("div", { className: 'str-chat__chat-view__selector' },
92
94
  React.createElement("button", { "aria-selected": activeChatView === 'channels', className: 'str-chat__chat-view__selector-button', onPointerDown: () => setActiveChatView('channels'), role: 'tab' },
@@ -10,17 +10,17 @@ export const useDialog = ({ id }) => {
10
10
  };
11
11
  export const useDialogIsOpen = (id) => {
12
12
  const { dialogManager } = useDialogManager();
13
- const dialogIsOpenSelector = useCallback(({ dialogsById }) => [!!dialogsById[id]?.isOpen], [id]);
14
- return useStateStore(dialogManager.state, dialogIsOpenSelector)[0];
13
+ const dialogIsOpenSelector = useCallback(({ dialogsById }) => ({ isOpen: !!dialogsById[id]?.isOpen }), [id]);
14
+ return useStateStore(dialogManager.state, dialogIsOpenSelector).isOpen;
15
15
  };
16
- const openedDialogCountSelector = (nextValue) => [
17
- Object.values(nextValue.dialogsById).reduce((count, dialog) => {
16
+ const openedDialogCountSelector = (nextValue) => ({
17
+ openedDialogCount: Object.values(nextValue.dialogsById).reduce((count, dialog) => {
18
18
  if (dialog.isOpen)
19
19
  return count + 1;
20
20
  return count;
21
21
  }, 0),
22
- ];
22
+ });
23
23
  export const useOpenedDialogCount = () => {
24
24
  const { dialogManager } = useDialogManager();
25
- return useStateStore(dialogManager.state, openedDialogCountSelector)[0];
25
+ return useStateStore(dialogManager.state, openedDialogCountSelector).openedDialogCount;
26
26
  };
@@ -125,9 +125,12 @@ const MessageListWithContext = (props) => {
125
125
  // eslint-disable-next-line react-hooks/exhaustive-deps
126
126
  }, [highlightedMessageId]);
127
127
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
128
+ const dialogManagerId = threadList
129
+ ? 'message-list-dialog-manager-thread'
130
+ : 'message-list-dialog-manager';
128
131
  return (React.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } },
129
132
  React.createElement(MessageListMainPanel, null,
130
- React.createElement(DialogManagerProvider, { id: 'message-list-dialog-manager' },
133
+ React.createElement(DialogManagerProvider, { id: dialogManagerId },
131
134
  !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: channelUnreadUiState?.unread_messages })),
132
135
  React.createElement("div", { className: clsx(messageListClass, customClasses?.threadList), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, { className: 'str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore, threshold: loadMoreScrollThreshold, ...restInternalInfiniteScrollProps },
133
136
  React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
@@ -189,9 +189,12 @@ const VirtualizedMessageListWithContext = (props) => {
189
189
  }, [highlightedMessageId, processedMessages]);
190
190
  if (!processedMessages)
191
191
  return null;
192
+ const dialogManagerId = threadList
193
+ ? 'virtualized-message-list-dialog-manager-thread'
194
+ : 'virtualized-message-list-dialog-manager';
192
195
  return (React.createElement(React.Fragment, null,
193
196
  React.createElement(MessageListMainPanel, null,
194
- React.createElement(DialogManagerProvider, { id: 'virtualized-message-list-dialog-manager' },
197
+ React.createElement(DialogManagerProvider, { id: dialogManagerId },
195
198
  !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: channelUnreadUiState?.unread_messages })),
196
199
  React.createElement("div", { className: customClasses?.virtualizedMessageList || 'str-chat__virtual-list' },
197
200
  React.createElement(Virtuoso, { atBottomStateChange: atBottomStateChange, atBottomThreshold: 100, atTopStateChange: atTopStateChange, atTopThreshold: 100, className: 'str-chat__message-list-scroll', components: {
@@ -21,16 +21,16 @@ export const Thread = (props) => {
21
21
  // FIXME: TS is having trouble here as at least one of the two would always be defined
22
22
  React.createElement(ThreadInner, { ...props, key: `thread-${(thread ?? threadInstance)?.id}-${channel?.cid}` }));
23
23
  };
24
- const selector = (nextValue) => [
25
- nextValue.replies,
26
- nextValue.pagination.isLoadingPrev,
27
- nextValue.pagination.isLoadingNext,
28
- nextValue.parentMessage,
29
- ];
24
+ const selector = (nextValue) => ({
25
+ isLoadingNext: nextValue.pagination.isLoadingNext,
26
+ isLoadingPrev: nextValue.pagination.isLoadingPrev,
27
+ parentMessage: nextValue.parentMessage,
28
+ replies: nextValue.replies,
29
+ });
30
30
  const ThreadInner = (props) => {
31
31
  const { additionalMessageInputProps, additionalMessageListProps, additionalParentMessageProps, additionalVirtualizedMessageListProps, autoFocus = true, enableDateSeparator = false, Input: PropInput, Message: PropMessage, messageActions = Object.keys(MESSAGE_ACTIONS), virtualized, } = props;
32
32
  const threadInstance = useThreadContext();
33
- const [latestReplies, isLoadingPrev, isLoadingNext, parentMessage] = useStateStore(threadInstance?.state, selector) ?? [];
33
+ const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector) ?? {};
34
34
  const { thread, threadHasMore, threadLoadingMore, threadMessages = [], threadSuppressAutoscroll, } = useChannelStateContext('Thread');
35
35
  const { closeThread, loadMoreThread } = useChannelActionContext('Thread');
36
36
  const { customClasses } = useChatContext('Thread');
@@ -53,7 +53,7 @@ const ThreadInner = (props) => {
53
53
  loadingMoreNewer: isLoadingNext,
54
54
  loadMore: threadInstance.loadPrevPage,
55
55
  loadMoreNewer: threadInstance.loadNextPage,
56
- messages: latestReplies,
56
+ messages: replies,
57
57
  }
58
58
  : {
59
59
  hasMore: threadHasMore,
@@ -6,7 +6,7 @@ import { ThreadListUnseenThreadsBanner as DefaultThreadListUnseenThreadsBanner }
6
6
  import { ThreadListLoadingIndicator as DefaultThreadListLoadingIndicator } from './ThreadListLoadingIndicator';
7
7
  import { useChatContext, useComponentContext } from '../../../context';
8
8
  import { useStateStore } from '../../../store';
9
- const selector = (nextValue) => [nextValue.threads];
9
+ const selector = (nextValue) => ({ threads: nextValue.threads });
10
10
  const computeItemKey = (_, item) => item.id;
11
11
  export const useThreadList = () => {
12
12
  const { client } = useChatContext();
@@ -30,7 +30,7 @@ export const useThreadList = () => {
30
30
  export const ThreadList = ({ virtuosoProps }) => {
31
31
  const { client } = useChatContext();
32
32
  const { ThreadListItem = DefaultThreadListItem, ThreadListEmptyPlaceholder = DefaultThreadListEmptyPlaceholder, ThreadListLoadingIndicator = DefaultThreadListLoadingIndicator, ThreadListUnseenThreadsBanner = DefaultThreadListUnseenThreadsBanner, } = useComponentContext();
33
- const [threads] = useStateStore(client.threads.state, selector);
33
+ const { threads } = useStateStore(client.threads.state, selector);
34
34
  useThreadList();
35
35
  return (React.createElement("div", { className: 'str-chat__thread-list-container' },
36
36
  React.createElement(ThreadListUnseenThreadsBanner, null),
@@ -42,14 +42,14 @@ export const ThreadListItemUI = (props) => {
42
42
  const { client } = useChatContext();
43
43
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
44
  const thread = useThreadListItemContext();
45
- const selector = useCallback((nextValue) => [
46
- nextValue.replies.at(-1),
47
- (client.userID && nextValue.read[client.userID]?.unreadMessageCount) || 0,
48
- nextValue.parentMessage,
49
- nextValue.channel,
50
- nextValue.deletedAt,
51
- ], [client]);
52
- const [latestReply, ownUnreadMessageCount, parentMessage, channel, deletedAt] = useStateStore(thread.state, selector);
45
+ const selector = useCallback((nextValue) => ({
46
+ channel: nextValue.channel,
47
+ deletedAt: nextValue.deletedAt,
48
+ latestReply: nextValue.replies.at(-1),
49
+ ownUnreadMessageCount: (client.userID && nextValue.read[client.userID]?.unreadMessageCount) || 0,
50
+ parentMessage: nextValue.parentMessage,
51
+ }), [client]);
52
+ const { channel, deletedAt, latestReply, ownUnreadMessageCount, parentMessage } = useStateStore(thread.state, selector);
53
53
  const { displayTitle: channelDisplayTitle } = useChannelPreviewInfo({ channel });
54
54
  const { activeThread, setActiveThread } = useThreadsViewContext();
55
55
  const avatarProps = deletedAt ? null : latestReply?.user;
@@ -2,11 +2,13 @@ import React from 'react';
2
2
  import { LoadingIndicator as DefaultLoadingIndicator } from '../../Loading';
3
3
  import { useChatContext, useComponentContext } from '../../../context';
4
4
  import { useStateStore } from '../../../store';
5
- const selector = (nextValue) => [nextValue.pagination.isLoadingNext];
5
+ const selector = (nextValue) => ({
6
+ isLoadingNext: nextValue.pagination.isLoadingNext,
7
+ });
6
8
  export const ThreadListLoadingIndicator = () => {
7
9
  const { LoadingIndicator = DefaultLoadingIndicator } = useComponentContext();
8
10
  const { client } = useChatContext();
9
- const [isLoadingNext] = useStateStore(client.threads.state, selector);
11
+ const { isLoadingNext } = useStateStore(client.threads.state, selector);
10
12
  if (!isLoadingNext)
11
13
  return null;
12
14
  return (React.createElement("div", { className: 'str-chat__thread-list-loading-indicator' },
@@ -2,10 +2,12 @@ import React from 'react';
2
2
  import { Icon } from '../icons';
3
3
  import { useChatContext } from '../../../context';
4
4
  import { useStateStore } from '../../../store';
5
- const selector = (nextValue) => [nextValue.unseenThreadIds];
5
+ const selector = (nextValue) => ({
6
+ unseenThreadIds: nextValue.unseenThreadIds,
7
+ });
6
8
  export const ThreadListUnseenThreadsBanner = () => {
7
9
  const { client } = useChatContext();
8
- const [unseenThreadIds] = useStateStore(client.threads.state, selector);
10
+ const { unseenThreadIds } = useStateStore(client.threads.state, selector);
9
11
  if (!unseenThreadIds.length)
10
12
  return null;
11
13
  return (React.createElement("div", { className: 'str-chat__unseen-threads-banner' },
@@ -18026,20 +18026,20 @@ var useDialog = ({ id }) => {
18026
18026
  var useDialogIsOpen = (id) => {
18027
18027
  const { dialogManager } = useDialogManager();
18028
18028
  const dialogIsOpenSelector = (0, import_react7.useCallback)(
18029
- ({ dialogsById }) => [!!dialogsById[id]?.isOpen],
18029
+ ({ dialogsById }) => ({ isOpen: !!dialogsById[id]?.isOpen }),
18030
18030
  [id]
18031
18031
  );
18032
- return useStateStore(dialogManager.state, dialogIsOpenSelector)[0];
18032
+ return useStateStore(dialogManager.state, dialogIsOpenSelector).isOpen;
18033
18033
  };
18034
- var openedDialogCountSelector = (nextValue) => [
18035
- Object.values(nextValue.dialogsById).reduce((count, dialog) => {
18034
+ var openedDialogCountSelector = (nextValue) => ({
18035
+ openedDialogCount: Object.values(nextValue.dialogsById).reduce((count, dialog) => {
18036
18036
  if (dialog.isOpen) return count + 1;
18037
18037
  return count;
18038
18038
  }, 0)
18039
- ];
18039
+ });
18040
18040
  var useOpenedDialogCount = () => {
18041
18041
  const { dialogManager } = useDialogManager();
18042
- return useStateStore(dialogManager.state, openedDialogCountSelector)[0];
18042
+ return useStateStore(dialogManager.state, openedDialogCountSelector).openedDialogCount;
18043
18043
  };
18044
18044
 
18045
18045
  // src/components/Dialog/DialogPortal.tsx
@@ -39353,10 +39353,12 @@ var ThreadAdapter = ({ children }) => {
39353
39353
  useActiveThread({ activeThread });
39354
39354
  return /* @__PURE__ */ import_react89.default.createElement(ThreadProvider, { thread: activeThread }, children);
39355
39355
  };
39356
- var selector = (nextValue) => [nextValue.unreadThreadCount];
39356
+ var selector = ({ unreadThreadCount }) => ({
39357
+ unreadThreadCount
39358
+ });
39357
39359
  var ChatViewSelector = () => {
39358
39360
  const { client } = useChatContext();
39359
- const [unreadThreadCount] = useStateStore(client.threads.state, selector);
39361
+ const { unreadThreadCount } = useStateStore(client.threads.state, selector);
39360
39362
  const { activeChatView, setActiveChatView } = (0, import_react89.useContext)(ChatViewContext);
39361
39363
  return /* @__PURE__ */ import_react89.default.createElement("div", { className: "str-chat__chat-view__selector" }, /* @__PURE__ */ import_react89.default.createElement(
39362
39364
  "button",
@@ -39419,16 +39421,16 @@ var ThreadListItemUI = (props) => {
39419
39421
  const { client } = useChatContext();
39420
39422
  const thread = useThreadListItemContext();
39421
39423
  const selector6 = (0, import_react90.useCallback)(
39422
- (nextValue) => [
39423
- nextValue.replies.at(-1),
39424
- client.userID && nextValue.read[client.userID]?.unreadMessageCount || 0,
39425
- nextValue.parentMessage,
39426
- nextValue.channel,
39427
- nextValue.deletedAt
39428
- ],
39424
+ (nextValue) => ({
39425
+ channel: nextValue.channel,
39426
+ deletedAt: nextValue.deletedAt,
39427
+ latestReply: nextValue.replies.at(-1),
39428
+ ownUnreadMessageCount: client.userID && nextValue.read[client.userID]?.unreadMessageCount || 0,
39429
+ parentMessage: nextValue.parentMessage
39430
+ }),
39429
39431
  [client]
39430
39432
  );
39431
- const [latestReply, ownUnreadMessageCount, parentMessage, channel, deletedAt] = useStateStore(
39433
+ const { channel, deletedAt, latestReply, ownUnreadMessageCount, parentMessage } = useStateStore(
39432
39434
  thread.state,
39433
39435
  selector6
39434
39436
  );
@@ -39467,10 +39469,12 @@ var ThreadListEmptyPlaceholder = () => /* @__PURE__ */ import_react92.default.cr
39467
39469
 
39468
39470
  // src/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.tsx
39469
39471
  var import_react93 = __toESM(require("react"));
39470
- var selector2 = (nextValue) => [nextValue.unseenThreadIds];
39472
+ var selector2 = (nextValue) => ({
39473
+ unseenThreadIds: nextValue.unseenThreadIds
39474
+ });
39471
39475
  var ThreadListUnseenThreadsBanner = () => {
39472
39476
  const { client } = useChatContext();
39473
- const [unseenThreadIds] = useStateStore(client.threads.state, selector2);
39477
+ const { unseenThreadIds } = useStateStore(client.threads.state, selector2);
39474
39478
  if (!unseenThreadIds.length) return null;
39475
39479
  return /* @__PURE__ */ import_react93.default.createElement("div", { className: "str-chat__unseen-threads-banner" }, unseenThreadIds.length, " unread threads", /* @__PURE__ */ import_react93.default.createElement(
39476
39480
  "button",
@@ -39484,17 +39488,19 @@ var ThreadListUnseenThreadsBanner = () => {
39484
39488
 
39485
39489
  // src/components/Threads/ThreadList/ThreadListLoadingIndicator.tsx
39486
39490
  var import_react94 = __toESM(require("react"));
39487
- var selector3 = (nextValue) => [nextValue.pagination.isLoadingNext];
39491
+ var selector3 = (nextValue) => ({
39492
+ isLoadingNext: nextValue.pagination.isLoadingNext
39493
+ });
39488
39494
  var ThreadListLoadingIndicator = () => {
39489
39495
  const { LoadingIndicator: LoadingIndicator2 = LoadingIndicator } = useComponentContext();
39490
39496
  const { client } = useChatContext();
39491
- const [isLoadingNext] = useStateStore(client.threads.state, selector3);
39497
+ const { isLoadingNext } = useStateStore(client.threads.state, selector3);
39492
39498
  if (!isLoadingNext) return null;
39493
39499
  return /* @__PURE__ */ import_react94.default.createElement("div", { className: "str-chat__thread-list-loading-indicator" }, /* @__PURE__ */ import_react94.default.createElement(LoadingIndicator2, null));
39494
39500
  };
39495
39501
 
39496
39502
  // src/components/Threads/ThreadList/ThreadList.tsx
39497
- var selector4 = (nextValue) => [nextValue.threads];
39503
+ var selector4 = (nextValue) => ({ threads: nextValue.threads });
39498
39504
  var computeItemKey = (_, item2) => item2.id;
39499
39505
  var useThreadList = () => {
39500
39506
  const { client } = useChatContext();
@@ -39523,7 +39529,7 @@ var ThreadList = ({ virtuosoProps }) => {
39523
39529
  ThreadListLoadingIndicator: ThreadListLoadingIndicator2 = ThreadListLoadingIndicator,
39524
39530
  ThreadListUnseenThreadsBanner: ThreadListUnseenThreadsBanner2 = ThreadListUnseenThreadsBanner
39525
39531
  } = useComponentContext();
39526
- const [threads] = useStateStore(client.threads.state, selector4);
39532
+ const { threads } = useStateStore(client.threads.state, selector4);
39527
39533
  useThreadList();
39528
39534
  return /* @__PURE__ */ import_react95.default.createElement("div", { className: "str-chat__thread-list-container" }, /* @__PURE__ */ import_react95.default.createElement(ThreadListUnseenThreadsBanner2, null), /* @__PURE__ */ import_react95.default.createElement(
39529
39535
  import_react_virtuoso.Virtuoso,
@@ -44267,7 +44273,8 @@ var MessageListWithContext = (props) => {
44267
44273
  }
44268
44274
  }, [highlightedMessageId]);
44269
44275
  const showEmptyStateIndicator = elements.length === 0 && !threadList;
44270
- return /* @__PURE__ */ import_react176.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react176.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react176.default.createElement(DialogManagerProvider, { id: "message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react176.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react176.default.createElement(
44276
+ const dialogManagerId = threadList ? "message-list-dialog-manager-thread" : "message-list-dialog-manager";
44277
+ return /* @__PURE__ */ import_react176.default.createElement(MessageListContextProvider, { value: { listElement, scrollToBottom } }, /* @__PURE__ */ import_react176.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react176.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react176.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react176.default.createElement(
44271
44278
  "div",
44272
44279
  {
44273
44280
  className: (0, import_clsx38.default)(messageListClass, customClasses?.threadList),
@@ -44980,7 +44987,8 @@ var VirtualizedMessageListWithContext = (props) => {
44980
44987
  };
44981
44988
  }, [highlightedMessageId, processedMessages]);
44982
44989
  if (!processedMessages) return null;
44983
- return /* @__PURE__ */ import_react186.default.createElement(import_react186.default.Fragment, null, /* @__PURE__ */ import_react186.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react186.default.createElement(DialogManagerProvider, { id: "virtualized-message-list-dialog-manager" }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react186.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react186.default.createElement("div", { className: customClasses?.virtualizedMessageList || "str-chat__virtual-list" }, /* @__PURE__ */ import_react186.default.createElement(
44990
+ const dialogManagerId = threadList ? "virtualized-message-list-dialog-manager-thread" : "virtualized-message-list-dialog-manager";
44991
+ return /* @__PURE__ */ import_react186.default.createElement(import_react186.default.Fragment, null, /* @__PURE__ */ import_react186.default.createElement(MessageListMainPanel2, null, /* @__PURE__ */ import_react186.default.createElement(DialogManagerProvider, { id: dialogManagerId }, !threadList && showUnreadMessagesNotification && /* @__PURE__ */ import_react186.default.createElement(UnreadMessagesNotification2, { unreadCount: channelUnreadUiState?.unread_messages }), /* @__PURE__ */ import_react186.default.createElement("div", { className: customClasses?.virtualizedMessageList || "str-chat__virtual-list" }, /* @__PURE__ */ import_react186.default.createElement(
44984
44992
  import_react_virtuoso3.Virtuoso,
44985
44993
  {
44986
44994
  atBottomStateChange,
@@ -47787,12 +47795,12 @@ var Thread = (props) => {
47787
47795
  /* @__PURE__ */ import_react222.default.createElement(ThreadInner, { ...props, key: `thread-${(thread ?? threadInstance)?.id}-${channel?.cid}` })
47788
47796
  );
47789
47797
  };
47790
- var selector5 = (nextValue) => [
47791
- nextValue.replies,
47792
- nextValue.pagination.isLoadingPrev,
47793
- nextValue.pagination.isLoadingNext,
47794
- nextValue.parentMessage
47795
- ];
47798
+ var selector5 = (nextValue) => ({
47799
+ isLoadingNext: nextValue.pagination.isLoadingNext,
47800
+ isLoadingPrev: nextValue.pagination.isLoadingPrev,
47801
+ parentMessage: nextValue.parentMessage,
47802
+ replies: nextValue.replies
47803
+ });
47796
47804
  var ThreadInner = (props) => {
47797
47805
  const {
47798
47806
  additionalMessageInputProps,
@@ -47807,7 +47815,7 @@ var ThreadInner = (props) => {
47807
47815
  virtualized
47808
47816
  } = props;
47809
47817
  const threadInstance = useThreadContext();
47810
- const [latestReplies, isLoadingPrev, isLoadingNext, parentMessage] = useStateStore(threadInstance?.state, selector5) ?? [];
47818
+ const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector5) ?? {};
47811
47819
  const {
47812
47820
  thread,
47813
47821
  threadHasMore,
@@ -47839,7 +47847,7 @@ var ThreadInner = (props) => {
47839
47847
  loadingMoreNewer: isLoadingNext,
47840
47848
  loadMore: threadInstance.loadPrevPage,
47841
47849
  loadMoreNewer: threadInstance.loadNextPage,
47842
- messages: latestReplies
47850
+ messages: replies
47843
47851
  } : {
47844
47852
  hasMore: threadHasMore,
47845
47853
  loadingMore: threadLoadingMore,