stream-chat-react 11.3.0 → 11.4.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/browser.full-bundle.js +423 -283
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +3 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/components/Attachment/Attachment.js +1 -0
- package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
- package/dist/components/Attachment/AttachmentContainer.js +1 -0
- package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
- package/dist/components/Attachment/hooks/useAudioController.js +1 -0
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +34 -24
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +3 -0
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +2 -0
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
- package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchBar.js +2 -0
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +3 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +2 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
- package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
- package/dist/components/Gallery/ModalGallery.js +3 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
- package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMoreButton.js +1 -0
- package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +1 -0
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +6 -2
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +11 -3
- package/dist/components/MessageActions/MessageActionsBox.d.ts +3 -2
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +9 -24
- package/dist/components/MessageActions/hooks/index.d.ts +2 -0
- package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/index.js +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +1 -0
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +1 -0
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
- package/dist/components/MessageList/MessageList.d.ts +3 -0
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +11 -8
- package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.js +1 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +12 -14
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +3 -3
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +19 -30
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
- package/dist/components/MessageList/index.d.ts +1 -0
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +1 -0
- package/dist/components/MessageList/renderMessages.d.ts +22 -0
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
- package/dist/components/MessageList/renderMessages.js +30 -0
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.js +3 -0
- package/dist/components/Thread/Thread.js +1 -0
- package/dist/index.cjs.js +304 -166
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
package/dist/index.cjs.js
CHANGED
|
@@ -163,6 +163,7 @@ var useAudioController = function () {
|
|
|
163
163
|
audioRef.current.play();
|
|
164
164
|
return function () {
|
|
165
165
|
var _a;
|
|
166
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
166
167
|
(_a = audioRef.current) === null || _a === void 0 ? void 0 : _a.pause();
|
|
167
168
|
window.clearInterval(interval);
|
|
168
169
|
};
|
|
@@ -317,7 +318,9 @@ var ModalGallery = function (props) {
|
|
|
317
318
|
source: imageSrc,
|
|
318
319
|
};
|
|
319
320
|
});
|
|
320
|
-
},
|
|
321
|
+
},
|
|
322
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
323
|
+
[images]);
|
|
321
324
|
return (React__default["default"].createElement(ImageGallery__default["default"], { items: formattedArray, renderItem: renderItem, showIndex: true, showPlayButton: false, showThumbnails: false, startIndex: index }));
|
|
322
325
|
};
|
|
323
326
|
|
|
@@ -3226,6 +3229,7 @@ var MediaContainer = function (props) {
|
|
|
3226
3229
|
var config = videoAttachmentSizeHandler(attachment, videoElement.current, shouldGenerateVideoThumbnail);
|
|
3227
3230
|
setAttachmentConfiguration(config);
|
|
3228
3231
|
}
|
|
3232
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3229
3233
|
}, [videoElement, videoAttachmentSizeHandler, attachment]);
|
|
3230
3234
|
var content = (React__default["default"].createElement("div", { className: 'str-chat__player-wrapper', "data-testid": 'video-wrapper', ref: videoElement, style: getCssDimensionsVariables(attachment.thumb_url || '') },
|
|
3231
3235
|
React__default["default"].createElement(Media, { className: 'react-player', config: { file: { attributes: { poster: attachmentConfiguration === null || attachmentConfiguration === void 0 ? void 0 : attachmentConfiguration.thumbUrl } } }, controls: true, height: '100%', url: attachmentConfiguration === null || attachmentConfiguration === void 0 ? void 0 : attachmentConfiguration.url, width: '100%' })));
|
|
@@ -3261,6 +3265,7 @@ var ATTACHMENT_GROUPS_ORDER = [
|
|
|
3261
3265
|
*/
|
|
3262
3266
|
var Attachment = function (props) {
|
|
3263
3267
|
var attachments = props.attachments;
|
|
3268
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3264
3269
|
var groupedAttachments = React.useMemo(function () { return renderGroupedAttachments(props); }, [attachments]);
|
|
3265
3270
|
return (React__default["default"].createElement("div", { className: 'str-chat__attachment-list' }, ATTACHMENT_GROUPS_ORDER.reduce(function (acc, groupName) { return icons.__spreadArray(icons.__spreadArray([], acc, true), groupedAttachments[groupName], true); }, [])));
|
|
3266
3271
|
};
|
|
@@ -31622,7 +31627,9 @@ var useCreateChannelStateContext = function (value) {
|
|
|
31622
31627
|
watcher_count: watcher_count,
|
|
31623
31628
|
watcherCount: watcherCount,
|
|
31624
31629
|
watchers: watchers,
|
|
31625
|
-
}); },
|
|
31630
|
+
}); },
|
|
31631
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31632
|
+
[
|
|
31626
31633
|
channelId,
|
|
31627
31634
|
debounceURLEnrichmentMs,
|
|
31628
31635
|
enrichURLForPreview,
|
|
@@ -31659,7 +31666,9 @@ var useCreateTypingContext = function (value) {
|
|
|
31659
31666
|
var typingValue = Object.keys(typing || {}).join();
|
|
31660
31667
|
var typingContext = React.useMemo(function () { return ({
|
|
31661
31668
|
typing: typing,
|
|
31662
|
-
}); },
|
|
31669
|
+
}); },
|
|
31670
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31671
|
+
[typingValue]);
|
|
31663
31672
|
return typingContext;
|
|
31664
31673
|
};
|
|
31665
31674
|
|
|
@@ -32175,29 +32184,15 @@ var CustomMessageActionsList = function (props) {
|
|
|
32175
32184
|
})));
|
|
32176
32185
|
};
|
|
32177
32186
|
|
|
32178
|
-
var UnMemoizedMessageActionsBox = function (props) {
|
|
32179
|
-
var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted
|
|
32187
|
+
var UnMemoizedMessageActionsBox = React__default["default"].forwardRef(function (props, ref) {
|
|
32188
|
+
var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted;
|
|
32189
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32190
|
+
props.mine; var _a = props.open, open = _a === void 0 ? false : _a, restDivProps = icons.__rest(props, ["getMessageActions", "handleDelete", "handleEdit", "handleFlag", "handleMute", "handlePin", "isUserMuted", "mine", "open"]);
|
|
32180
32191
|
var _b = icons.useComponentContext('MessageActionsBox').CustomMessageActionsList, CustomMessageActionsList$1 = _b === void 0 ? CustomMessageActionsList : _b;
|
|
32181
32192
|
var setQuotedMessage = icons.useChannelActionContext('MessageActionsBox').setQuotedMessage;
|
|
32182
|
-
var _c = icons.useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message
|
|
32193
|
+
var _c = icons.useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message;
|
|
32183
32194
|
var t = icons.useTranslationContext('MessageActionsBox').t;
|
|
32184
|
-
var _d = React.useState(false), reverse = _d[0], setReverse = _d[1];
|
|
32185
32195
|
var messageActions = getMessageActions();
|
|
32186
|
-
var checkIfReverse = React.useCallback(function (containerElement) {
|
|
32187
|
-
if (!containerElement) {
|
|
32188
|
-
setReverse(false);
|
|
32189
|
-
return;
|
|
32190
|
-
}
|
|
32191
|
-
if (open) {
|
|
32192
|
-
var containerRect = containerElement.getBoundingClientRect();
|
|
32193
|
-
if (mine) {
|
|
32194
|
-
setReverse(!!messageListRect && containerRect.left < messageListRect.left);
|
|
32195
|
-
}
|
|
32196
|
-
else {
|
|
32197
|
-
setReverse(!!messageListRect && containerRect.right + 5 > messageListRect.right);
|
|
32198
|
-
}
|
|
32199
|
-
}
|
|
32200
|
-
}, [messageListRect, mine, open]);
|
|
32201
32196
|
var handleQuote = function () {
|
|
32202
32197
|
setQuotedMessage(message);
|
|
32203
32198
|
var elements = message.parent_id
|
|
@@ -32209,12 +32204,10 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
32209
32204
|
}
|
|
32210
32205
|
};
|
|
32211
32206
|
var rootClassName = clsx('str-chat__message-actions-box', {
|
|
32212
|
-
'str-chat__message-actions-box--mine': mine,
|
|
32213
32207
|
'str-chat__message-actions-box--open': open,
|
|
32214
|
-
'str-chat__message-actions-box--reverse': reverse,
|
|
32215
32208
|
});
|
|
32216
32209
|
var buttonClassName = 'str-chat__message-actions-list-item str-chat__message-actions-list-item-button';
|
|
32217
|
-
return (React__default["default"].createElement("div", { className: rootClassName, "data-testid": 'message-actions-box', ref:
|
|
32210
|
+
return (React__default["default"].createElement("div", icons.__assign({}, restDivProps, { className: rootClassName, "data-testid": 'message-actions-box', ref: ref }),
|
|
32218
32211
|
React__default["default"].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
|
|
32219
32212
|
React__default["default"].createElement(CustomMessageActionsList$1, { customMessageActions: customMessageActions, message: message }),
|
|
32220
32213
|
messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleQuote, role: 'option' }, t('Reply'))),
|
|
@@ -32223,12 +32216,43 @@ var UnMemoizedMessageActionsBox = function (props) {
|
|
|
32223
32216
|
messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
|
|
32224
32217
|
messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleEdit, role: 'option' }, t('Edit Message'))),
|
|
32225
32218
|
messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default["default"].createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleDelete, role: 'option' }, t('Delete'))))));
|
|
32226
|
-
};
|
|
32219
|
+
});
|
|
32227
32220
|
/**
|
|
32228
32221
|
* A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
|
|
32229
32222
|
*/
|
|
32230
32223
|
var MessageActionsBox = React__default["default"].memo(UnMemoizedMessageActionsBox);
|
|
32231
32224
|
|
|
32225
|
+
function useMessageActionsBoxPopper(_a) {
|
|
32226
|
+
var open = _a.open, placement = _a.placement, referenceElement = _a.referenceElement;
|
|
32227
|
+
var popperElementRef = React.useRef(null);
|
|
32228
|
+
var _b = icons.usePopper(referenceElement, popperElementRef.current, {
|
|
32229
|
+
modifiers: [
|
|
32230
|
+
{
|
|
32231
|
+
name: 'eventListeners',
|
|
32232
|
+
options: {
|
|
32233
|
+
// It's not safe to update popper position on resize and scroll, since popper's
|
|
32234
|
+
// reference element might not be visible at the time.
|
|
32235
|
+
resize: false,
|
|
32236
|
+
scroll: false,
|
|
32237
|
+
},
|
|
32238
|
+
},
|
|
32239
|
+
],
|
|
32240
|
+
placement: placement,
|
|
32241
|
+
}), attributes = _b.attributes, styles = _b.styles, update = _b.update;
|
|
32242
|
+
React.useEffect(function () {
|
|
32243
|
+
if (open) {
|
|
32244
|
+
// Since the popper's reference element might not be (and usually is not) visible
|
|
32245
|
+
// all the time, it's safer to force popper update before showing it.
|
|
32246
|
+
update === null || update === void 0 ? void 0 : update();
|
|
32247
|
+
}
|
|
32248
|
+
}, [open, update]);
|
|
32249
|
+
return {
|
|
32250
|
+
attributes: attributes,
|
|
32251
|
+
popperElementRef: popperElementRef,
|
|
32252
|
+
styles: styles,
|
|
32253
|
+
};
|
|
32254
|
+
}
|
|
32255
|
+
|
|
32232
32256
|
var MessageActions = function (props) {
|
|
32233
32257
|
var _a = props.ActionsIcon, ActionsIcon$1 = _a === void 0 ? ActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
|
|
32234
32258
|
var mutes = icons.useChatContext('MessageActions').mutes;
|
|
@@ -32239,6 +32263,7 @@ var MessageActions = function (props) {
|
|
|
32239
32263
|
var handleMute = propHandleMute || contextHandleMute;
|
|
32240
32264
|
var handlePin = propHandlePin || contextHandlePin;
|
|
32241
32265
|
var message = propMessage || contextMessage;
|
|
32266
|
+
var isMine = mine ? mine() : isMyMessage();
|
|
32242
32267
|
var _d = React.useState(false), actionsBoxOpen = _d[0], setActionsBoxOpen = _d[1];
|
|
32243
32268
|
var isMuted = React.useCallback(function () { return isUserMuted(message, mutes); }, [message, mutes]);
|
|
32244
32269
|
var hideOptions = React.useCallback(function (event) {
|
|
@@ -32269,11 +32294,17 @@ var MessageActions = function (props) {
|
|
|
32269
32294
|
document.removeEventListener('keyup', hideOptions);
|
|
32270
32295
|
};
|
|
32271
32296
|
}, [actionsBoxOpen, hideOptions]);
|
|
32297
|
+
var actionsBoxButtonRef = React.useRef(null);
|
|
32298
|
+
var _e = useMessageActionsBoxPopper({
|
|
32299
|
+
open: actionsBoxOpen,
|
|
32300
|
+
placement: isMine ? 'top-end' : 'top-start',
|
|
32301
|
+
referenceElement: actionsBoxButtonRef.current,
|
|
32302
|
+
}), attributes = _e.attributes, popperElementRef = _e.popperElementRef, styles = _e.styles;
|
|
32272
32303
|
if (!messageActions.length && !customMessageActions)
|
|
32273
32304
|
return null;
|
|
32274
32305
|
return (React__default["default"].createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
|
|
32275
|
-
React__default["default"].createElement(MessageActionsBox, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine:
|
|
32276
|
-
React__default["default"].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu', className: 'str-chat__message-actions-box-button' },
|
|
32306
|
+
React__default["default"].createElement(MessageActionsBox, icons.__assign({}, attributes.popper, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: isMine, open: actionsBoxOpen, ref: popperElementRef, style: styles.popper })),
|
|
32307
|
+
React__default["default"].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu', className: 'str-chat__message-actions-box-button', ref: actionsBoxButtonRef },
|
|
32277
32308
|
React__default["default"].createElement(ActionsIcon$1, { className: 'str-chat__message-action-icon' }))));
|
|
32278
32309
|
};
|
|
32279
32310
|
var MessageActionsWrapper = function (props) {
|
|
@@ -32440,6 +32471,7 @@ var UnMemoizedMessageTextComponent = function (props) {
|
|
|
32440
32471
|
var message = propMessage || contextMessage;
|
|
32441
32472
|
var hasAttachment = messageHasAttachments(message);
|
|
32442
32473
|
var messageTextToRender = ((_b = message.i18n) === null || _b === void 0 ? void 0 : _b["".concat(userLanguage, "_text")]) || message.text;
|
|
32474
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32443
32475
|
var messageText = React.useMemo(function () { return renderText$1(messageTextToRender, message.mentioned_users); }, [
|
|
32444
32476
|
message.mentioned_users,
|
|
32445
32477
|
messageTextToRender,
|
|
@@ -32885,6 +32917,7 @@ var useUserTrigger = function (params) {
|
|
|
32885
32917
|
});
|
|
32886
32918
|
return Object.values(uniqueUsers);
|
|
32887
32919
|
}, [members, watchers]);
|
|
32920
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32888
32921
|
var queryMembersThrottled = React.useCallback(throttle__default["default"](function (query, onReady) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
32889
32922
|
var response, users, error_1;
|
|
32890
32923
|
return icons.__generator(this, function (_a) {
|
|
@@ -33194,6 +33227,7 @@ var MessageInputFlat = function () {
|
|
|
33194
33227
|
channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
|
|
33195
33228
|
channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
|
|
33196
33229
|
};
|
|
33230
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33197
33231
|
}, [channel, quotedMessage]);
|
|
33198
33232
|
return themeVersion === '2' ? (React__default["default"].createElement(MessageInputV2, null)) : (React__default["default"].createElement(MessageInputV1, null));
|
|
33199
33233
|
};
|
|
@@ -33361,6 +33395,7 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
33361
33395
|
var removeImage = React.useCallback(function (id) {
|
|
33362
33396
|
dispatch({ id: id, type: 'removeImageUpload' });
|
|
33363
33397
|
// TODO: cancel upload if still uploading
|
|
33398
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33364
33399
|
}, []);
|
|
33365
33400
|
var uploadImage = React.useCallback(function (id) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
33366
33401
|
var img, file, canUpload, response, error_1, errorMessage, alreadyRemoved;
|
|
@@ -33436,7 +33471,9 @@ var useImageUploads = function (props, state, dispatch) {
|
|
|
33436
33471
|
return [2 /*return*/];
|
|
33437
33472
|
}
|
|
33438
33473
|
});
|
|
33439
|
-
}); },
|
|
33474
|
+
}); },
|
|
33475
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33476
|
+
[imageUploads, channel, doImageUploadRequest, errorHandler, removeImage]);
|
|
33440
33477
|
React.useEffect(function () {
|
|
33441
33478
|
var upload = Object.values(imageUploads).find(function (imageUpload) { return imageUpload.state === 'uploading' && imageUpload.file; });
|
|
33442
33479
|
if (!upload)
|
|
@@ -33458,10 +33495,12 @@ var useFileUploads = function (props, state, dispatch) {
|
|
|
33458
33495
|
var t = icons.useTranslationContext('useFileUploads').t;
|
|
33459
33496
|
var uploadFile = React.useCallback(function (id) {
|
|
33460
33497
|
dispatch({ id: id, state: 'uploading', type: 'setFileUpload' });
|
|
33498
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33461
33499
|
}, []);
|
|
33462
33500
|
var removeFile = React.useCallback(function (id) {
|
|
33463
33501
|
// TODO: cancel upload if still uploading
|
|
33464
33502
|
dispatch({ id: id, type: 'removeFileUpload' });
|
|
33503
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33465
33504
|
}, []);
|
|
33466
33505
|
React.useEffect(function () {
|
|
33467
33506
|
(function () { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -33533,6 +33572,7 @@ var useFileUploads = function (props, state, dispatch) {
|
|
|
33533
33572
|
}
|
|
33534
33573
|
});
|
|
33535
33574
|
}); })();
|
|
33575
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33536
33576
|
}, [fileUploads, channel, doFileUploadRequest, errorHandler, removeFile]);
|
|
33537
33577
|
return {
|
|
33538
33578
|
removeFile: removeFile,
|
|
@@ -33584,7 +33624,9 @@ var useAttachments = function (props, state, dispatch, textareaRef) {
|
|
|
33584
33624
|
}
|
|
33585
33625
|
});
|
|
33586
33626
|
(_a = textareaRef === null || textareaRef === void 0 ? void 0 : textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
33587
|
-
},
|
|
33627
|
+
},
|
|
33628
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33629
|
+
[maxFilesLeft, noFiles]);
|
|
33588
33630
|
return {
|
|
33589
33631
|
maxFilesLeft: maxFilesLeft,
|
|
33590
33632
|
numberOfUploads: numberOfUploads,
|
|
@@ -33635,7 +33677,9 @@ var useMessageInputText = function (props, state, dispatch, findAndEnqueueURLsTo
|
|
|
33635
33677
|
},
|
|
33636
33678
|
type: 'setText',
|
|
33637
33679
|
});
|
|
33638
|
-
},
|
|
33680
|
+
},
|
|
33681
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33682
|
+
[additionalTextareaProps, newCursorPosition, textareaRef]);
|
|
33639
33683
|
React.useEffect(function () {
|
|
33640
33684
|
var textareaElement = textareaRef.current;
|
|
33641
33685
|
if (textareaElement && newCursorPosition.current !== undefined) {
|
|
@@ -33658,7 +33702,9 @@ var useMessageInputText = function (props, state, dispatch, findAndEnqueueURLsTo
|
|
|
33658
33702
|
if (publishTypingEvent && newText && channel) {
|
|
33659
33703
|
streamChat.logChatPromiseExecution(channel.keystroke(parent === null || parent === void 0 ? void 0 : parent.id), 'start typing event');
|
|
33660
33704
|
}
|
|
33661
|
-
},
|
|
33705
|
+
},
|
|
33706
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33707
|
+
[channel, findAndEnqueueURLsToEnrich, parent, publishTypingEvent]);
|
|
33662
33708
|
return {
|
|
33663
33709
|
handleChange: handleChange,
|
|
33664
33710
|
insertText: insertText,
|
|
@@ -33892,7 +33938,9 @@ var usePasteHandler = function (uploadNewFiles, insertText, isUploadEnabled, fin
|
|
|
33892
33938
|
}
|
|
33893
33939
|
});
|
|
33894
33940
|
}); })(clipboardEvent);
|
|
33895
|
-
},
|
|
33941
|
+
},
|
|
33942
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33943
|
+
[insertText, uploadNewFiles]);
|
|
33896
33944
|
return { onPaste: onPaste };
|
|
33897
33945
|
};
|
|
33898
33946
|
|
|
@@ -33916,7 +33964,10 @@ var useLinkPreviews = function (_a) {
|
|
|
33916
33964
|
mode: exports.SetLinkPreviewMode.UPSERT,
|
|
33917
33965
|
type: 'setLinkPreviews',
|
|
33918
33966
|
});
|
|
33919
|
-
},
|
|
33967
|
+
},
|
|
33968
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33969
|
+
[onLinkPreviewDismissed]);
|
|
33970
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33920
33971
|
var findAndEnqueueURLsToEnrich = React.useCallback(debounce__default["default"](function (text, mode) {
|
|
33921
33972
|
if (mode === void 0) { mode = exports.SetLinkPreviewMode.SET; }
|
|
33922
33973
|
var urls = findURLFn
|
|
@@ -33982,6 +34033,7 @@ var useLinkPreviews = function (_a) {
|
|
|
33982
34033
|
});
|
|
33983
34034
|
});
|
|
33984
34035
|
});
|
|
34036
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33985
34037
|
}, [shouldDiscardEnrichQueries, linkPreviews]);
|
|
33986
34038
|
return {
|
|
33987
34039
|
cancelURLEnrichment: cancelURLEnrichment,
|
|
@@ -34273,7 +34325,9 @@ var useCreateMessageInputContext = function (value) {
|
|
|
34273
34325
|
uploadImage: uploadImage,
|
|
34274
34326
|
uploadNewFiles: uploadNewFiles,
|
|
34275
34327
|
useMentionsTransliteration: useMentionsTransliteration,
|
|
34276
|
-
}); },
|
|
34328
|
+
}); },
|
|
34329
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34330
|
+
[
|
|
34277
34331
|
cancelURLEnrichment,
|
|
34278
34332
|
cooldownInterval,
|
|
34279
34333
|
cooldownRemaining,
|
|
@@ -34356,6 +34410,7 @@ var MessageInputSmall = function () {
|
|
|
34356
34410
|
channel === null || channel === void 0 ? void 0 : channel.off('message.deleted', handleQuotedMessageUpdate);
|
|
34357
34411
|
channel === null || channel === void 0 ? void 0 : channel.off('message.updated', handleQuotedMessageUpdate);
|
|
34358
34412
|
};
|
|
34413
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34359
34414
|
}, [channel, quotedMessage]);
|
|
34360
34415
|
return (React__default["default"].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
|
|
34361
34416
|
React__default["default"].createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
|
|
@@ -34514,8 +34569,11 @@ var useProcessReactions = function (params) {
|
|
|
34514
34569
|
var message = icons.useMessageContext('useProcessReactions').message;
|
|
34515
34570
|
var contextReactionOptions = icons.useComponentContext('useProcessReactions').reactionOptions;
|
|
34516
34571
|
var reactionOptions = propReactionOptions !== null && propReactionOptions !== void 0 ? propReactionOptions : contextReactionOptions;
|
|
34572
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34517
34573
|
var latestReactions = propReactions || message.latest_reactions || [];
|
|
34574
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34518
34575
|
var ownReactions = propOwnReactions || (message === null || message === void 0 ? void 0 : message.own_reactions) || [];
|
|
34576
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34519
34577
|
var reactionCounts = propReactionCounts || message.reaction_counts || {};
|
|
34520
34578
|
var iHaveReactedWithReaction = React.useCallback(function (reactionType) { return ownReactions.find(function (reaction) { return reaction.type === reactionType; }); }, [ownReactions]);
|
|
34521
34579
|
var getEmojiByReactionType = React.useCallback(function (reactionType) { return reactionOptions.find(function (_a) {
|
|
@@ -35025,7 +35083,7 @@ var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByU
|
|
|
35025
35083
|
// The MessageList should have configurable the limit for performing the requests.
|
|
35026
35084
|
// This parameter would then be used within these functions
|
|
35027
35085
|
var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
|
|
35028
|
-
return returnedCountMessages
|
|
35086
|
+
return returnedCountMessages >= limit;
|
|
35029
35087
|
};
|
|
35030
35088
|
// @deprecated
|
|
35031
35089
|
var hasNotMoreMessages = function (returnedCountMessages, limit) {
|
|
@@ -35199,6 +35257,60 @@ var addResizingParamsToUrl = function (resizeDimensions, url) {
|
|
|
35199
35257
|
url.searchParams.set('w', resizeDimensions.width.toString());
|
|
35200
35258
|
};
|
|
35201
35259
|
|
|
35260
|
+
/**
|
|
35261
|
+
* Component to display system and channel event messages
|
|
35262
|
+
*/
|
|
35263
|
+
var UnMemoizedEventComponent = function (props) {
|
|
35264
|
+
var _a, _b, _c;
|
|
35265
|
+
var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
|
|
35266
|
+
var tDateTimeParser = icons.useTranslationContext('EventComponent').tDateTimeParser;
|
|
35267
|
+
var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
|
|
35268
|
+
var getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser: tDateTimeParser };
|
|
35269
|
+
if (type === 'system')
|
|
35270
|
+
return (React__default["default"].createElement("div", { className: 'str-chat__message--system', "data-testid": 'message-system' },
|
|
35271
|
+
React__default["default"].createElement("div", { className: 'str-chat__message--system__text' },
|
|
35272
|
+
React__default["default"].createElement("div", { className: 'str-chat__message--system__line' }),
|
|
35273
|
+
React__default["default"].createElement("p", null, text),
|
|
35274
|
+
React__default["default"].createElement("div", { className: 'str-chat__message--system__line' })),
|
|
35275
|
+
React__default["default"].createElement("div", { className: 'str-chat__message--system__date' },
|
|
35276
|
+
React__default["default"].createElement("strong", null,
|
|
35277
|
+
getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'dddd' })),
|
|
35278
|
+
" "),
|
|
35279
|
+
"at ",
|
|
35280
|
+
getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'hh:mm A' })))));
|
|
35281
|
+
if ((event === null || event === void 0 ? void 0 : event.type) === 'member.removed' || (event === null || event === void 0 ? void 0 : event.type) === 'member.added') {
|
|
35282
|
+
var name_1 = ((_a = event.user) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event.user) === null || _b === void 0 ? void 0 : _b.id);
|
|
35283
|
+
var sentence = "".concat(name_1, " ").concat(event.type === 'member.added' ? 'has joined the chat' : 'was removed from the chat');
|
|
35284
|
+
return (React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event' },
|
|
35285
|
+
React__default["default"].createElement(Avatar$1, { image: (_c = event.user) === null || _c === void 0 ? void 0 : _c.image, name: name_1, user: event.user }),
|
|
35286
|
+
React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__content' },
|
|
35287
|
+
React__default["default"].createElement("em", { className: 'str-chat__event-component__channel-event__sentence' }, sentence),
|
|
35288
|
+
React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__date' }, getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'LT' }))))));
|
|
35289
|
+
}
|
|
35290
|
+
return null;
|
|
35291
|
+
};
|
|
35292
|
+
var EventComponent = React__default["default"].memo(UnMemoizedEventComponent);
|
|
35293
|
+
|
|
35294
|
+
var UnMemoizedDateSeparator = function (props) {
|
|
35295
|
+
var messageCreatedAt = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
|
|
35296
|
+
var _b = icons.useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
35297
|
+
var formattedDate = getDateString({
|
|
35298
|
+
calendar: true,
|
|
35299
|
+
formatDate: formatDate,
|
|
35300
|
+
messageCreatedAt: messageCreatedAt,
|
|
35301
|
+
tDateTimeParser: tDateTimeParser,
|
|
35302
|
+
});
|
|
35303
|
+
return (React__default["default"].createElement("div", { className: 'str-chat__date-separator', "data-testid": 'date-separator' },
|
|
35304
|
+
(position === 'right' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' })),
|
|
35305
|
+
React__default["default"].createElement("div", { className: 'str-chat__date-separator-date' }, unread ? "".concat(t('New'), " - ").concat(formattedDate) : formattedDate),
|
|
35306
|
+
(position === 'left' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' }))));
|
|
35307
|
+
};
|
|
35308
|
+
/**
|
|
35309
|
+
* A simple date separator between messages.
|
|
35310
|
+
*/
|
|
35311
|
+
var DateSeparator = React__default["default"].memo(UnMemoizedDateSeparator);
|
|
35312
|
+
|
|
35313
|
+
var isUserResponseArray = function (output) { var _a; return ((_a = output[0]) === null || _a === void 0 ? void 0 : _a.id) != null; };
|
|
35202
35314
|
var UnMemoizedChannel = function (props) {
|
|
35203
35315
|
var propsChannel = props.channel, _a = props.EmptyPlaceholder, EmptyPlaceholder = _a === void 0 ? null : _a, LoadingErrorIndicator = props.LoadingErrorIndicator, _b = props.LoadingIndicator, LoadingIndicator = _b === void 0 ? LoadingChannel : _b;
|
|
35204
35316
|
var _c = icons.useChatContext('Channel'), contextChannel = _c.channel, channelsQueryState = _c.channelsQueryState, customClasses = _c.customClasses, theme = _c.theme;
|
|
@@ -35420,6 +35532,7 @@ var ChannelInner = function (props) {
|
|
|
35420
35532
|
client.off('user.deleted', handleEvent);
|
|
35421
35533
|
notificationTimeouts.forEach(clearTimeout);
|
|
35422
35534
|
};
|
|
35535
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35423
35536
|
}, [
|
|
35424
35537
|
channel.cid,
|
|
35425
35538
|
channelQueryOptions,
|
|
@@ -35438,14 +35551,12 @@ var ChannelInner = function (props) {
|
|
|
35438
35551
|
/** MESSAGE */
|
|
35439
35552
|
// Adds a temporary notification to message list, will be removed after 5 seconds
|
|
35440
35553
|
var addNotification = makeAddNotifications(setNotifications, notificationTimeouts);
|
|
35441
|
-
|
|
35554
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35555
|
+
var loadMoreFinished = React.useCallback(debounce__default["default"](function (hasMore, messages) {
|
|
35442
35556
|
if (!isMounted.current)
|
|
35443
35557
|
return;
|
|
35444
35558
|
dispatch({ hasMore: hasMore, messages: messages, type: 'loadMoreFinished' });
|
|
35445
|
-
}, 2000, {
|
|
35446
|
-
leading: true,
|
|
35447
|
-
trailing: true,
|
|
35448
|
-
});
|
|
35559
|
+
}, 2000, { leading: true, trailing: true }), []);
|
|
35449
35560
|
var loadMore = function (limit) {
|
|
35450
35561
|
if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
|
|
35451
35562
|
return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -35489,12 +35600,12 @@ var ChannelInner = function (props) {
|
|
|
35489
35600
|
var loadMoreNewer = function (limit) {
|
|
35490
35601
|
if (limit === void 0) { limit = 100; }
|
|
35491
35602
|
return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
35492
|
-
var newestMessage, newestId, perPage, queryResponse, e_3,
|
|
35603
|
+
var newestMessage, newestId, perPage, queryResponse, e_3, hasMoreNewerMessages;
|
|
35493
35604
|
var _a, _b;
|
|
35494
35605
|
return icons.__generator(this, function (_c) {
|
|
35495
35606
|
switch (_c.label) {
|
|
35496
35607
|
case 0:
|
|
35497
|
-
if (!online.current || !window.navigator.onLine)
|
|
35608
|
+
if (!online.current || !window.navigator.onLine || !state.hasMoreNewer)
|
|
35498
35609
|
return [2 /*return*/, 0];
|
|
35499
35610
|
newestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[((_b = state === null || state === void 0 ? void 0 : state.messages) === null || _b === void 0 ? void 0 : _b.length) - 1];
|
|
35500
35611
|
if (state.loadingMore || state.loadingMoreNewer)
|
|
@@ -35518,8 +35629,12 @@ var ChannelInner = function (props) {
|
|
|
35518
35629
|
dispatch({ loadingMoreNewer: false, type: 'setLoadingMoreNewer' });
|
|
35519
35630
|
return [2 /*return*/, 0];
|
|
35520
35631
|
case 4:
|
|
35521
|
-
|
|
35522
|
-
dispatch({
|
|
35632
|
+
hasMoreNewerMessages = channel.state.messages !== channel.state.latestMessages;
|
|
35633
|
+
dispatch({
|
|
35634
|
+
hasMoreNewer: hasMoreNewerMessages,
|
|
35635
|
+
messages: channel.state.messages,
|
|
35636
|
+
type: 'loadMoreNewerFinished',
|
|
35637
|
+
});
|
|
35523
35638
|
return [2 /*return*/, queryResponse.messages.length];
|
|
35524
35639
|
}
|
|
35525
35640
|
});
|
|
@@ -35604,7 +35719,6 @@ var ChannelInner = function (props) {
|
|
|
35604
35719
|
type: 'copyMessagesFromChannel',
|
|
35605
35720
|
});
|
|
35606
35721
|
};
|
|
35607
|
-
var isUserResponseArray = function (output) { var _a; return ((_a = output[0]) === null || _a === void 0 ? void 0 : _a.id) != null; };
|
|
35608
35722
|
var doSendMessage = function (message, customMessageData, options) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
35609
35723
|
var attachments, id, _a, mentioned_users, parent_id, text, mentions, messageData, messageResponse, existingMessage, i, msg, responseTimestamp, existingMessageTimestamp, responseIsTheNewest, error_1, stringError, parsedError;
|
|
35610
35724
|
var _b, _c;
|
|
@@ -35724,17 +35838,18 @@ var ChannelInner = function (props) {
|
|
|
35724
35838
|
event === null || event === void 0 ? void 0 : event.preventDefault();
|
|
35725
35839
|
dispatch({ type: 'closeThread' });
|
|
35726
35840
|
};
|
|
35727
|
-
|
|
35841
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35842
|
+
var loadMoreThreadFinished = React.useCallback(debounce__default["default"](function (threadHasMore, threadMessages) {
|
|
35728
35843
|
dispatch({
|
|
35729
35844
|
threadHasMore: threadHasMore,
|
|
35730
35845
|
threadMessages: threadMessages,
|
|
35731
35846
|
type: 'loadMoreThreadFinished',
|
|
35732
35847
|
});
|
|
35733
|
-
}, 2000, { leading: true, trailing: true });
|
|
35848
|
+
}, 2000, { leading: true, trailing: true }), []);
|
|
35734
35849
|
var loadMoreThread = function (limit) {
|
|
35735
35850
|
if (limit === void 0) { limit = DEFAULT_THREAD_PAGE_SIZE; }
|
|
35736
35851
|
return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
35737
|
-
var
|
|
35852
|
+
var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages;
|
|
35738
35853
|
var _a;
|
|
35739
35854
|
return icons.__generator(this, function (_b) {
|
|
35740
35855
|
switch (_b.label) {
|
|
@@ -35743,23 +35858,23 @@ var ChannelInner = function (props) {
|
|
|
35743
35858
|
if (state.threadLoadingMore || !state.thread)
|
|
35744
35859
|
return [2 /*return*/];
|
|
35745
35860
|
dispatch({ type: 'startLoadingThread' });
|
|
35746
|
-
|
|
35747
|
-
if (!
|
|
35861
|
+
parentId = state.thread.id;
|
|
35862
|
+
if (!parentId) {
|
|
35748
35863
|
return [2 /*return*/, dispatch({ type: 'closeThread' })];
|
|
35749
35864
|
}
|
|
35750
|
-
oldMessages = channel.state.threads[
|
|
35751
|
-
|
|
35865
|
+
oldMessages = channel.state.threads[parentId] || [];
|
|
35866
|
+
oldestMessageId = (_a = oldMessages[0]) === null || _a === void 0 ? void 0 : _a.id;
|
|
35752
35867
|
_b.label = 1;
|
|
35753
35868
|
case 1:
|
|
35754
35869
|
_b.trys.push([1, 3, , 4]);
|
|
35755
|
-
return [4 /*yield*/, channel.getReplies(
|
|
35756
|
-
id_lt:
|
|
35870
|
+
return [4 /*yield*/, channel.getReplies(parentId, {
|
|
35871
|
+
id_lt: oldestMessageId,
|
|
35757
35872
|
limit: limit,
|
|
35758
35873
|
})];
|
|
35759
35874
|
case 2:
|
|
35760
35875
|
queryResponse = _b.sent();
|
|
35761
35876
|
threadHasMoreMessages = hasMoreMessagesProbably(queryResponse.messages.length, limit);
|
|
35762
|
-
newThreadMessages = channel.state.threads[
|
|
35877
|
+
newThreadMessages = channel.state.threads[parentId] || [];
|
|
35763
35878
|
// next set loadingMore to false so we can start asking for more data
|
|
35764
35879
|
loadMoreThreadFinished(threadHasMoreMessages, newThreadMessages);
|
|
35765
35880
|
return [3 /*break*/, 4];
|
|
@@ -35796,7 +35911,9 @@ var ChannelInner = function (props) {
|
|
|
35796
35911
|
setQuotedMessage: setQuotedMessage,
|
|
35797
35912
|
skipMessageDataMemoization: skipMessageDataMemoization,
|
|
35798
35913
|
updateMessage: updateMessage,
|
|
35799
|
-
}); },
|
|
35914
|
+
}); },
|
|
35915
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35916
|
+
[
|
|
35800
35917
|
channel.cid,
|
|
35801
35918
|
deleteMessage,
|
|
35802
35919
|
enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.findURLFn,
|
|
@@ -35819,7 +35936,7 @@ var ChannelInner = function (props) {
|
|
|
35819
35936
|
BaseImage: props.BaseImage,
|
|
35820
35937
|
CooldownTimer: props.CooldownTimer,
|
|
35821
35938
|
CustomMessageActionsList: props.CustomMessageActionsList,
|
|
35822
|
-
DateSeparator: props.DateSeparator,
|
|
35939
|
+
DateSeparator: props.DateSeparator || DateSeparator,
|
|
35823
35940
|
EditMessageInput: props.EditMessageInput,
|
|
35824
35941
|
EmojiPicker: props.EmojiPicker,
|
|
35825
35942
|
emojiSearchIndex: props.emojiSearchIndex,
|
|
@@ -35837,7 +35954,7 @@ var ChannelInner = function (props) {
|
|
|
35837
35954
|
MessageOptions: props.MessageOptions,
|
|
35838
35955
|
MessageRepliesCountButton: props.MessageRepliesCountButton,
|
|
35839
35956
|
MessageStatus: props.MessageStatus,
|
|
35840
|
-
MessageSystem: props.MessageSystem,
|
|
35957
|
+
MessageSystem: props.MessageSystem || EventComponent,
|
|
35841
35958
|
MessageTimestamp: props.MessageTimestamp,
|
|
35842
35959
|
ModalGallery: props.ModalGallery,
|
|
35843
35960
|
PinIndicator: props.PinIndicator,
|
|
@@ -35854,7 +35971,9 @@ var ChannelInner = function (props) {
|
|
|
35854
35971
|
TypingIndicator: props.TypingIndicator,
|
|
35855
35972
|
VirtualMessage: props.VirtualMessage,
|
|
35856
35973
|
});
|
|
35857
|
-
},
|
|
35974
|
+
},
|
|
35975
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35976
|
+
[props.reactionOptions]);
|
|
35858
35977
|
var typingContextValue = useCreateTypingContext({
|
|
35859
35978
|
typing: typing,
|
|
35860
35979
|
});
|
|
@@ -35968,6 +36087,7 @@ var useChannelPreviewInfo = function (props) {
|
|
|
35968
36087
|
return function () {
|
|
35969
36088
|
client.off('user.updated', handleEvent);
|
|
35970
36089
|
};
|
|
36090
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35971
36091
|
}, []);
|
|
35972
36092
|
return {
|
|
35973
36093
|
displayImage: overrideImage || displayImage,
|
|
@@ -36068,6 +36188,7 @@ var useChannelDeletedListener = function (setChannels, customHandler) {
|
|
|
36068
36188
|
return function () {
|
|
36069
36189
|
client.off('channel.deleted', handleEvent);
|
|
36070
36190
|
};
|
|
36191
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36071
36192
|
}, [customHandler]);
|
|
36072
36193
|
};
|
|
36073
36194
|
|
|
@@ -36093,6 +36214,7 @@ var useChannelHiddenListener = function (setChannels, customHandler) {
|
|
|
36093
36214
|
return function () {
|
|
36094
36215
|
client.off('channel.hidden', handleEvent);
|
|
36095
36216
|
};
|
|
36217
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36096
36218
|
}, [customHandler]);
|
|
36097
36219
|
};
|
|
36098
36220
|
|
|
@@ -36112,6 +36234,7 @@ var useChannelTruncatedListener = function (setChannels, customHandler, forceUpd
|
|
|
36112
36234
|
return function () {
|
|
36113
36235
|
client.off('channel.truncated', handleEvent);
|
|
36114
36236
|
};
|
|
36237
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36115
36238
|
}, [customHandler]);
|
|
36116
36239
|
};
|
|
36117
36240
|
|
|
@@ -36140,6 +36263,7 @@ var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdat
|
|
|
36140
36263
|
return function () {
|
|
36141
36264
|
client.off('channel.updated', handleEvent);
|
|
36142
36265
|
};
|
|
36266
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36143
36267
|
}, [customHandler]);
|
|
36144
36268
|
};
|
|
36145
36269
|
|
|
@@ -36173,6 +36297,7 @@ var useChannelVisibleListener = function (setChannels, customHandler) {
|
|
|
36173
36297
|
return function () {
|
|
36174
36298
|
client.off('channel.visible', handleEvent);
|
|
36175
36299
|
};
|
|
36300
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36176
36301
|
}, [customHandler]);
|
|
36177
36302
|
};
|
|
36178
36303
|
|
|
@@ -36188,6 +36313,7 @@ var useConnectionRecoveredListener = function (forceUpdate) {
|
|
|
36188
36313
|
return function () {
|
|
36189
36314
|
client.off('connection.recovered', handleEvent);
|
|
36190
36315
|
};
|
|
36316
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36191
36317
|
}, []);
|
|
36192
36318
|
};
|
|
36193
36319
|
|
|
@@ -36229,6 +36355,7 @@ var useMessageNewListener = function (setChannels, customHandler, lockChannelOrd
|
|
|
36229
36355
|
return function () {
|
|
36230
36356
|
client.off('message.new', handleEvent);
|
|
36231
36357
|
};
|
|
36358
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36232
36359
|
}, [lockChannelOrder]);
|
|
36233
36360
|
};
|
|
36234
36361
|
|
|
@@ -36289,6 +36416,7 @@ var useNotificationAddedToChannelListener = function (setChannels, customHandler
|
|
|
36289
36416
|
return function () {
|
|
36290
36417
|
client.off('notification.added_to_channel', handleEvent);
|
|
36291
36418
|
};
|
|
36419
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36292
36420
|
}, [customHandler]);
|
|
36293
36421
|
};
|
|
36294
36422
|
|
|
@@ -36324,6 +36452,7 @@ var useNotificationMessageNewListener = function (setChannels, customHandler, al
|
|
|
36324
36452
|
return function () {
|
|
36325
36453
|
client.off('notification.message_new', handleEvent);
|
|
36326
36454
|
};
|
|
36455
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36327
36456
|
}, [customHandler]);
|
|
36328
36457
|
};
|
|
36329
36458
|
|
|
@@ -36342,6 +36471,7 @@ var useNotificationRemovedFromChannelListener = function (setChannels, customHan
|
|
|
36342
36471
|
return function () {
|
|
36343
36472
|
client.off('notification.removed_from_channel', handleEvent);
|
|
36344
36473
|
};
|
|
36474
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36345
36475
|
}, [customHandler]);
|
|
36346
36476
|
};
|
|
36347
36477
|
|
|
@@ -36361,6 +36491,7 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
36361
36491
|
// memoize props
|
|
36362
36492
|
var filterString = React.useMemo(function () { return JSON.stringify(filters); }, [filters]);
|
|
36363
36493
|
var sortString = React.useMemo(function () { return JSON.stringify(sort); }, [sort]);
|
|
36494
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36364
36495
|
var queryChannels = function (queryType) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
36365
36496
|
var offset, newOptions, channelQueryResponse, newChannels, err_1;
|
|
36366
36497
|
var _a;
|
|
@@ -36429,6 +36560,7 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
36429
36560
|
}, [client, throttleRecover]);
|
|
36430
36561
|
React.useEffect(function () {
|
|
36431
36562
|
queryChannels('reload');
|
|
36563
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36432
36564
|
}, [filterString, sortString]);
|
|
36433
36565
|
return {
|
|
36434
36566
|
channels: channels,
|
|
@@ -36459,6 +36591,7 @@ var useUserPresenceChangedListener = function (setChannels) {
|
|
|
36459
36591
|
return function () {
|
|
36460
36592
|
client.off('user.presence.changed', handleEvent);
|
|
36461
36593
|
};
|
|
36594
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36462
36595
|
}, []);
|
|
36463
36596
|
};
|
|
36464
36597
|
|
|
@@ -36501,6 +36634,7 @@ var useIsChannelMuted = function (channel) {
|
|
|
36501
36634
|
var handleEvent = function () { return setMuted(channel.muteStatus()); };
|
|
36502
36635
|
client.on('notification.channel_mutes_updated', handleEvent);
|
|
36503
36636
|
return function () { return client.off('notification.channel_mutes_updated', handleEvent); };
|
|
36637
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36504
36638
|
}, [muted]);
|
|
36505
36639
|
return muted;
|
|
36506
36640
|
};
|
|
@@ -36584,6 +36718,7 @@ var ChannelPreview = function (props) {
|
|
|
36584
36718
|
};
|
|
36585
36719
|
client.on('notification.mark_read', handleEvent);
|
|
36586
36720
|
return function () { return client.off('notification.mark_read', handleEvent); };
|
|
36721
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36587
36722
|
}, []);
|
|
36588
36723
|
var refreshUnreadCount = React.useCallback(function () {
|
|
36589
36724
|
if (isActive || muted) {
|
|
@@ -36608,6 +36743,7 @@ var ChannelPreview = function (props) {
|
|
|
36608
36743
|
channel.off('message.updated', handleEvent);
|
|
36609
36744
|
channel.off('message.deleted', handleEvent);
|
|
36610
36745
|
};
|
|
36746
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36611
36747
|
}, [refreshUnreadCount, channelUpdateCount]);
|
|
36612
36748
|
if (!Preview)
|
|
36613
36749
|
return null;
|
|
@@ -36664,6 +36800,7 @@ var useChannelSearch = function (_a) {
|
|
|
36664
36800
|
};
|
|
36665
36801
|
document.addEventListener('click', clickListener);
|
|
36666
36802
|
return function () { return document.removeEventListener('click', clickListener); };
|
|
36803
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36667
36804
|
}, [disabled, inputIsFocused, query, exitSearch, clearSearchOnClickOutside]);
|
|
36668
36805
|
React.useEffect(function () {
|
|
36669
36806
|
if (!inputRef.current || disabled)
|
|
@@ -36675,8 +36812,10 @@ var useChannelSearch = function (_a) {
|
|
|
36675
36812
|
inputRef.current.addEventListener('keydown', handleKeyDown);
|
|
36676
36813
|
return function () {
|
|
36677
36814
|
var _a;
|
|
36815
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36678
36816
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeyDown);
|
|
36679
36817
|
};
|
|
36818
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36680
36819
|
}, [disabled]);
|
|
36681
36820
|
var selectResult = React.useCallback(function (result) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
36682
36821
|
var selectedChannel, newChannel;
|
|
@@ -36715,7 +36854,9 @@ var useChannelSearch = function (_a) {
|
|
|
36715
36854
|
return [2 /*return*/];
|
|
36716
36855
|
}
|
|
36717
36856
|
});
|
|
36718
|
-
}); },
|
|
36857
|
+
}); },
|
|
36858
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36859
|
+
[clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
|
|
36719
36860
|
var getChannels = React.useCallback(function (text) { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
36720
36861
|
var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
|
|
36721
36862
|
var _b, _c, _d, _e, _f, _g;
|
|
@@ -36763,6 +36904,7 @@ var useChannelSearch = function (_a) {
|
|
|
36763
36904
|
}
|
|
36764
36905
|
});
|
|
36765
36906
|
}); }, [client, searchForChannels, searchQueryParams]);
|
|
36907
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36766
36908
|
var scheduleGetChannels = React.useCallback(debounce__default["default"](getChannels, searchDebounceIntervalMs), [
|
|
36767
36909
|
getChannels,
|
|
36768
36910
|
searchDebounceIntervalMs,
|
|
@@ -36870,11 +37012,13 @@ var SearchBar = function (props) {
|
|
|
36870
37012
|
(_a = props.inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focus', handleFocus);
|
|
36871
37013
|
(_b = props.inputRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('blur', handleBlur);
|
|
36872
37014
|
};
|
|
37015
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36873
37016
|
}, []);
|
|
36874
37017
|
var handleClearClick = React.useCallback(function () {
|
|
36875
37018
|
var _a;
|
|
36876
37019
|
exitSearch();
|
|
36877
37020
|
(_a = inputProps.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
37021
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36878
37022
|
}, []);
|
|
36879
37023
|
var closeAppMenu = React.useCallback(function () { return setMenuIsOpen(false); }, []);
|
|
36880
37024
|
return (React__default["default"].createElement("div", { className: 'str-chat__channel-search-bar', "data-testid": 'search-bar', ref: searchBarRef },
|
|
@@ -36956,7 +37100,9 @@ var SearchResults = function (props) {
|
|
|
36956
37100
|
return setFocusedResult(undefined);
|
|
36957
37101
|
}
|
|
36958
37102
|
}
|
|
36959
|
-
},
|
|
37103
|
+
},
|
|
37104
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37105
|
+
[focusedResult]);
|
|
36960
37106
|
React.useEffect(function () {
|
|
36961
37107
|
document.addEventListener('keydown', handleKeyDown, false);
|
|
36962
37108
|
return function () { return document.removeEventListener('keydown', handleKeyDown); };
|
|
@@ -37037,6 +37183,7 @@ var UnMemoizedLoadMoreButton = function (_a) {
|
|
|
37037
37183
|
var loading = typeof isLoading !== 'undefined' ? isLoading : refreshing;
|
|
37038
37184
|
React.useEffect(function () {
|
|
37039
37185
|
deprecationAndReplacementWarning([[{ refreshing: refreshing }, { isLoading: isLoading }]], 'LoadMoreButton');
|
|
37186
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37040
37187
|
}, []);
|
|
37041
37188
|
return (React__default["default"].createElement("div", { className: 'str-chat__load-more-button' },
|
|
37042
37189
|
React__default["default"].createElement("button", { "aria-label": 'Load More Channels', className: 'str-chat__load-more-button__button str-chat__cta-button', "data-testid": 'load-more-button', disabled: loading, onClick: onClick }, loading ? React__default["default"].createElement(LoadingIndicator, null) : childrenOrDefaultString)));
|
|
@@ -37048,6 +37195,7 @@ var UnMemoizedLoadMorePaginator = function (props) {
|
|
|
37048
37195
|
var loadingState = typeof isLoading !== 'undefined' ? isLoading : refreshing;
|
|
37049
37196
|
React.useEffect(function () {
|
|
37050
37197
|
deprecationAndReplacementWarning([[{ refreshing: refreshing }, { isLoading: isLoading }]], 'LoadMorePaginator');
|
|
37198
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37051
37199
|
}, []);
|
|
37052
37200
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
37053
37201
|
!reverse && children,
|
|
@@ -37119,11 +37267,13 @@ var UnMemoizedChannelList = function (props) {
|
|
|
37119
37267
|
setSearchActive(true);
|
|
37120
37268
|
}
|
|
37121
37269
|
(_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearch) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps, event);
|
|
37270
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37122
37271
|
}, []);
|
|
37123
37272
|
var onSearchExit = React.useCallback(function () {
|
|
37124
37273
|
var _a;
|
|
37125
37274
|
setSearchActive(false);
|
|
37126
37275
|
(_a = additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.onSearchExit) === null || _a === void 0 ? void 0 : _a.call(additionalChannelSearchProps);
|
|
37276
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37127
37277
|
}, []);
|
|
37128
37278
|
var _u = usePaginatedChannels(client, filters || DEFAULT_FILTERS, sort || DEFAULT_SORT, options || DEFAULT_OPTIONS, activeChannelHandler, recoveryThrottleIntervalMs), channels = _u.channels, hasNextPage = _u.hasNextPage, loadNextPage = _u.loadNextPage, setChannels = _u.setChannels;
|
|
37129
37279
|
var loadedChannels = channelRenderFilterFn ? channelRenderFilterFn(channels) : channels;
|
|
@@ -37151,6 +37301,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
37151
37301
|
client.off('channel.deleted', handleEvent);
|
|
37152
37302
|
client.off('channel.hidden', handleEvent);
|
|
37153
37303
|
};
|
|
37304
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37154
37305
|
}, [channel === null || channel === void 0 ? void 0 : channel.cid]);
|
|
37155
37306
|
var renderChannel = function (item) {
|
|
37156
37307
|
var previewProps = {
|
|
@@ -37184,7 +37335,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
37184
37335
|
*/
|
|
37185
37336
|
var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
|
|
37186
37337
|
|
|
37187
|
-
var version = '11.
|
|
37338
|
+
var version = '11.4.0';
|
|
37188
37339
|
|
|
37189
37340
|
var useChat = function (_a) {
|
|
37190
37341
|
var _b, _c;
|
|
@@ -37226,6 +37377,7 @@ var useChat = function (_a) {
|
|
|
37226
37377
|
};
|
|
37227
37378
|
client.on('notification.mutes_updated', handleEvent);
|
|
37228
37379
|
return function () { return client.off('notification.mutes_updated', handleEvent); };
|
|
37380
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37229
37381
|
}, [clientMutes === null || clientMutes === void 0 ? void 0 : clientMutes.length]);
|
|
37230
37382
|
React.useEffect(function () {
|
|
37231
37383
|
var _a;
|
|
@@ -37241,6 +37393,7 @@ var useChat = function (_a) {
|
|
|
37241
37393
|
streami18n.getTranslators().then(function (translator) {
|
|
37242
37394
|
setTranslators(icons.__assign(icons.__assign({}, translator), { userLanguage: userLanguage || defaultLanguage }));
|
|
37243
37395
|
});
|
|
37396
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37244
37397
|
}, [i18nInstance]);
|
|
37245
37398
|
var setActiveChannel = React.useCallback(function (activeChannel, watchers, event) {
|
|
37246
37399
|
if (watchers === void 0) { watchers = {}; }
|
|
@@ -37302,7 +37455,9 @@ var useCreateChatContext = function (value) {
|
|
|
37302
37455
|
theme: theme,
|
|
37303
37456
|
themeVersion: themeVersion,
|
|
37304
37457
|
useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
|
|
37305
|
-
}); },
|
|
37458
|
+
}); },
|
|
37459
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37460
|
+
[
|
|
37306
37461
|
channelCid,
|
|
37307
37462
|
channelsQueryError,
|
|
37308
37463
|
channelsQueryInProgress,
|
|
@@ -37399,59 +37554,6 @@ var Chat = function (props) {
|
|
|
37399
37554
|
React__default["default"].createElement(icons.TranslationProvider, { value: translators }, children)));
|
|
37400
37555
|
};
|
|
37401
37556
|
|
|
37402
|
-
var UnMemoizedDateSeparator = function (props) {
|
|
37403
|
-
var messageCreatedAt = props.date, formatDate = props.formatDate, _a = props.position, position = _a === void 0 ? 'right' : _a, unread = props.unread;
|
|
37404
|
-
var _b = icons.useTranslationContext('DateSeparator'), t = _b.t, tDateTimeParser = _b.tDateTimeParser;
|
|
37405
|
-
var formattedDate = getDateString({
|
|
37406
|
-
calendar: true,
|
|
37407
|
-
formatDate: formatDate,
|
|
37408
|
-
messageCreatedAt: messageCreatedAt,
|
|
37409
|
-
tDateTimeParser: tDateTimeParser,
|
|
37410
|
-
});
|
|
37411
|
-
return (React__default["default"].createElement("div", { className: 'str-chat__date-separator', "data-testid": 'date-separator' },
|
|
37412
|
-
(position === 'right' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' })),
|
|
37413
|
-
React__default["default"].createElement("div", { className: 'str-chat__date-separator-date' }, unread ? "".concat(t('New'), " - ").concat(formattedDate) : formattedDate),
|
|
37414
|
-
(position === 'left' || position === 'center') && (React__default["default"].createElement("hr", { className: 'str-chat__date-separator-line' }))));
|
|
37415
|
-
};
|
|
37416
|
-
/**
|
|
37417
|
-
* A simple date separator between messages.
|
|
37418
|
-
*/
|
|
37419
|
-
var DateSeparator = React__default["default"].memo(UnMemoizedDateSeparator);
|
|
37420
|
-
|
|
37421
|
-
/**
|
|
37422
|
-
* Component to display system and channel event messages
|
|
37423
|
-
*/
|
|
37424
|
-
var UnMemoizedEventComponent = function (props) {
|
|
37425
|
-
var _a, _b, _c;
|
|
37426
|
-
var _d = props.Avatar, Avatar$1 = _d === void 0 ? Avatar : _d, message = props.message;
|
|
37427
|
-
var tDateTimeParser = icons.useTranslationContext('EventComponent').tDateTimeParser;
|
|
37428
|
-
var _e = message.created_at, created_at = _e === void 0 ? '' : _e, event = message.event, text = message.text, type = message.type;
|
|
37429
|
-
var getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser: tDateTimeParser };
|
|
37430
|
-
if (type === 'system')
|
|
37431
|
-
return (React__default["default"].createElement("div", { className: 'str-chat__message--system', "data-testid": 'message-system' },
|
|
37432
|
-
React__default["default"].createElement("div", { className: 'str-chat__message--system__text' },
|
|
37433
|
-
React__default["default"].createElement("div", { className: 'str-chat__message--system__line' }),
|
|
37434
|
-
React__default["default"].createElement("p", null, text),
|
|
37435
|
-
React__default["default"].createElement("div", { className: 'str-chat__message--system__line' })),
|
|
37436
|
-
React__default["default"].createElement("div", { className: 'str-chat__message--system__date' },
|
|
37437
|
-
React__default["default"].createElement("strong", null,
|
|
37438
|
-
getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'dddd' })),
|
|
37439
|
-
" "),
|
|
37440
|
-
"at ",
|
|
37441
|
-
getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'hh:mm A' })))));
|
|
37442
|
-
if ((event === null || event === void 0 ? void 0 : event.type) === 'member.removed' || (event === null || event === void 0 ? void 0 : event.type) === 'member.added') {
|
|
37443
|
-
var name_1 = ((_a = event.user) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event.user) === null || _b === void 0 ? void 0 : _b.id);
|
|
37444
|
-
var sentence = "".concat(name_1, " ").concat(event.type === 'member.added' ? 'has joined the chat' : 'was removed from the chat');
|
|
37445
|
-
return (React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event' },
|
|
37446
|
-
React__default["default"].createElement(Avatar$1, { image: (_c = event.user) === null || _c === void 0 ? void 0 : _c.image, name: name_1, user: event.user }),
|
|
37447
|
-
React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__content' },
|
|
37448
|
-
React__default["default"].createElement("em", { className: 'str-chat__event-component__channel-event__sentence' }, sentence),
|
|
37449
|
-
React__default["default"].createElement("div", { className: 'str-chat__event-component__channel-event__date' }, getDateString(icons.__assign(icons.__assign({}, getDateOptions), { format: 'LT' }))))));
|
|
37450
|
-
}
|
|
37451
|
-
return null;
|
|
37452
|
-
};
|
|
37453
|
-
var EventComponent = React__default["default"].memo(UnMemoizedEventComponent);
|
|
37454
|
-
|
|
37455
37557
|
/**
|
|
37456
37558
|
* Prevents Chrome hangups
|
|
37457
37559
|
* See: https://stackoverflow.com/questions/47524205/random-high-content-download-time-in-chrome/47684257#47684257
|
|
@@ -37507,6 +37609,7 @@ var InfiniteScroll = function (props) {
|
|
|
37507
37609
|
[{ hasMore: hasMore }, { hasPreviousPage: hasPreviousPage }],
|
|
37508
37610
|
[{ loadMore: loadMore }, { loadPreviousPage: loadPreviousPage }],
|
|
37509
37611
|
], 'InfiniteScroll');
|
|
37612
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37510
37613
|
}, []);
|
|
37511
37614
|
React.useLayoutEffect(function () {
|
|
37512
37615
|
var _a;
|
|
@@ -37860,7 +37963,9 @@ var useReactionHandler = function (message) {
|
|
|
37860
37963
|
var newOwnReactions = add
|
|
37861
37964
|
? icons.__spreadArray([reaction], ((message === null || message === void 0 ? void 0 : message.own_reactions) || []), true) : (_b = message === null || message === void 0 ? void 0 : message.own_reactions) === null || _b === void 0 ? void 0 : _b.filter(function (item) { return item.type !== reaction.type; });
|
|
37862
37965
|
return icons.__assign(icons.__assign({}, message), { latest_reactions: newReactions || message.latest_reactions, own_reactions: newOwnReactions, reaction_counts: newReactionCounts, reaction_scores: newReactionCounts });
|
|
37863
|
-
},
|
|
37966
|
+
},
|
|
37967
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37968
|
+
[client.user, client.userID]);
|
|
37864
37969
|
var createReactionPreview = function (type) {
|
|
37865
37970
|
var _a;
|
|
37866
37971
|
return ({
|
|
@@ -37966,7 +38071,9 @@ var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef
|
|
|
37966
38071
|
return;
|
|
37967
38072
|
}
|
|
37968
38073
|
setShowDetailedReactions(false);
|
|
37969
|
-
},
|
|
38074
|
+
},
|
|
38075
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38076
|
+
[setShowDetailedReactions, reactionSelectorRef]);
|
|
37970
38077
|
React.useEffect(function () {
|
|
37971
38078
|
var messageWrapper = messageWrapperRef === null || messageWrapperRef === void 0 ? void 0 : messageWrapperRef.current;
|
|
37972
38079
|
if (showDetailedReactions && !hasListener.current) {
|
|
@@ -38245,7 +38352,9 @@ var useEnrichedMessages = function (args) {
|
|
|
38245
38352
|
acc[message.id] = style;
|
|
38246
38353
|
return acc;
|
|
38247
38354
|
}, {});
|
|
38248
|
-
},
|
|
38355
|
+
},
|
|
38356
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38357
|
+
[messagesWithDates, noGroupByUser]);
|
|
38249
38358
|
return { messageGroupStyles: messageGroupStyles, messages: messagesWithDates };
|
|
38250
38359
|
};
|
|
38251
38360
|
|
|
@@ -38260,9 +38369,9 @@ var useLastReadData = function (props) {
|
|
|
38260
38369
|
};
|
|
38261
38370
|
|
|
38262
38371
|
var useMessageListElements = function (props) {
|
|
38263
|
-
var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
38372
|
+
var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, renderMessages = props.renderMessages, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
38264
38373
|
var _a = icons.useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
|
|
38265
|
-
var
|
|
38374
|
+
var components = icons.useComponentContext('useMessageListElements');
|
|
38266
38375
|
// get the readData, but only for messages submitted by the user themselves
|
|
38267
38376
|
var readData = useLastReadData({
|
|
38268
38377
|
messages: enrichedMessages,
|
|
@@ -38270,34 +38379,28 @@ var useMessageListElements = function (props) {
|
|
|
38270
38379
|
returnAllReadData: returnAllReadData,
|
|
38271
38380
|
userID: client.userID,
|
|
38272
38381
|
});
|
|
38273
|
-
var
|
|
38382
|
+
var lastReceivedMessageId = React.useMemo(function () { return getLastReceived(enrichedMessages); }, [
|
|
38383
|
+
enrichedMessages,
|
|
38384
|
+
]);
|
|
38274
38385
|
var elements = React.useMemo(function () {
|
|
38275
|
-
return
|
|
38276
|
-
|
|
38277
|
-
|
|
38278
|
-
|
|
38279
|
-
|
|
38280
|
-
|
|
38281
|
-
|
|
38282
|
-
|
|
38283
|
-
return (React__default["default"].createElement("li", { key: 'intro' },
|
|
38284
|
-
React__default["default"].createElement(HeaderComponent, null)));
|
|
38285
|
-
}
|
|
38286
|
-
if (message.type === 'system') {
|
|
38287
|
-
return (React__default["default"].createElement("li", { key: message.id || message.created_at },
|
|
38288
|
-
React__default["default"].createElement(MessageSystem, { message: message })));
|
|
38289
|
-
}
|
|
38290
|
-
var groupStyles = messageGroupStyles[message.id] || '';
|
|
38291
|
-
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
38292
|
-
return (React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at },
|
|
38293
|
-
React__default["default"].createElement(Message, icons.__assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
|
|
38386
|
+
return renderMessages({
|
|
38387
|
+
components: components,
|
|
38388
|
+
customClasses: customClasses,
|
|
38389
|
+
lastReceivedMessageId: lastReceivedMessageId,
|
|
38390
|
+
messageGroupStyles: messageGroupStyles,
|
|
38391
|
+
messages: enrichedMessages,
|
|
38392
|
+
readData: readData,
|
|
38393
|
+
sharedMessageProps: icons.__assign(icons.__assign({}, internalMessageProps), { threadList: threadList }),
|
|
38294
38394
|
});
|
|
38295
|
-
},
|
|
38395
|
+
},
|
|
38396
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38397
|
+
[
|
|
38296
38398
|
enrichedMessages,
|
|
38297
38399
|
internalMessageProps,
|
|
38298
|
-
|
|
38400
|
+
lastReceivedMessageId,
|
|
38299
38401
|
messageGroupStyles,
|
|
38300
38402
|
readData,
|
|
38403
|
+
renderMessages,
|
|
38301
38404
|
threadList,
|
|
38302
38405
|
]);
|
|
38303
38406
|
return elements;
|
|
@@ -38354,6 +38457,7 @@ function useMessageListScrollManager(params) {
|
|
|
38354
38457
|
}
|
|
38355
38458
|
messages.current = newMessages;
|
|
38356
38459
|
measures.current = newMeasures;
|
|
38460
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38357
38461
|
}, [measures, messages, params.messages]);
|
|
38358
38462
|
return function (scrollTopValue) {
|
|
38359
38463
|
scrollTop.current = scrollTopValue;
|
|
@@ -38383,6 +38487,7 @@ var useScrollLocationLogic = function (params) {
|
|
|
38383
38487
|
setWrapperRect(listElement.getBoundingClientRect());
|
|
38384
38488
|
scrollToBottom();
|
|
38385
38489
|
}
|
|
38490
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38386
38491
|
}, [listElement, hasMoreNewer]);
|
|
38387
38492
|
var updateScrollTop = useMessageListScrollManager({
|
|
38388
38493
|
loadMoreScrollThreshold: loadMoreScrollThreshold,
|
|
@@ -38533,24 +38638,50 @@ var MessageListMainPanel = function (_a) {
|
|
|
38533
38638
|
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
38534
38639
|
};
|
|
38535
38640
|
|
|
38641
|
+
function defaultRenderMessages(_a) {
|
|
38642
|
+
var components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, readData = _a.readData, messageProps = _a.sharedMessageProps;
|
|
38643
|
+
var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem;
|
|
38644
|
+
return messages.map(function (message) {
|
|
38645
|
+
if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
|
|
38646
|
+
message.date &&
|
|
38647
|
+
icons.isDate(message.date) &&
|
|
38648
|
+
DateSeparator) {
|
|
38649
|
+
return (React__default["default"].createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
|
|
38650
|
+
React__default["default"].createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
|
|
38651
|
+
}
|
|
38652
|
+
if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
38653
|
+
return (React__default["default"].createElement("li", { key: 'intro' },
|
|
38654
|
+
React__default["default"].createElement(HeaderComponent, null)));
|
|
38655
|
+
}
|
|
38656
|
+
if (message.type === 'system' && MessageSystem) {
|
|
38657
|
+
return (React__default["default"].createElement("li", { key: message.id || message.created_at },
|
|
38658
|
+
React__default["default"].createElement(MessageSystem, { message: message })));
|
|
38659
|
+
}
|
|
38660
|
+
var groupStyles = messageGroupStyles[message.id] || '';
|
|
38661
|
+
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
38662
|
+
return (React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at },
|
|
38663
|
+
React__default["default"].createElement(Message, icons.__assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))));
|
|
38664
|
+
});
|
|
38665
|
+
}
|
|
38666
|
+
|
|
38536
38667
|
var MessageListWithContext = function (props) {
|
|
38537
38668
|
var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
38538
38669
|
_h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
38539
|
-
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.messageLimit, messageLimit =
|
|
38540
|
-
var
|
|
38541
|
-
var
|
|
38670
|
+
returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.renderMessages, renderMessages = _l === void 0 ? defaultRenderMessages : _l, _m = props.messageLimit, messageLimit = _m === void 0 ? 100 : _m, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _o = props.hasMoreNewer, hasMoreNewer = _o === void 0 ? false : _o, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _p = props.jumpToLatestMessage, jumpToLatestMessage = _p === void 0 ? function () { return Promise.resolve(); } : _p;
|
|
38671
|
+
var _q = React__default["default"].useState(null), listElement = _q[0], setListElement = _q[1];
|
|
38672
|
+
var _r = React__default["default"].useState(null), ulElement = _r[0], setUlElement = _r[1];
|
|
38542
38673
|
var customClasses = icons.useChatContext('MessageList').customClasses;
|
|
38543
|
-
var
|
|
38674
|
+
var _s = icons.useComponentContext('MessageList'), _t = _s.EmptyStateIndicator, EmptyStateIndicator$1 = _t === void 0 ? EmptyStateIndicator : _t, _u = _s.LoadingIndicator, LoadingIndicator$1 = _u === void 0 ? LoadingIndicator : _u, _v = _s.MessageListNotifications, MessageListNotifications$1 = _v === void 0 ? MessageListNotifications : _v, _w = _s.MessageNotification, MessageNotification$1 = _w === void 0 ? MessageNotification : _w, _x = _s.TypingIndicator, TypingIndicator$1 = _x === void 0 ? TypingIndicator : _x;
|
|
38544
38675
|
var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
|
|
38545
|
-
var
|
|
38676
|
+
var _y = useScrollLocationLogic({
|
|
38546
38677
|
hasMoreNewer: hasMoreNewer,
|
|
38547
38678
|
listElement: listElement,
|
|
38548
38679
|
loadMoreScrollThreshold: loadMoreScrollThreshold,
|
|
38549
38680
|
messages: messages,
|
|
38550
38681
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
38551
38682
|
suppressAutoscroll: suppressAutoscroll,
|
|
38552
|
-
}), hasNewMessages =
|
|
38553
|
-
var
|
|
38683
|
+
}), hasNewMessages = _y.hasNewMessages, isMessageListScrolledToBottom = _y.isMessageListScrolledToBottom, onScroll = _y.onScroll, scrollToBottom = _y.scrollToBottom, wrapperRect = _y.wrapperRect;
|
|
38684
|
+
var _z = useEnrichedMessages({
|
|
38554
38685
|
channel: channel,
|
|
38555
38686
|
disableDateSeparator: disableDateSeparator,
|
|
38556
38687
|
groupStyles: groupStyles,
|
|
@@ -38559,7 +38690,7 @@ var MessageListWithContext = function (props) {
|
|
|
38559
38690
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
38560
38691
|
messages: messages,
|
|
38561
38692
|
noGroupByUser: noGroupByUser,
|
|
38562
|
-
}), messageGroupStyles =
|
|
38693
|
+
}), messageGroupStyles = _z.messageGroupStyles, enrichedMessages = _z.messages;
|
|
38563
38694
|
var elements = useMessageListElements({
|
|
38564
38695
|
enrichedMessages: enrichedMessages,
|
|
38565
38696
|
internalMessageProps: {
|
|
@@ -38590,6 +38721,7 @@ var MessageListWithContext = function (props) {
|
|
|
38590
38721
|
},
|
|
38591
38722
|
messageGroupStyles: messageGroupStyles,
|
|
38592
38723
|
read: read,
|
|
38724
|
+
renderMessages: renderMessages,
|
|
38593
38725
|
returnAllReadData: returnAllReadData,
|
|
38594
38726
|
threadList: threadList,
|
|
38595
38727
|
});
|
|
@@ -38628,6 +38760,7 @@ var MessageListWithContext = function (props) {
|
|
|
38628
38760
|
var element = ulElement === null || ulElement === void 0 ? void 0 : ulElement.querySelector("[data-message-id='".concat(highlightedMessageId, "']"));
|
|
38629
38761
|
element === null || element === void 0 ? void 0 : element.scrollIntoView({ block: 'center' });
|
|
38630
38762
|
}
|
|
38763
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38631
38764
|
}, [highlightedMessageId]);
|
|
38632
38765
|
var showEmptyStateIndicator = elements.length === 0 && !threadList;
|
|
38633
38766
|
return (React__default["default"].createElement(icons.MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
|
|
@@ -38695,6 +38828,7 @@ var UnMemoizedScrollToBottomButton = function (props) {
|
|
|
38695
38828
|
return function () {
|
|
38696
38829
|
client.off(observedEvent, handleEvent);
|
|
38697
38830
|
};
|
|
38831
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38698
38832
|
}, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
|
|
38699
38833
|
React.useEffect(function () {
|
|
38700
38834
|
if (isMessageListScrolledToBottom) {
|
|
@@ -38805,6 +38939,7 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
|
38805
38939
|
return 0;
|
|
38806
38940
|
// TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
|
|
38807
38941
|
// that's why the second dependency is necessary
|
|
38942
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38808
38943
|
}, [firstRealMessageIndex, messages, messages === null || messages === void 0 ? void 0 : messages.length]);
|
|
38809
38944
|
return numItemsPrepended;
|
|
38810
38945
|
}
|
|
@@ -38829,6 +38964,7 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
|
|
|
38829
38964
|
initialFocusRegistered.current = true;
|
|
38830
38965
|
recheckForNewOwnMessage();
|
|
38831
38966
|
}
|
|
38967
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38832
38968
|
}, [messages, messages === null || messages === void 0 ? void 0 : messages.length]);
|
|
38833
38969
|
return recheckForNewOwnMessage;
|
|
38834
38970
|
}
|
|
@@ -38846,6 +38982,7 @@ var useGiphyPreview = function (separateGiphyPreview) {
|
|
|
38846
38982
|
if (separateGiphyPreview)
|
|
38847
38983
|
client.on('message.new', handleEvent);
|
|
38848
38984
|
return function () { return client.off('message.new', handleEvent); };
|
|
38985
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38849
38986
|
}, [separateGiphyPreview]);
|
|
38850
38987
|
return { giphyPreviewMessage: giphyPreviewMessage, setGiphyPreviewMessage: setGiphyPreviewMessage };
|
|
38851
38988
|
};
|
|
@@ -38895,6 +39032,7 @@ var useScrollToBottomOnNewMessage = function (_a) {
|
|
|
38895
39032
|
window.removeEventListener('focus', scrollToBottomIfConfigured);
|
|
38896
39033
|
window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
|
|
38897
39034
|
};
|
|
39035
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38898
39036
|
}, [scrollToBottomIfConfigured]);
|
|
38899
39037
|
};
|
|
38900
39038
|
|
|
@@ -38991,7 +39129,7 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
|
|
|
38991
39129
|
return messages.length - 1;
|
|
38992
39130
|
}
|
|
38993
39131
|
var VirtualizedMessageListWithContext = function (props) {
|
|
38994
|
-
var additionalMessageInputProps = props.additionalMessageInputProps, _a = props.additionalVirtuosoProps, additionalVirtuosoProps = _a === void 0 ? {} : _a, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? true : _b, groupStyles = props.groupStyles,
|
|
39132
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, _a = props.additionalVirtuosoProps, additionalVirtuosoProps = _a === void 0 ? {} : _a, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? true : _b, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _e = props.messageLimit, messageLimit = _e === void 0 ? 100 : _e, messages = props.messages, notifications = props.notifications,
|
|
38995
39133
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
38996
39134
|
_f = props.overscan,
|
|
38997
39135
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
@@ -39025,6 +39163,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
39025
39163
|
setGiphyPreviewMessage: setGiphyPreviewMessage,
|
|
39026
39164
|
userId: client.userID || '',
|
|
39027
39165
|
});
|
|
39166
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39028
39167
|
}, [
|
|
39029
39168
|
disableDateSeparator,
|
|
39030
39169
|
hideDeletedMessages,
|
|
@@ -39054,6 +39193,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
39054
39193
|
}, {});
|
|
39055
39194
|
},
|
|
39056
39195
|
// processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage
|
|
39196
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39057
39197
|
[processedMessages.length, shouldGroupByUser, groupStylesFn]);
|
|
39058
39198
|
var _w = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _w.atBottom, isMessageListScrolledToBottom = _w.isMessageListScrolledToBottom, newMessagesNotification = _w.newMessagesNotification, setIsMessageListScrolledToBottom = _w.setIsMessageListScrolledToBottom, setNewMessagesNotification = _w.setNewMessagesNotification;
|
|
39059
39199
|
var scrollToBottom = React.useCallback(function () { return icons.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -39103,19 +39243,14 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
39103
39243
|
var atBottomStateChange = function (isAtBottom) {
|
|
39104
39244
|
atBottom.current = isAtBottom;
|
|
39105
39245
|
setIsMessageListScrolledToBottom(isAtBottom);
|
|
39106
|
-
if (isAtBottom
|
|
39107
|
-
|
|
39246
|
+
if (isAtBottom) {
|
|
39247
|
+
loadMoreNewer === null || loadMoreNewer === void 0 ? void 0 : loadMoreNewer(messageLimit);
|
|
39248
|
+
setNewMessagesNotification === null || setNewMessagesNotification === void 0 ? void 0 : setNewMessagesNotification(false);
|
|
39108
39249
|
}
|
|
39109
39250
|
};
|
|
39110
|
-
var
|
|
39111
|
-
if (
|
|
39112
|
-
loadMore(messageLimit);
|
|
39113
|
-
}
|
|
39114
|
-
};
|
|
39115
|
-
var endReached = function () {
|
|
39116
|
-
if (hasMoreNewer && loadMoreNewer) {
|
|
39117
|
-
loadMoreNewer(messageLimit);
|
|
39118
|
-
}
|
|
39251
|
+
var atTopStateChange = function (isAtTop) {
|
|
39252
|
+
if (isAtTop)
|
|
39253
|
+
loadMore === null || loadMore === void 0 ? void 0 : loadMore(messageLimit);
|
|
39119
39254
|
};
|
|
39120
39255
|
React.useEffect(function () {
|
|
39121
39256
|
var _a;
|
|
@@ -39125,13 +39260,14 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
39125
39260
|
(_a = virtuoso.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex({ align: 'center', index: index });
|
|
39126
39261
|
}
|
|
39127
39262
|
}
|
|
39263
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39128
39264
|
}, [highlightedMessageId]);
|
|
39129
39265
|
if (!processedMessages)
|
|
39130
39266
|
return null;
|
|
39131
39267
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
39132
39268
|
React__default["default"].createElement(MessageListMainPanel, null,
|
|
39133
39269
|
React__default["default"].createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
39134
|
-
React__default["default"].createElement(reactVirtuoso.Virtuoso, icons.__assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold:
|
|
39270
|
+
React__default["default"].createElement(reactVirtuoso.Virtuoso, icons.__assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold: 100, atTopStateChange: atTopStateChange, atTopThreshold: 100, className: 'str-chat__message-list-scroll', components: icons.__assign({ EmptyPlaceholder: EmptyPlaceholder, Footer: Footer, Header: Header, Item: Item }, virtuosoComponentsFromProps), computeItemKey: computeItemKey, context: {
|
|
39135
39271
|
additionalMessageInputProps: additionalMessageInputProps,
|
|
39136
39272
|
closeReactionSelectorOnClick: closeReactionSelectorOnClick,
|
|
39137
39273
|
customClasses: customClasses,
|
|
@@ -39151,7 +39287,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
39151
39287
|
shouldGroupByUser: shouldGroupByUser,
|
|
39152
39288
|
threadList: threadList,
|
|
39153
39289
|
virtuosoRef: virtuoso,
|
|
39154
|
-
},
|
|
39290
|
+
}, firstItemIndex: calculateFirstItemIndex(numItemsPrepended), followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: messageRenderer, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, overridingVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))))),
|
|
39155
39291
|
React__default["default"].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom, threadList: threadList }),
|
|
39156
39292
|
giphyPreviewMessage && React__default["default"].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
|
|
39157
39293
|
};
|
|
@@ -39233,6 +39369,7 @@ var ThreadInner = function (props) {
|
|
|
39233
39369
|
// FIXME: integrators can customize channel query options but cannot customize channel.getReplies() options
|
|
39234
39370
|
loadMoreThread();
|
|
39235
39371
|
}
|
|
39372
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39236
39373
|
}, []);
|
|
39237
39374
|
if (!thread)
|
|
39238
39375
|
return null;
|
|
@@ -39456,6 +39593,7 @@ exports.darkModeTheme = darkModeTheme;
|
|
|
39456
39593
|
exports.defaultAllowedTagNames = defaultAllowedTagNames;
|
|
39457
39594
|
exports.defaultPinPermissions = defaultPinPermissions;
|
|
39458
39595
|
exports.defaultReactionOptions = defaultReactionOptions;
|
|
39596
|
+
exports.defaultRenderMessages = defaultRenderMessages;
|
|
39459
39597
|
exports.defaultScrollToItem = defaultScrollToItem;
|
|
39460
39598
|
exports.defaultTimestampFormat = defaultTimestampFormat;
|
|
39461
39599
|
exports.emojiMarkdownPlugin = emojiMarkdownPlugin;
|