stream-chat-react 11.9.0 → 11.11.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.
- package/dist/{Window-5e0717c0.js → Window-194c5448.js} +2094 -33
- package/dist/browser.full-bundle.js +2150 -65
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +19 -10
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +11 -10
- package/dist/components/Chat/hooks/useCreateChatClient.d.ts +10 -0
- package/dist/components/Chat/hooks/useCreateChatClient.d.ts.map +1 -0
- package/dist/components/Chat/hooks/useCreateChatClient.js +31 -0
- package/dist/components/Chat/index.d.ts +1 -0
- package/dist/components/Chat/index.d.ts.map +1 -1
- package/dist/components/Chat/index.js +1 -0
- package/dist/components/Emojis/index.cjs.js +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +9 -13
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +2 -2
- package/dist/components/Message/types.d.ts +5 -0
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.d.ts +2 -2
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +12 -12
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -2
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +7 -3
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
- package/dist/components/Reactions/ReactionsList.d.ts +5 -0
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +2 -2
- package/dist/components/Reactions/ReactionsListModal.d.ts +3 -2
- package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsListModal.js +16 -6
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +5 -2
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.js +10 -3
- package/dist/components/Reactions/types.d.ts +4 -1
- package/dist/components/Reactions/types.d.ts.map +1 -1
- package/dist/constants/limits.d.ts +1 -0
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +1 -0
- package/dist/context/MessageContext.d.ts +5 -0
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/index.cjs.js +60 -32
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -3
|
@@ -16,6 +16,7 @@ import { useChannelActionContext, } from '../../context/ChannelActionContext';
|
|
|
16
16
|
import { useChannelStateContext, } from '../../context/ChannelStateContext';
|
|
17
17
|
import { useChatContext } from '../../context/ChatContext';
|
|
18
18
|
import { useComponentContext } from '../../context/ComponentContext';
|
|
19
|
+
import { DEFAULT_NEXT_CHANNEL_PAGE_SIZE } from '../../constants/limits';
|
|
19
20
|
function captureResizeObserverExceededError(e) {
|
|
20
21
|
if (e.message === 'ResizeObserver loop completed with undelivered notifications.' ||
|
|
21
22
|
e.message === 'ResizeObserver loop limit exceeded') {
|
|
@@ -47,11 +48,11 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
|
|
|
47
48
|
}
|
|
48
49
|
var VirtualizedMessageListWithContext = function (props) {
|
|
49
50
|
var _a, _b;
|
|
50
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ?
|
|
51
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
|
|
51
52
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
52
53
|
_h = props.overscan,
|
|
53
54
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
54
|
-
overscan = _h === void 0 ? 0 : _h, read = props.read, _j = props.returnAllReadData, returnAllReadData = _j === void 0 ? false : _j, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _k = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _k === void 0 ? false : _k, _l = props.separateGiphyPreview, separateGiphyPreview = _l === void 0 ? false : _l, _m = props.shouldGroupByUser, shouldGroupByUser = _m === void 0 ? false : _m, showUnreadNotificationAlways = props.showUnreadNotificationAlways, _o = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _o === void 0 ? 'smooth' : _o, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
|
|
55
|
+
overscan = _h === void 0 ? 0 : _h, read = props.read, _j = props.returnAllReadData, returnAllReadData = _j === void 0 ? false : _j, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _k = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _k === void 0 ? false : _k, _l = props.separateGiphyPreview, separateGiphyPreview = _l === void 0 ? false : _l, _m = props.shouldGroupByUser, shouldGroupByUser = _m === void 0 ? false : _m, showUnreadNotificationAlways = props.showUnreadNotificationAlways, sortReactionDetails = props.sortReactionDetails, sortReactions = props.sortReactions, _o = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _o === void 0 ? 'smooth' : _o, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
|
|
55
56
|
var virtuosoComponentsFromProps = additionalVirtuosoProps.components, overridingVirtuosoProps = __rest(additionalVirtuosoProps, ["components"]);
|
|
56
57
|
// Stops errors generated from react-virtuoso to bubble up
|
|
57
58
|
// to Sentry or other tracking tools.
|
|
@@ -179,8 +180,9 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
179
180
|
}
|
|
180
181
|
};
|
|
181
182
|
var atTopStateChange = function (isAtTop) {
|
|
182
|
-
if (isAtTop)
|
|
183
|
+
if (isAtTop) {
|
|
183
184
|
loadMore === null || loadMore === void 0 ? void 0 : loadMore(messageLimit);
|
|
185
|
+
}
|
|
184
186
|
};
|
|
185
187
|
useEffect(function () {
|
|
186
188
|
var scrollTimeout;
|
|
@@ -223,6 +225,8 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
223
225
|
ownMessagesReadByOthers: ownMessagesReadByOthers,
|
|
224
226
|
processedMessages: processedMessages,
|
|
225
227
|
shouldGroupByUser: shouldGroupByUser,
|
|
228
|
+
sortReactionDetails: sortReactionDetails,
|
|
229
|
+
sortReactions: sortReactions,
|
|
226
230
|
threadList: threadList,
|
|
227
231
|
unreadMessageCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages,
|
|
228
232
|
UnreadMessagesSeparator: UnreadMessagesSeparator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,EAAU,aAAa,EAAuB,MAAM,eAAe,CAAC;AAI3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAElF;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAEhE;AAED,eAAO,MAAM,wBAAwB,0JAGuC,IAAI,uGAG7D,SAAS,WAAW,CAAC,EAAE,UAUjC,CAAC;AAEV,KAAK,4BAA4B,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,IAAI;;;;;;;0EAyBhB,CAAC;AACF,eAAO,MAAM,MAAM,gLAgBlB,CAAC;AACF,eAAO,MAAM,gBAAgB,yKAe5B,CAAC;AACF,eAAO,MAAM,MAAM,kHAKlB,CAAC;AACF,eAAO,MAAM,eAAe,oGAGX,MAAM,SACd,WAAW,
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,EAAU,aAAa,EAAuB,MAAM,eAAe,CAAC;AAI3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAElF;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAEhE;AAED,eAAO,MAAM,wBAAwB,0JAGuC,IAAI,uGAG7D,SAAS,WAAW,CAAC,EAAE,UAUjC,CAAC;AAEV,KAAK,4BAA4B,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,IAAI;;;;;;;0EAyBhB,CAAC;AACF,eAAO,MAAM,MAAM,gLAgBlB,CAAC;AACF,eAAO,MAAM,gBAAgB,yKAe5B,CAAC;AACF,eAAO,MAAM,MAAM,kHAKlB,CAAC;AACF,eAAO,MAAM,eAAe,oGAGX,MAAM,SACd,WAAW,mFAmFnB,CAAC"}
|
|
@@ -62,7 +62,7 @@ export var Footer = function () {
|
|
|
62
62
|
};
|
|
63
63
|
export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
64
64
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
65
|
-
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
65
|
+
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
66
66
|
var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
67
67
|
if (customMessageRenderer) {
|
|
68
68
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
@@ -85,7 +85,7 @@ export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
85
85
|
var isLastReadMessage = message.id === lastReadMessageId;
|
|
86
86
|
var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || unreadMessageCount > 0); // unread count can be 0 if the user marks unread only own messages
|
|
87
87
|
return (React.createElement(React.Fragment, null,
|
|
88
|
-
React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [] }),
|
|
88
|
+
React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
|
|
89
89
|
showUnreadSeparator && (React.createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
90
90
|
React.createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
|
|
91
91
|
};
|
|
@@ -3,6 +3,7 @@ import type { ReactionResponse } from 'stream-chat';
|
|
|
3
3
|
import type { ReactEventHandler } from '../Message/types';
|
|
4
4
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
5
5
|
import type { ReactionOptions } from './reactionOptions';
|
|
6
|
+
import type { ReactionDetailsComparator, ReactionsComparator } from './types';
|
|
6
7
|
import { MessageContextValue } from '../../context';
|
|
7
8
|
export type ReactionsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageContextValue<StreamChatGenerics>, 'handleFetchReactions'>> & {
|
|
8
9
|
/** Custom on click handler for an individual reaction, defaults to `onReactionListClick` from the `MessageContext` */
|
|
@@ -17,6 +18,10 @@ export type ReactionsListProps<StreamChatGenerics extends DefaultStreamChatGener
|
|
|
17
18
|
reactions?: ReactionResponse<StreamChatGenerics>[];
|
|
18
19
|
/** Display the reactions in the list in reverse order, defaults to false */
|
|
19
20
|
reverse?: boolean;
|
|
21
|
+
/** Comparator function to sort the list of reacted users, defaults to alphabetical order */
|
|
22
|
+
sortReactionDetails?: ReactionDetailsComparator;
|
|
23
|
+
/** Comparator function to sort reactions, defaults to alphabetical order */
|
|
24
|
+
sortReactions?: ReactionsComparator;
|
|
20
25
|
};
|
|
21
26
|
/**
|
|
22
27
|
* Component that displays a list of reactions on a message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactionsList.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAyB,MAAM,eAAe,CAAC;AAG3E,MAAM,MAAM,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG;IACnF,sHAAsH;IACtH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,iFAAiF;IACjF,aAAa,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,+DAA+D;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACnD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4FAA4F;IAC5F,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,4EAA4E;IAC5E,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAgFF;;GAEG;AACH,eAAO,MAAM,aAAa,+JAAwE,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { ReactionsListModal } from './ReactionsListModal';
|
|
|
6
6
|
import { useTranslationContext } from '../../context';
|
|
7
7
|
import { MAX_MESSAGE_REACTIONS_TO_FETCH } from '../Message/hooks';
|
|
8
8
|
var UnMemoizedReactionsList = function (props) {
|
|
9
|
-
var handleFetchReactions = props.handleFetchReactions, _a = props.reverse, reverse = _a === void 0 ? false : _a, rest = __rest(props, ["handleFetchReactions", "reverse"]);
|
|
9
|
+
var handleFetchReactions = props.handleFetchReactions, _a = props.reverse, reverse = _a === void 0 ? false : _a, sortReactionDetails = props.sortReactionDetails, rest = __rest(props, ["handleFetchReactions", "reverse", "sortReactionDetails"]);
|
|
10
10
|
var _b = useProcessReactions(rest), existingReactions = _b.existingReactions, hasReactions = _b.hasReactions, totalReactionCount = _b.totalReactionCount;
|
|
11
11
|
var _c = useState(null), selectedReactionType = _c[0], setSelectedReactionType = _c[1];
|
|
12
12
|
var t = useTranslationContext('ReactionsList').t;
|
|
@@ -36,7 +36,7 @@ var UnMemoizedReactionsList = function (props) {
|
|
|
36
36
|
}),
|
|
37
37
|
React.createElement("li", null,
|
|
38
38
|
React.createElement("span", { className: 'str-chat__reaction-list--counter' }, totalReactionCount)))),
|
|
39
|
-
React.createElement(ReactionsListModal, { handleFetchReactions: handleFetchReactions, onClose: function () { return setSelectedReactionType(null); }, onSelectedReactionTypeChange: setSelectedReactionType, open: selectedReactionType !== null, reactions: existingReactions, selectedReactionType: selectedReactionType })));
|
|
39
|
+
React.createElement(ReactionsListModal, { handleFetchReactions: handleFetchReactions, onClose: function () { return setSelectedReactionType(null); }, onSelectedReactionTypeChange: setSelectedReactionType, open: selectedReactionType !== null, reactions: existingReactions, selectedReactionType: selectedReactionType, sortReactionDetails: sortReactionDetails })));
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Component that displays a list of reactions on a message.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ReactionDetailsComparator, ReactionSummary } from './types';
|
|
2
3
|
import { ModalProps } from '../Modal';
|
|
3
|
-
import { ReactionSummary } from './types';
|
|
4
4
|
import { MessageContextValue } from '../../context';
|
|
5
5
|
import { DefaultStreamChatGenerics } from '../../types/types';
|
|
6
6
|
type ReactionsListModalProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ModalProps & Partial<Pick<MessageContextValue<StreamChatGenerics>, 'handleFetchReactions'>> & {
|
|
7
7
|
reactions: ReactionSummary[];
|
|
8
8
|
selectedReactionType: string | null;
|
|
9
9
|
onSelectedReactionTypeChange?: (reactionType: string) => void;
|
|
10
|
+
sortReactionDetails?: ReactionDetailsComparator;
|
|
10
11
|
};
|
|
11
|
-
export declare function ReactionsListModal({ handleFetchReactions, onSelectedReactionTypeChange, reactions, selectedReactionType, ...modalProps }: ReactionsListModalProps): React.JSX.Element;
|
|
12
|
+
export declare function ReactionsListModal({ handleFetchReactions, onSelectedReactionTypeChange, reactions, selectedReactionType, sortReactionDetails: propSortReactionDetails, ...modalProps }: ReactionsListModalProps): React.JSX.Element;
|
|
12
13
|
export {};
|
|
13
14
|
//# sourceMappingURL=ReactionsListModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionsListModal.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsListModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,
|
|
1
|
+
{"version":3,"file":"ReactionsListModal.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/ReactionsListModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1E,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAI7C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,uBAAuB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,UAAU,GACZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG;IAC/E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4BAA4B,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CACjD,CAAC;AAQJ,wBAAgB,kBAAkB,CAAC,EACjC,oBAAoB,EACpB,4BAA4B,EAC5B,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EAAE,uBAAuB,EAC5C,GAAG,UAAU,EACd,EAAE,uBAAuB,qBAgFzB"}
|
|
@@ -5,24 +5,34 @@ import { Modal } from '../Modal';
|
|
|
5
5
|
import { useFetchReactions } from './hooks/useFetchReactions';
|
|
6
6
|
import { LoadingIndicator } from '../Loading';
|
|
7
7
|
import { Avatar } from '../Avatar';
|
|
8
|
+
import { useMessageContext } from '../../context';
|
|
9
|
+
var defaultSortReactionDetails = function (a, b) {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f;
|
|
11
|
+
var aName = (_b = (_a = a.user) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = a.user) === null || _c === void 0 ? void 0 : _c.id;
|
|
12
|
+
var bName = (_e = (_d = b.user) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : (_f = b.user) === null || _f === void 0 ? void 0 : _f.id;
|
|
13
|
+
return aName ? (bName ? aName.localeCompare(bName, 'en') : -1) : 1;
|
|
14
|
+
};
|
|
8
15
|
export function ReactionsListModal(_a) {
|
|
9
|
-
var _b;
|
|
10
|
-
var handleFetchReactions = _a.handleFetchReactions, onSelectedReactionTypeChange = _a.onSelectedReactionTypeChange, reactions = _a.reactions, selectedReactionType = _a.selectedReactionType, modalProps = __rest(_a, ["handleFetchReactions", "onSelectedReactionTypeChange", "reactions", "selectedReactionType"]);
|
|
16
|
+
var _b, _c;
|
|
17
|
+
var handleFetchReactions = _a.handleFetchReactions, onSelectedReactionTypeChange = _a.onSelectedReactionTypeChange, reactions = _a.reactions, selectedReactionType = _a.selectedReactionType, propSortReactionDetails = _a.sortReactionDetails, modalProps = __rest(_a, ["handleFetchReactions", "onSelectedReactionTypeChange", "reactions", "selectedReactionType", "sortReactionDetails"]);
|
|
11
18
|
var selectedReaction = reactions.find(function (_a) {
|
|
12
19
|
var reactionType = _a.reactionType;
|
|
13
20
|
return reactionType === selectedReactionType;
|
|
14
21
|
});
|
|
15
22
|
var SelectedEmojiComponent = (_b = selectedReaction === null || selectedReaction === void 0 ? void 0 : selectedReaction.EmojiComponent) !== null && _b !== void 0 ? _b : null;
|
|
16
|
-
var
|
|
23
|
+
var _d = useFetchReactions({
|
|
17
24
|
handleFetchReactions: handleFetchReactions,
|
|
18
25
|
shouldFetch: modalProps.open,
|
|
19
|
-
}), areReactionsLoading =
|
|
26
|
+
}), areReactionsLoading = _d.isLoading, allReactions = _d.reactions;
|
|
27
|
+
var contextSortReactionDetails = useMessageContext('ReactionsListModal').sortReactionDetails;
|
|
28
|
+
var sortReactionDetails = (_c = propSortReactionDetails !== null && propSortReactionDetails !== void 0 ? propSortReactionDetails : contextSortReactionDetails) !== null && _c !== void 0 ? _c : defaultSortReactionDetails;
|
|
20
29
|
var currentReactions = useMemo(function () {
|
|
21
30
|
if (!selectedReactionType) {
|
|
22
31
|
return [];
|
|
23
32
|
}
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
var unsortedCurrentReactions = allReactions.filter(function (reaction) { return reaction.type === selectedReactionType && reaction.user; });
|
|
34
|
+
return unsortedCurrentReactions.sort(sortReactionDetails);
|
|
35
|
+
}, [allReactions, selectedReactionType, sortReactionDetails]);
|
|
26
36
|
return (React.createElement(Modal, __assign({}, modalProps),
|
|
27
37
|
React.createElement("div", { className: 'str-chat__message-reactions-details', "data-testid": 'reactions-list-modal' },
|
|
28
38
|
React.createElement("div", { className: 'str-chat__message-reactions-details-reaction-types' }, reactions.map(function (_a) {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { ReactionsListProps } from '../ReactionsList';
|
|
2
2
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
3
|
-
import { ReactionSummary } from '../types';
|
|
3
|
+
import type { ReactionsComparator, ReactionSummary } from '../types';
|
|
4
4
|
type SharedReactionListProps = 'own_reactions' | 'reaction_counts' | 'reactionOptions' | 'reactions';
|
|
5
|
-
type UseProcessReactionsParams = Pick<ReactionsListProps, SharedReactionListProps
|
|
5
|
+
type UseProcessReactionsParams = Pick<ReactionsListProps, SharedReactionListProps> & {
|
|
6
|
+
sortReactions?: ReactionsComparator;
|
|
7
|
+
};
|
|
8
|
+
export declare const defaultReactionsSort: ReactionsComparator;
|
|
6
9
|
export declare const useProcessReactions: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(params: UseProcessReactionsParams) => {
|
|
7
10
|
existingReactions: ReactionSummary[];
|
|
8
11
|
hasReactions: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProcessReactions.d.ts","sourceRoot":"","sources":["../../../../src/components/Reactions/hooks/useProcessReactions.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"useProcessReactions.d.ts","sourceRoot":"","sources":["../../../../src/components/Reactions/hooks/useProcessReactions.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErE,KAAK,uBAAuB,GACxB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,CAAC;AAEhB,KAAK,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,GAAG;IACnF,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,mBACiB,CAAC;AAErD,eAAO,MAAM,mBAAmB,6FAGtB,yBAAyB;;;;CAiGlC,CAAC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { useComponentContext, useMessageContext } from '../../../context';
|
|
3
|
+
export var defaultReactionsSort = function (a, b) {
|
|
4
|
+
return a.reactionType.localeCompare(b.reactionType, 'en');
|
|
5
|
+
};
|
|
3
6
|
export var useProcessReactions = function (params) {
|
|
4
|
-
var
|
|
5
|
-
var
|
|
7
|
+
var _a;
|
|
8
|
+
var propOwnReactions = params.own_reactions, propReactionCounts = params.reaction_counts, propReactionOptions = params.reactionOptions, propReactions = params.reactions, propSortReactions = params.sortReactions;
|
|
9
|
+
var _b = useMessageContext('useProcessReactions'), message = _b.message, contextSortReactions = _b.sortReactions;
|
|
6
10
|
var contextReactionOptions = useComponentContext('useProcessReactions').reactionOptions;
|
|
7
11
|
var reactionOptions = propReactionOptions !== null && propReactionOptions !== void 0 ? propReactionOptions : contextReactionOptions;
|
|
12
|
+
var sortReactions = (_a = propSortReactions !== null && propSortReactions !== void 0 ? propSortReactions : contextSortReactions) !== null && _a !== void 0 ? _a : defaultReactionsSort;
|
|
8
13
|
var latestReactions = propReactions || message.latest_reactions;
|
|
9
14
|
var ownReactions = propOwnReactions || (message === null || message === void 0 ? void 0 : message.own_reactions);
|
|
10
15
|
var reactionCounts = propReactionCounts || message.reaction_counts;
|
|
@@ -31,7 +36,7 @@ export var useProcessReactions = function (params) {
|
|
|
31
36
|
if (!reactionCounts) {
|
|
32
37
|
return [];
|
|
33
38
|
}
|
|
34
|
-
|
|
39
|
+
var unsortedReactions = Object.entries(reactionCounts).flatMap(function (_a) {
|
|
35
40
|
var reactionType = _a[0], reactionCount = _a[1];
|
|
36
41
|
if (reactionCount === 0 || !isSupportedReaction(reactionType)) {
|
|
37
42
|
return [];
|
|
@@ -46,12 +51,14 @@ export var useProcessReactions = function (params) {
|
|
|
46
51
|
},
|
|
47
52
|
];
|
|
48
53
|
});
|
|
54
|
+
return unsortedReactions.sort(sortReactions);
|
|
49
55
|
}, [
|
|
50
56
|
getEmojiByReactionType,
|
|
51
57
|
getLatestReactedUserNames,
|
|
52
58
|
isOwnReaction,
|
|
53
59
|
isSupportedReaction,
|
|
54
60
|
reactionCounts,
|
|
61
|
+
sortReactions,
|
|
55
62
|
]);
|
|
56
63
|
var hasReactions = existingReactions.length > 0;
|
|
57
64
|
var totalReactionCount = useMemo(function () { return existingReactions.reduce(function (total, _a) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { ReactionResponse } from 'stream-chat';
|
|
2
3
|
export interface ReactionSummary {
|
|
3
4
|
EmojiComponent: ComponentType | null;
|
|
4
5
|
isOwnReaction: boolean;
|
|
@@ -6,4 +7,6 @@ export interface ReactionSummary {
|
|
|
6
7
|
reactionCount: number;
|
|
7
8
|
reactionType: string;
|
|
8
9
|
}
|
|
10
|
+
export type ReactionsComparator = (a: ReactionSummary, b: ReactionSummary) => number;
|
|
11
|
+
export type ReactionDetailsComparator = (a: ReactionResponse, b: ReactionResponse) => number;
|
|
9
12
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Reactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,MAAM,CAAC;AAErF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
|
|
2
2
|
export declare const DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
|
|
3
3
|
export declare const DEFAULT_THREAD_PAGE_SIZE = 50;
|
|
4
|
+
export declare const DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
|
|
4
5
|
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kCAAkC,MAAM,CAAC"}
|
package/dist/constants/limits.js
CHANGED
|
@@ -8,6 +8,7 @@ import type { ReactEventHandler } from '../components/Message/types';
|
|
|
8
8
|
import type { MessageActionsArray } from '../components/Message/utils';
|
|
9
9
|
import type { MessageInputProps } from '../components/MessageInput/MessageInput';
|
|
10
10
|
import type { GroupStyle } from '../components/MessageList/utils';
|
|
11
|
+
import type { ReactionDetailsComparator, ReactionsComparator } from '../components/Reactions/types';
|
|
11
12
|
import type { RenderTextOptions } from '../components/Message/renderText';
|
|
12
13
|
import type { DefaultStreamChatGenerics, UnknownType } from '../types/types';
|
|
13
14
|
export type CustomMessageActions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
@@ -105,6 +106,10 @@ export type MessageContextValue<StreamChatGenerics extends DefaultStreamChatGene
|
|
|
105
106
|
readBy?: UserResponse<StreamChatGenerics>[];
|
|
106
107
|
/** Custom function to render message text content, defaults to the renderText function: [utils](https://github.com/GetStream/stream-chat-react/blob/master/src/utils.tsx) */
|
|
107
108
|
renderText?: (text?: string, mentioned_users?: UserResponse<StreamChatGenerics>[], options?: RenderTextOptions) => JSX.Element | null;
|
|
109
|
+
/** Comparator function to sort the list of reacted users, defaults to alphabetical order */
|
|
110
|
+
sortReactionDetails?: ReactionDetailsComparator;
|
|
111
|
+
/** Comparator function to sort reactions, defaults to alphabetical order */
|
|
112
|
+
sortReactions?: ReactionsComparator;
|
|
108
113
|
/** Whether or not the Message is in a Thread */
|
|
109
114
|
threadList?: boolean;
|
|
110
115
|
/** render HTML instead of markdown. Posting HTML is only allowed server-side */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageContext.d.ts","sourceRoot":"","sources":["../../src/context/MessageContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageContext.d.ts","sourceRoot":"","sources":["../../src/context/MessageContext.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Window = require('./Window-
|
|
5
|
+
var Window = require('./Window-194c5448.js');
|
|
6
6
|
var React = require('react');
|
|
7
|
+
var streamChat = require('stream-chat');
|
|
7
8
|
var reactVirtuoso = require('react-virtuoso');
|
|
8
9
|
var throttle = require('lodash.throttle');
|
|
9
10
|
require('emoji-regex');
|
|
@@ -13,7 +14,6 @@ require('@braintree/sanitize-url');
|
|
|
13
14
|
require('react-image-gallery');
|
|
14
15
|
require('react-dom');
|
|
15
16
|
require('react-fast-compare');
|
|
16
|
-
require('stream-chat');
|
|
17
17
|
require('lodash.debounce');
|
|
18
18
|
require('dayjs');
|
|
19
19
|
require('dayjs/plugin/calendar');
|
|
@@ -521,13 +521,14 @@ var mousewheelListener = function (event) {
|
|
|
521
521
|
}
|
|
522
522
|
};
|
|
523
523
|
var InfiniteScroll = function (props) {
|
|
524
|
-
var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ?
|
|
524
|
+
var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = Window.__rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
|
|
525
525
|
var loadNextPageFn = loadNextPage || loadMoreNewer;
|
|
526
526
|
var loadPreviousPageFn = loadPreviousPage || loadMore;
|
|
527
527
|
var hasNextPageFlag = hasNextPage || hasMoreNewer;
|
|
528
528
|
var hasPreviousPageFlag = hasPreviousPage || hasMore;
|
|
529
529
|
var scrollComponent = React.useRef();
|
|
530
|
-
var
|
|
530
|
+
var scrollListenerRef = React.useRef();
|
|
531
|
+
scrollListenerRef.current = function () {
|
|
531
532
|
var element = scrollComponent.current;
|
|
532
533
|
if (!element || element.offsetParent === null) {
|
|
533
534
|
return;
|
|
@@ -550,15 +551,7 @@ var InfiniteScroll = function (props) {
|
|
|
550
551
|
if (offset < Number(threshold) && typeof loadNextPageFn === 'function' && hasNextPageFlag) {
|
|
551
552
|
loadNextPageFn();
|
|
552
553
|
}
|
|
553
|
-
}
|
|
554
|
-
hasPreviousPageFlag,
|
|
555
|
-
hasNextPageFlag,
|
|
556
|
-
isLoading,
|
|
557
|
-
listenToScroll,
|
|
558
|
-
loadPreviousPageFn,
|
|
559
|
-
loadNextPageFn,
|
|
560
|
-
threshold,
|
|
561
|
-
]);
|
|
554
|
+
};
|
|
562
555
|
React.useEffect(function () {
|
|
563
556
|
Window.deprecationAndReplacementWarning([
|
|
564
557
|
[{ hasMoreNewer: hasMoreNewer }, { hasNextPage: hasNextPage }],
|
|
@@ -573,13 +566,15 @@ var InfiniteScroll = function (props) {
|
|
|
573
566
|
var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
574
567
|
if (!scrollElement)
|
|
575
568
|
return;
|
|
569
|
+
var scrollListener = function () { var _a; return (_a = scrollListenerRef.current) === null || _a === void 0 ? void 0 : _a.call(scrollListenerRef); };
|
|
576
570
|
scrollElement.addEventListener('scroll', scrollListener, useCapture);
|
|
577
571
|
scrollElement.addEventListener('resize', scrollListener, useCapture);
|
|
572
|
+
scrollListener();
|
|
578
573
|
return function () {
|
|
579
574
|
scrollElement.removeEventListener('scroll', scrollListener, useCapture);
|
|
580
575
|
scrollElement.removeEventListener('resize', scrollListener, useCapture);
|
|
581
576
|
};
|
|
582
|
-
}, [initialLoad,
|
|
577
|
+
}, [initialLoad, useCapture]);
|
|
583
578
|
React.useEffect(function () {
|
|
584
579
|
var _a;
|
|
585
580
|
var scrollElement = (_a = scrollComponent.current) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
@@ -635,22 +630,21 @@ function defaultRenderMessages(_a) {
|
|
|
635
630
|
|
|
636
631
|
var MessageListWithContext = function (props) {
|
|
637
632
|
var _a;
|
|
638
|
-
var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d,
|
|
639
|
-
|
|
640
|
-
returnAllReadData =
|
|
641
|
-
var
|
|
642
|
-
var
|
|
633
|
+
var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = Window.__rest(_f, ["threshold"]), _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(Window.MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? Window.defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
634
|
+
_m = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
635
|
+
returnAllReadData = _m === void 0 ? false : _m, _o = props.threadList, threadList = _o === void 0 ? false : _o, _p = props.unsafeHTML, unsafeHTML = _p === void 0 ? false : _p, headerPosition = props.headerPosition, read = props.read, _q = props.renderMessages, renderMessages = _q === void 0 ? defaultRenderMessages : _q, _r = props.messageLimit, messageLimit = _r === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _r, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _s = props.hasMoreNewer, hasMoreNewer = _s === void 0 ? false : _s, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _t = props.jumpToLatestMessage, jumpToLatestMessage = _t === void 0 ? function () { return Promise.resolve(); } : _t;
|
|
636
|
+
var _u = React__default["default"].useState(null), listElement = _u[0], setListElement = _u[1];
|
|
637
|
+
var _v = React__default["default"].useState(null), ulElement = _v[0], setUlElement = _v[1];
|
|
643
638
|
var customClasses = Window.useChatContext('MessageList').customClasses;
|
|
644
|
-
var
|
|
645
|
-
var
|
|
646
|
-
var _0 = useScrollLocationLogic({
|
|
639
|
+
var _w = Window.useComponentContext('MessageList'), _x = _w.EmptyStateIndicator, EmptyStateIndicator = _x === void 0 ? Window.EmptyStateIndicator : _x, _y = _w.LoadingIndicator, LoadingIndicator = _y === void 0 ? Window.LoadingIndicator : _y, _z = _w.MessageListNotifications, MessageListNotifications$1 = _z === void 0 ? MessageListNotifications : _z, _0 = _w.MessageNotification, MessageNotification = _0 === void 0 ? Window.MessageNotification : _0, _1 = _w.TypingIndicator, TypingIndicator = _1 === void 0 ? Window.TypingIndicator : _1, _2 = _w.UnreadMessagesNotification, UnreadMessagesNotification$1 = _2 === void 0 ? UnreadMessagesNotification : _2;
|
|
640
|
+
var _3 = useScrollLocationLogic({
|
|
647
641
|
hasMoreNewer: hasMoreNewer,
|
|
648
642
|
listElement: listElement,
|
|
649
643
|
loadMoreScrollThreshold: loadMoreScrollThreshold,
|
|
650
644
|
messages: messages,
|
|
651
645
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
652
646
|
suppressAutoscroll: suppressAutoscroll,
|
|
653
|
-
}), hasNewMessages =
|
|
647
|
+
}), hasNewMessages = _3.hasNewMessages, isMessageListScrolledToBottom = _3.isMessageListScrolledToBottom, onScroll = _3.onScroll, scrollToBottom = _3.scrollToBottom, wrapperRect = _3.wrapperRect;
|
|
654
648
|
var showUnreadMessagesNotification = useUnreadMessagesNotification({
|
|
655
649
|
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
656
650
|
showAlways: !!showUnreadNotificationAlways,
|
|
@@ -662,7 +656,7 @@ var MessageListWithContext = function (props) {
|
|
|
662
656
|
unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
663
657
|
wasMarkedUnread: !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id),
|
|
664
658
|
});
|
|
665
|
-
var
|
|
659
|
+
var _4 = useEnrichedMessages({
|
|
666
660
|
channel: channel,
|
|
667
661
|
disableDateSeparator: disableDateSeparator,
|
|
668
662
|
groupStyles: groupStyles,
|
|
@@ -671,7 +665,7 @@ var MessageListWithContext = function (props) {
|
|
|
671
665
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
672
666
|
messages: messages,
|
|
673
667
|
noGroupByUser: noGroupByUser,
|
|
674
|
-
}), messageGroupStyles =
|
|
668
|
+
}), messageGroupStyles = _4.messageGroupStyles, enrichedMessages = _4.messages;
|
|
675
669
|
var elements = useMessageListElements({
|
|
676
670
|
channelUnreadUiState: channelUnreadUiState,
|
|
677
671
|
enrichedMessages: enrichedMessages,
|
|
@@ -750,7 +744,7 @@ var MessageListWithContext = function (props) {
|
|
|
750
744
|
return (React__default["default"].createElement(Window.MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
|
|
751
745
|
React__default["default"].createElement(MessageListMainPanel, null,
|
|
752
746
|
!threadList && showUnreadMessagesNotification && (React__default["default"].createElement(UnreadMessagesNotification$1, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
|
|
753
|
-
React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore
|
|
747
|
+
React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore, threshold: loadMoreScrollThreshold }, restInternalInfiniteScrollProps),
|
|
754
748
|
React__default["default"].createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
|
|
755
749
|
React__default["default"].createElement(TypingIndicator, { threadList: threadList }),
|
|
756
750
|
React__default["default"].createElement("div", { key: 'bottom' }))))),
|
|
@@ -1054,7 +1048,7 @@ var Footer = function () {
|
|
|
1054
1048
|
};
|
|
1055
1049
|
var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
1056
1050
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
1057
|
-
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
1051
|
+
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
1058
1052
|
var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
1059
1053
|
if (customMessageRenderer) {
|
|
1060
1054
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
@@ -1077,7 +1071,7 @@ var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
1077
1071
|
var isLastReadMessage = message.id === lastReadMessageId;
|
|
1078
1072
|
var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || unreadMessageCount > 0); // unread count can be 0 if the user marks unread only own messages
|
|
1079
1073
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1080
|
-
React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [] }),
|
|
1074
|
+
React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
|
|
1081
1075
|
showUnreadSeparator && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
1082
1076
|
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
|
|
1083
1077
|
};
|
|
@@ -1113,11 +1107,11 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
|
|
|
1113
1107
|
}
|
|
1114
1108
|
var VirtualizedMessageListWithContext = function (props) {
|
|
1115
1109
|
var _a, _b;
|
|
1116
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ?
|
|
1110
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _g, messages = props.messages, notifications = props.notifications,
|
|
1117
1111
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
1118
1112
|
_h = props.overscan,
|
|
1119
1113
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
1120
|
-
overscan = _h === void 0 ? 0 : _h, read = props.read, _j = props.returnAllReadData, returnAllReadData = _j === void 0 ? false : _j, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _k = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _k === void 0 ? false : _k, _l = props.separateGiphyPreview, separateGiphyPreview = _l === void 0 ? false : _l, _m = props.shouldGroupByUser, shouldGroupByUser = _m === void 0 ? false : _m, showUnreadNotificationAlways = props.showUnreadNotificationAlways, _o = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _o === void 0 ? 'smooth' : _o, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
|
|
1114
|
+
overscan = _h === void 0 ? 0 : _h, read = props.read, _j = props.returnAllReadData, returnAllReadData = _j === void 0 ? false : _j, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _k = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _k === void 0 ? false : _k, _l = props.separateGiphyPreview, separateGiphyPreview = _l === void 0 ? false : _l, _m = props.shouldGroupByUser, shouldGroupByUser = _m === void 0 ? false : _m, showUnreadNotificationAlways = props.showUnreadNotificationAlways, sortReactionDetails = props.sortReactionDetails, sortReactions = props.sortReactions, _o = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _o === void 0 ? 'smooth' : _o, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
|
|
1121
1115
|
var virtuosoComponentsFromProps = additionalVirtuosoProps.components, overridingVirtuosoProps = Window.__rest(additionalVirtuosoProps, ["components"]);
|
|
1122
1116
|
// Stops errors generated from react-virtuoso to bubble up
|
|
1123
1117
|
// to Sentry or other tracking tools.
|
|
@@ -1245,8 +1239,9 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
1245
1239
|
}
|
|
1246
1240
|
};
|
|
1247
1241
|
var atTopStateChange = function (isAtTop) {
|
|
1248
|
-
if (isAtTop)
|
|
1242
|
+
if (isAtTop) {
|
|
1249
1243
|
loadMore === null || loadMore === void 0 ? void 0 : loadMore(messageLimit);
|
|
1244
|
+
}
|
|
1250
1245
|
};
|
|
1251
1246
|
React.useEffect(function () {
|
|
1252
1247
|
var scrollTimeout;
|
|
@@ -1289,6 +1284,8 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
1289
1284
|
ownMessagesReadByOthers: ownMessagesReadByOthers,
|
|
1290
1285
|
processedMessages: processedMessages,
|
|
1291
1286
|
shouldGroupByUser: shouldGroupByUser,
|
|
1287
|
+
sortReactionDetails: sortReactionDetails,
|
|
1288
|
+
sortReactions: sortReactions,
|
|
1292
1289
|
threadList: threadList,
|
|
1293
1290
|
unreadMessageCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages,
|
|
1294
1291
|
UnreadMessagesSeparator: UnreadMessagesSeparator,
|
|
@@ -1308,7 +1305,7 @@ function VirtualizedMessageList(props) {
|
|
|
1308
1305
|
return (React__default["default"].createElement(VirtualizedMessageListWithContext, Window.__assign({ channel: channel, channelUnreadUiState: channelUnreadUiState, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
|
|
1309
1306
|
}
|
|
1310
1307
|
|
|
1311
|
-
var version = '11.
|
|
1308
|
+
var version = '11.11.0';
|
|
1312
1309
|
|
|
1313
1310
|
var useChat = function (_a) {
|
|
1314
1311
|
var _b, _c;
|
|
@@ -1527,6 +1524,36 @@ var Chat = function (props) {
|
|
|
1527
1524
|
React__default["default"].createElement(Window.TranslationProvider, { value: translators }, children)));
|
|
1528
1525
|
};
|
|
1529
1526
|
|
|
1527
|
+
/**
|
|
1528
|
+
* React hook to create, connect and return `StreamChat` client.
|
|
1529
|
+
*/
|
|
1530
|
+
var useCreateChatClient = function (_a) {
|
|
1531
|
+
var apiKey = _a.apiKey, tokenOrProvider = _a.tokenOrProvider, userData = _a.userData;
|
|
1532
|
+
var _b = React.useState(null), chatClient = _b[0], setChatClient = _b[1];
|
|
1533
|
+
var _c = React.useState(userData), cachedUserData = _c[0], setCachedUserData = _c[1];
|
|
1534
|
+
if (userData.id !== cachedUserData.id) {
|
|
1535
|
+
setCachedUserData(userData);
|
|
1536
|
+
}
|
|
1537
|
+
React.useEffect(function () {
|
|
1538
|
+
var client = new streamChat.StreamChat(apiKey);
|
|
1539
|
+
var didUserConnectInterrupt = false;
|
|
1540
|
+
var connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(function () {
|
|
1541
|
+
if (!didUserConnectInterrupt)
|
|
1542
|
+
setChatClient(client);
|
|
1543
|
+
});
|
|
1544
|
+
return function () {
|
|
1545
|
+
didUserConnectInterrupt = true;
|
|
1546
|
+
setChatClient(null);
|
|
1547
|
+
connectionPromise
|
|
1548
|
+
.then(function () { return client.disconnectUser(); })
|
|
1549
|
+
.then(function () {
|
|
1550
|
+
console.log("Connection for user \"".concat(cachedUserData.id, "\" has been closed"));
|
|
1551
|
+
});
|
|
1552
|
+
};
|
|
1553
|
+
}, [apiKey, cachedUserData, tokenOrProvider]);
|
|
1554
|
+
return chatClient;
|
|
1555
|
+
};
|
|
1556
|
+
|
|
1530
1557
|
var CloseIcon = function (_a) {
|
|
1531
1558
|
var title = _a.title;
|
|
1532
1559
|
var t = Window.useTranslationContext('CloseIcon').t;
|
|
@@ -1914,6 +1941,7 @@ exports.VirtualizedMessageList = VirtualizedMessageList;
|
|
|
1914
1941
|
exports.darkModeTheme = darkModeTheme;
|
|
1915
1942
|
exports.defaultRenderMessages = defaultRenderMessages;
|
|
1916
1943
|
exports.useChat = useChat;
|
|
1944
|
+
exports.useCreateChatClient = useCreateChatClient;
|
|
1917
1945
|
exports.useCustomStyles = useCustomStyles;
|
|
1918
1946
|
exports.useEnrichedMessages = useEnrichedMessages;
|
|
1919
1947
|
exports.useLastReadData = useLastReadData;
|