stream-chat-react 10.11.0 → 10.13.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 +180 -101
- 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/Channel/Channel.d.ts +8 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +9 -9
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +4 -1
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +3 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +6 -1
- package/dist/components/ChannelPreview/hooks/index.d.ts +1 -0
- package/dist/components/ChannelPreview/hooks/index.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/index.js +1 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +17 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts.map +1 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +58 -0
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +4 -3
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +52 -31
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +1 -1
- package/dist/components/MessageInput/MessageInput.d.ts +2 -0
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +4 -4
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +2 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
- package/dist/index.cjs.js +136 -50
- package/dist/index.cjs.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -31006,7 +31006,7 @@ var MessageInputFlat = function () {
|
|
|
31006
31006
|
var MessageInputV1 = function () {
|
|
31007
31007
|
var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
31008
31008
|
var t = useTranslationContext('MessageInputFlat').t;
|
|
31009
|
-
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
31009
|
+
var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, hideSendButton = _b.hideSendButton, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
31010
31010
|
var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h, _j = _c.AttachmentPreviewList, AttachmentPreviewList = _j === void 0 ? UploadsPreview : _j;
|
|
31011
31011
|
return (React__default["default"].createElement("div", { className: clsx('str-chat__input-flat', 'str-chat__message-input', {
|
|
31012
31012
|
'str-chat__input-flat--send-button-active': !!SendButton$1,
|
|
@@ -31033,12 +31033,12 @@ var MessageInputV1 = function () {
|
|
|
31033
31033
|
React__default["default"].createElement(FileUploadButton, { accepts: acceptedFiles, disabled: maxFilesLeft === 0, handleFiles: uploadNewFiles, multiple: multipleUploads },
|
|
31034
31034
|
React__default["default"].createElement("span", { className: 'str-chat__input-flat-fileupload' },
|
|
31035
31035
|
React__default["default"].createElement(FileUploadIcon, null)))))),
|
|
31036
|
-
!cooldownRemaining && React__default["default"].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
31036
|
+
!(cooldownRemaining || hideSendButton) && React__default["default"].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
31037
31037
|
};
|
|
31038
31038
|
var MessageInputV2 = function () {
|
|
31039
31039
|
var _a = useChannelStateContext('MessageInputV2'), _b = _a.acceptedFiles, acceptedFiles = _b === void 0 ? [] : _b, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
|
|
31040
31040
|
var t = useTranslationContext('MessageInputV2').t;
|
|
31041
|
-
var _c = useMessageInputContext('MessageInputV2'), closeEmojiPicker = _c.closeEmojiPicker, cooldownRemaining = _c.cooldownRemaining, emojiPickerIsOpen = _c.emojiPickerIsOpen, findAndEnqueueURLsToEnrich = _c.findAndEnqueueURLsToEnrich, handleSubmit = _c.handleSubmit, isUploadEnabled = _c.isUploadEnabled, linkPreviews = _c.linkPreviews, maxFilesLeft = _c.maxFilesLeft, message = _c.message, numberOfUploads = _c.numberOfUploads, openEmojiPicker = _c.openEmojiPicker, setCooldownRemaining = _c.setCooldownRemaining, text = _c.text, uploadNewFiles = _c.uploadNewFiles;
|
|
31041
|
+
var _c = useMessageInputContext('MessageInputV2'), closeEmojiPicker = _c.closeEmojiPicker, cooldownRemaining = _c.cooldownRemaining, emojiPickerIsOpen = _c.emojiPickerIsOpen, findAndEnqueueURLsToEnrich = _c.findAndEnqueueURLsToEnrich, handleSubmit = _c.handleSubmit, hideSendButton = _c.hideSendButton, isUploadEnabled = _c.isUploadEnabled, linkPreviews = _c.linkPreviews, maxFilesLeft = _c.maxFilesLeft, message = _c.message, numberOfUploads = _c.numberOfUploads, openEmojiPicker = _c.openEmojiPicker, setCooldownRemaining = _c.setCooldownRemaining, text = _c.text, uploadNewFiles = _c.uploadNewFiles;
|
|
31042
31042
|
var _d = useComponentContext('MessageInputV2'), _e = _d.AttachmentPreviewList, AttachmentPreviewList$1 = _e === void 0 ? AttachmentPreviewList : _e, _f = _d.CooldownTimer, CooldownTimer$1 = _f === void 0 ? CooldownTimer : _f, _g = _d.EmojiIcon, EmojiIcon = _g === void 0 ? EmojiPickerIcon : _g, _h = _d.FileUploadIcon, FileUploadIcon = _h === void 0 ? UploadIcon : _h, _j = _d.LinkPreviewList, LinkPreviewList$1 = _j === void 0 ? LinkPreviewList : _j, _k = _d.QuotedMessagePreview, QuotedMessagePreview$1 = _k === void 0 ? QuotedMessagePreview : _k, _l = _d.SendButton, SendButton$1 = _l === void 0 ? SendButton : _l;
|
|
31043
31043
|
var _m = React.useState(null), referenceElement = _m[0], setReferenceElement = _m[1];
|
|
31044
31044
|
var _o = React.useState(null), popperElement = _o[0], setPopperElement = _o[1];
|
|
@@ -31087,7 +31087,7 @@ var MessageInputV2 = function () {
|
|
|
31087
31087
|
React__default["default"].createElement(EmojiPicker, null))),
|
|
31088
31088
|
React__default["default"].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__emoji-picker-button', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker, ref: setReferenceElement, type: 'button' },
|
|
31089
31089
|
React__default["default"].createElement(EmojiIcon, null))))),
|
|
31090
|
-
!
|
|
31090
|
+
!hideSendButton && (React__default["default"].createElement(React__default["default"].Fragment, null, cooldownRemaining ? (React__default["default"].createElement(CooldownTimer$1, { cooldownInterval: cooldownRemaining, setCooldownRemaining: setCooldownRemaining })) : (React__default["default"].createElement(SendButton$1, { disabled: !numberOfUploads && !text.length, sendMessage: handleSubmit }))))))));
|
|
31091
31091
|
};
|
|
31092
31092
|
|
|
31093
31093
|
var EditMessageForm = function () {
|
|
@@ -32099,7 +32099,7 @@ var useMessageInputState = function (props) {
|
|
|
32099
32099
|
};
|
|
32100
32100
|
|
|
32101
32101
|
var useCreateMessageInputContext = function (value) {
|
|
32102
|
-
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, cancelURLEnrichment = value.cancelURLEnrichment, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, dismissLinkPreview = value.dismissLinkPreview, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, findAndEnqueueURLsToEnrich = value.findAndEnqueueURLsToEnrich, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, linkPreviews = value.linkPreviews, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, shouldSubmit = value.shouldSubmit, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
|
|
32102
|
+
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, cancelURLEnrichment = value.cancelURLEnrichment, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, dismissLinkPreview = value.dismissLinkPreview, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, findAndEnqueueURLsToEnrich = value.findAndEnqueueURLsToEnrich, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, hideSendButton = value.hideSendButton, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, linkPreviews = value.linkPreviews, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, shouldSubmit = value.shouldSubmit, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
|
|
32103
32103
|
var editing = message === null || message === void 0 ? void 0 : message.editing;
|
|
32104
32104
|
var fileUploadsValue = Object.entries(fileUploads)
|
|
32105
32105
|
// eslint-disable-next-line
|
|
@@ -32146,6 +32146,7 @@ var useCreateMessageInputContext = function (value) {
|
|
|
32146
32146
|
handleChange: handleChange,
|
|
32147
32147
|
handleEmojiKeyDown: handleEmojiKeyDown,
|
|
32148
32148
|
handleSubmit: handleSubmit,
|
|
32149
|
+
hideSendButton: hideSendButton,
|
|
32149
32150
|
imageOrder: imageOrder,
|
|
32150
32151
|
imageUploads: imageUploads,
|
|
32151
32152
|
insertText: insertText,
|
|
@@ -32190,6 +32191,7 @@ var useCreateMessageInputContext = function (value) {
|
|
|
32190
32191
|
emojiPickerIsOpen,
|
|
32191
32192
|
fileUploadsValue,
|
|
32192
32193
|
findAndEnqueueURLsToEnrich,
|
|
32194
|
+
hideSendButton,
|
|
32193
32195
|
imageUploadsValue,
|
|
32194
32196
|
isUploadEnabled,
|
|
32195
32197
|
linkPreviewsValue,
|
|
@@ -32242,7 +32244,7 @@ var MessageInputSmall = function () {
|
|
|
32242
32244
|
var setQuotedMessage = useChannelActionContext('MessageInputSmall').setQuotedMessage;
|
|
32243
32245
|
var t = useTranslationContext('MessageInputSmall').t;
|
|
32244
32246
|
var channel = useChatContext('MessageInputSmall').channel;
|
|
32245
|
-
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
32247
|
+
var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, hideSendButton = _b.hideSendButton, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
|
|
32246
32248
|
var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g, _h = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _h === void 0 ? QuotedMessagePreview : _h;
|
|
32247
32249
|
React.useEffect(function () {
|
|
32248
32250
|
var handleQuotedMessageUpdate = function (e) {
|
|
@@ -32285,7 +32287,7 @@ var MessageInputSmall = function () {
|
|
|
32285
32287
|
React__default["default"].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__small-message-input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker },
|
|
32286
32288
|
React__default["default"].createElement(EmojiIcon, null))))),
|
|
32287
32289
|
React__default["default"].createElement(EmojiPicker, { small: true })),
|
|
32288
|
-
!cooldownRemaining && React__default["default"].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
32290
|
+
!(cooldownRemaining || hideSendButton) && React__default["default"].createElement(SendButton$1, { sendMessage: handleSubmit })))));
|
|
32289
32291
|
};
|
|
32290
32292
|
|
|
32291
32293
|
var MMLReact = React__default["default"].lazy(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -32611,7 +32613,7 @@ var MessageSimpleWithContext = function (props) {
|
|
|
32611
32613
|
});
|
|
32612
32614
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
32613
32615
|
editing && (React__default["default"].createElement(Modal, { onClose: clearEditingState, open: editing },
|
|
32614
|
-
React__default["default"].createElement(MessageInput, __assign({ clearEditingState: clearEditingState, grow: true, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
|
|
32616
|
+
React__default["default"].createElement(MessageInput, __assign({ clearEditingState: clearEditingState, grow: true, hideSendButton: true, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
|
|
32615
32617
|
React__default["default"].createElement("div", { className: rootClassName, key: message.id },
|
|
32616
32618
|
themeVersion === '1' && React__default["default"].createElement(MessageStatus$1, null),
|
|
32617
32619
|
message.user && (React__default["default"].createElement(Avatar$1, { image: message.user.image, name: message.user.name || message.user.id, onClick: onUserClick, onMouseOver: onUserHover, user: message.user })),
|
|
@@ -33078,15 +33080,15 @@ var UnMemoizedChannel = function (props) {
|
|
|
33078
33080
|
};
|
|
33079
33081
|
var ChannelInner = function (props) {
|
|
33080
33082
|
var _a;
|
|
33081
|
-
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _d = props.LoadingErrorIndicator, LoadingErrorIndicator$1 =
|
|
33082
|
-
var
|
|
33083
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _d = props.initializeOnMount, initializeOnMount = _d === void 0 ? true : _d, _e = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _e === void 0 ? LoadingErrorIndicator : _e, _f = props.LoadingIndicator, LoadingIndicator = _f === void 0 ? LoadingChannel : _f, maxNumberOfFiles = props.maxNumberOfFiles, _g = props.multipleUploads, multipleUploads = _g === void 0 ? true : _g, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _h = props.optionalMessageInputProps, optionalMessageInputProps = _h === void 0 ? {} : _h, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
33084
|
+
var _j = useChatContext('Channel'), client = _j.client, customClasses = _j.customClasses, latestMessageDatesByChannels = _j.latestMessageDatesByChannels, mutes = _j.mutes, theme = _j.theme;
|
|
33083
33085
|
var t = useTranslationContext('Channel').t;
|
|
33084
|
-
var
|
|
33085
|
-
var
|
|
33086
|
-
var
|
|
33087
|
-
var
|
|
33086
|
+
var _k = useChannelContainerClasses({ customClasses: customClasses }), channelClass = _k.channelClass, chatClass = _k.chatClass, chatContainerClass = _k.chatContainerClass, windowsEmojiClass = _k.windowsEmojiClass;
|
|
33087
|
+
var _l = React.useState(channel.getConfig()), channelConfig = _l[0], setChannelConfig = _l[1];
|
|
33088
|
+
var _m = React.useState([]), notifications = _m[0], setNotifications = _m[1];
|
|
33089
|
+
var _o = React.useState(), quotedMessage = _o[0], setQuotedMessage = _o[1];
|
|
33088
33090
|
var notificationTimeouts = [];
|
|
33089
|
-
var
|
|
33091
|
+
var _p = React.useReducer(channelReducer, __assign(__assign({}, initialState), { loading: !channel.initialized })), state = _p[0], dispatch = _p[1];
|
|
33090
33092
|
var isMounted = useIsMounted();
|
|
33091
33093
|
var originalTitle = React.useRef('');
|
|
33092
33094
|
var lastRead = React.useRef(new Date());
|
|
@@ -33207,7 +33209,7 @@ var ChannelInner = function (props) {
|
|
|
33207
33209
|
return __generator(this, function (_d) {
|
|
33208
33210
|
switch (_d.label) {
|
|
33209
33211
|
case 0:
|
|
33210
|
-
if (
|
|
33212
|
+
if (!(!channel.initialized && initializeOnMount)) return [3 /*break*/, 4];
|
|
33211
33213
|
_d.label = 1;
|
|
33212
33214
|
case 1:
|
|
33213
33215
|
_d.trys.push([1, 3, , 4]);
|
|
@@ -33269,7 +33271,7 @@ var ChannelInner = function (props) {
|
|
|
33269
33271
|
client.off('user.deleted', handleEvent);
|
|
33270
33272
|
notificationTimeouts.forEach(clearTimeout);
|
|
33271
33273
|
};
|
|
33272
|
-
}, [channel.cid, doMarkReadRequest, channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events]);
|
|
33274
|
+
}, [channel.cid, doMarkReadRequest, channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events, initializeOnMount]);
|
|
33273
33275
|
React.useEffect(function () {
|
|
33274
33276
|
var _a;
|
|
33275
33277
|
if (!state.thread)
|
|
@@ -34193,7 +34195,9 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
|
|
|
34193
34195
|
return [4 /*yield*/, client.queryChannels(filters, sort || {}, newOptions)];
|
|
34194
34196
|
case 2:
|
|
34195
34197
|
channelQueryResponse = _b.sent();
|
|
34196
|
-
newChannels = queryType === 'reload'
|
|
34198
|
+
newChannels = queryType === 'reload'
|
|
34199
|
+
? channelQueryResponse
|
|
34200
|
+
: uniqBy__default["default"](__spreadArray(__spreadArray([], channels, true), channelQueryResponse, true), 'cid');
|
|
34197
34201
|
setChannels(newChannels);
|
|
34198
34202
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
34199
34203
|
// Set active channel only on load of first page
|
|
@@ -34293,6 +34297,63 @@ var useIsChannelMuted = function (channel) {
|
|
|
34293
34297
|
return muted;
|
|
34294
34298
|
};
|
|
34295
34299
|
|
|
34300
|
+
exports.MessageDeliveryStatus = void 0;
|
|
34301
|
+
(function (MessageDeliveryStatus) {
|
|
34302
|
+
MessageDeliveryStatus["DELIVERED"] = "delivered";
|
|
34303
|
+
MessageDeliveryStatus["READ"] = "read";
|
|
34304
|
+
})(exports.MessageDeliveryStatus || (exports.MessageDeliveryStatus = {}));
|
|
34305
|
+
var useMessageDeliveryStatus = function (_a) {
|
|
34306
|
+
var channel = _a.channel, lastMessage = _a.lastMessage;
|
|
34307
|
+
var client = useChatContext().client;
|
|
34308
|
+
var _b = React.useState(), messageDeliveryStatus = _b[0], setMessageDeliveryStatus = _b[1];
|
|
34309
|
+
var isOwnMessage = React.useCallback(function (message) { var _a; return client.user && ((_a = message === null || message === void 0 ? void 0 : message.user) === null || _a === void 0 ? void 0 : _a.id) === client.user.id; }, [client]);
|
|
34310
|
+
React.useEffect(function () {
|
|
34311
|
+
var lastMessageIsOwn = isOwnMessage(lastMessage);
|
|
34312
|
+
if (!(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.created_at) || !lastMessageIsOwn)
|
|
34313
|
+
return;
|
|
34314
|
+
var lastMessageCreatedAtDate = typeof lastMessage.created_at === 'string'
|
|
34315
|
+
? new Date(lastMessage.created_at)
|
|
34316
|
+
: lastMessage.created_at;
|
|
34317
|
+
var channelReadByOthersAfterLastMessageUpdate = Object.values(channel.state.read).some(function (_a) {
|
|
34318
|
+
var channelLastMarkedReadDate = _a.last_read, user = _a.user;
|
|
34319
|
+
var ignoreOwnReadStatus = client.user && user.id !== client.user.id;
|
|
34320
|
+
return ignoreOwnReadStatus && lastMessageCreatedAtDate < channelLastMarkedReadDate;
|
|
34321
|
+
});
|
|
34322
|
+
setMessageDeliveryStatus(channelReadByOthersAfterLastMessageUpdate
|
|
34323
|
+
? exports.MessageDeliveryStatus.READ
|
|
34324
|
+
: exports.MessageDeliveryStatus.DELIVERED);
|
|
34325
|
+
}, [channel.state.read, client, isOwnMessage, lastMessage]);
|
|
34326
|
+
React.useEffect(function () {
|
|
34327
|
+
var handleMessageNew = function (event) {
|
|
34328
|
+
// the last message is not mine, so do not show the delivery status
|
|
34329
|
+
if (!isOwnMessage(event.message)) {
|
|
34330
|
+
return setMessageDeliveryStatus(undefined);
|
|
34331
|
+
}
|
|
34332
|
+
return setMessageDeliveryStatus(exports.MessageDeliveryStatus.DELIVERED);
|
|
34333
|
+
};
|
|
34334
|
+
channel.on('message.new', handleMessageNew);
|
|
34335
|
+
return function () {
|
|
34336
|
+
channel.off('message.new', handleMessageNew);
|
|
34337
|
+
};
|
|
34338
|
+
}, [channel, client, isOwnMessage]);
|
|
34339
|
+
React.useEffect(function () {
|
|
34340
|
+
if (!isOwnMessage(lastMessage))
|
|
34341
|
+
return;
|
|
34342
|
+
var handleMarkRead = function (event) {
|
|
34343
|
+
var _a, _b;
|
|
34344
|
+
if (((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
|
|
34345
|
+
setMessageDeliveryStatus(exports.MessageDeliveryStatus.READ);
|
|
34346
|
+
};
|
|
34347
|
+
channel.on('message.read', handleMarkRead);
|
|
34348
|
+
return function () {
|
|
34349
|
+
channel.off('message.read', handleMarkRead);
|
|
34350
|
+
};
|
|
34351
|
+
}, [channel, client, lastMessage, isOwnMessage]);
|
|
34352
|
+
return {
|
|
34353
|
+
messageDeliveryStatus: messageDeliveryStatus,
|
|
34354
|
+
};
|
|
34355
|
+
};
|
|
34356
|
+
|
|
34296
34357
|
var ChannelPreview = function (props) {
|
|
34297
34358
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
|
|
34298
34359
|
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
@@ -34300,6 +34361,10 @@ var ChannelPreview = function (props) {
|
|
|
34300
34361
|
var _d = useChannelPreviewInfo({ channel: channel }), displayImage = _d.displayImage, displayTitle = _d.displayTitle;
|
|
34301
34362
|
var _e = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _e[0], setLastMessage = _e[1];
|
|
34302
34363
|
var _f = React.useState(0), unread = _f[0], setUnread = _f[1];
|
|
34364
|
+
var messageDeliveryStatus = useMessageDeliveryStatus({
|
|
34365
|
+
channel: channel,
|
|
34366
|
+
lastMessage: lastMessage,
|
|
34367
|
+
}).messageDeliveryStatus;
|
|
34303
34368
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
34304
34369
|
var muted = useIsChannelMuted(channel).muted;
|
|
34305
34370
|
React.useEffect(function () {
|
|
@@ -34339,24 +34404,29 @@ var ChannelPreview = function (props) {
|
|
|
34339
34404
|
if (!Preview)
|
|
34340
34405
|
return null;
|
|
34341
34406
|
var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
|
|
34342
|
-
return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
|
|
34407
|
+
return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, messageDeliveryStatus: messageDeliveryStatus, setActiveChannel: setActiveChannel, unread: unread })));
|
|
34343
34408
|
};
|
|
34344
34409
|
|
|
34345
34410
|
var isChannel = function (output) { return output.cid != null; };
|
|
34346
34411
|
|
|
34347
34412
|
var useChannelSearch = function (_a) {
|
|
34348
|
-
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels =
|
|
34349
|
-
var
|
|
34350
|
-
var
|
|
34351
|
-
var
|
|
34352
|
-
var
|
|
34353
|
-
var
|
|
34413
|
+
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchDebounceIntervalMs, searchDebounceIntervalMs = _e === void 0 ? 300 : _e, _f = _a.searchForChannels, searchForChannels = _f === void 0 ? false : _f, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
|
|
34414
|
+
var _g = useChatContext('useChannelSearch'), client = _g.client, setActiveChannel = _g.setActiveChannel, themeVersion = _g.themeVersion;
|
|
34415
|
+
var _h = React.useState(false), inputIsFocused = _h[0], setInputIsFocused = _h[1];
|
|
34416
|
+
var _j = React.useState(''), query = _j[0], setQuery = _j[1];
|
|
34417
|
+
var _k = React.useState([]), results = _k[0], setResults = _k[1];
|
|
34418
|
+
var _l = React.useState(false), searching = _l[0], setSearching = _l[1];
|
|
34419
|
+
var searchQueryPromiseInProgress = React.useRef();
|
|
34420
|
+
var shouldIgnoreQueryResults = React.useRef(false);
|
|
34354
34421
|
var inputRef = React.useRef(null);
|
|
34355
34422
|
var searchBarRef = React.useRef(null);
|
|
34356
34423
|
var clearState = React.useCallback(function () {
|
|
34357
34424
|
setQuery('');
|
|
34358
34425
|
setResults([]);
|
|
34359
34426
|
setSearching(false);
|
|
34427
|
+
if (searchQueryPromiseInProgress.current) {
|
|
34428
|
+
shouldIgnoreQueryResults.current = true;
|
|
34429
|
+
}
|
|
34360
34430
|
}, []);
|
|
34361
34431
|
var activateSearch = React.useCallback(function () {
|
|
34362
34432
|
setInputIsFocused(true);
|
|
@@ -34439,45 +34509,56 @@ var useChannelSearch = function (_a) {
|
|
|
34439
34509
|
});
|
|
34440
34510
|
}); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
|
|
34441
34511
|
var getChannels = React.useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
|
|
34442
|
-
var
|
|
34512
|
+
var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
|
|
34443
34513
|
var _b, _c, _d, _e, _f, _g;
|
|
34444
34514
|
return __generator(this, function (_h) {
|
|
34445
34515
|
switch (_h.label) {
|
|
34446
34516
|
case 0:
|
|
34447
|
-
|
|
34448
|
-
return [2 /*return*/];
|
|
34449
|
-
setSearching(true);
|
|
34517
|
+
results = [];
|
|
34450
34518
|
_h.label = 1;
|
|
34451
34519
|
case 1:
|
|
34452
34520
|
_h.trys.push([1, 6, , 7]);
|
|
34453
|
-
|
|
34521
|
+
userQueryPromise = client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options));
|
|
34522
|
+
if (!!searchForChannels) return [3 /*break*/, 3];
|
|
34523
|
+
searchQueryPromiseInProgress.current = userQueryPromise;
|
|
34524
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
34454
34525
|
case 2:
|
|
34455
|
-
userResponse = _h.sent();
|
|
34456
|
-
if (!searchForChannels) return [3 /*break*/, 4];
|
|
34457
|
-
channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
34458
|
-
return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
|
|
34459
|
-
case 3:
|
|
34460
|
-
_a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
|
|
34461
|
-
setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
|
|
34462
|
-
setSearching(false);
|
|
34463
|
-
return [2 /*return*/];
|
|
34464
|
-
case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
|
|
34465
|
-
case 5:
|
|
34466
34526
|
users = (_h.sent()).users;
|
|
34467
|
-
|
|
34468
|
-
return [3 /*break*/,
|
|
34527
|
+
results = users;
|
|
34528
|
+
return [3 /*break*/, 5];
|
|
34529
|
+
case 3:
|
|
34530
|
+
channelQueryPromise = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
34531
|
+
searchQueryPromiseInProgress.current = Promise.all([
|
|
34532
|
+
channelQueryPromise,
|
|
34533
|
+
userQueryPromise,
|
|
34534
|
+
]);
|
|
34535
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
34536
|
+
case 4:
|
|
34537
|
+
_a = _h.sent(), channels = _a[0], users = _a[1].users;
|
|
34538
|
+
results = __spreadArray(__spreadArray([], channels, true), users, true);
|
|
34539
|
+
_h.label = 5;
|
|
34540
|
+
case 5: return [3 /*break*/, 7];
|
|
34469
34541
|
case 6:
|
|
34470
34542
|
error_1 = _h.sent();
|
|
34471
|
-
clearState();
|
|
34472
34543
|
console.error(error_1);
|
|
34473
34544
|
return [3 /*break*/, 7];
|
|
34474
34545
|
case 7:
|
|
34475
34546
|
setSearching(false);
|
|
34547
|
+
if (!shouldIgnoreQueryResults.current) {
|
|
34548
|
+
setResults(results);
|
|
34549
|
+
}
|
|
34550
|
+
else {
|
|
34551
|
+
shouldIgnoreQueryResults.current = false;
|
|
34552
|
+
}
|
|
34553
|
+
searchQueryPromiseInProgress.current = undefined;
|
|
34476
34554
|
return [2 /*return*/];
|
|
34477
34555
|
}
|
|
34478
34556
|
});
|
|
34479
|
-
}); }, [client,
|
|
34480
|
-
var
|
|
34557
|
+
}); }, [client, searchForChannels, searchQueryParams]);
|
|
34558
|
+
var scheduleGetChannels = React.useCallback(debounce__default["default"](getChannels, searchDebounceIntervalMs), [
|
|
34559
|
+
getChannels,
|
|
34560
|
+
searchDebounceIntervalMs,
|
|
34561
|
+
]);
|
|
34481
34562
|
var onSearch = React.useCallback(function (event) {
|
|
34482
34563
|
event.preventDefault();
|
|
34483
34564
|
if (disabled)
|
|
@@ -34489,12 +34570,17 @@ var useChannelSearch = function (_a) {
|
|
|
34489
34570
|
setSearching: setSearching,
|
|
34490
34571
|
}, event);
|
|
34491
34572
|
}
|
|
34492
|
-
else {
|
|
34573
|
+
else if (event.target.value) {
|
|
34574
|
+
setSearching(true);
|
|
34493
34575
|
setQuery(event.target.value);
|
|
34494
|
-
|
|
34576
|
+
scheduleGetChannels(event.target.value);
|
|
34577
|
+
}
|
|
34578
|
+
else if (!event.target.value) {
|
|
34579
|
+
clearState();
|
|
34580
|
+
scheduleGetChannels.cancel();
|
|
34495
34581
|
}
|
|
34496
34582
|
onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
|
|
34497
|
-
}, [disabled,
|
|
34583
|
+
}, [clearState, disabled, scheduleGetChannels, onSearchCallback, searchFunction]);
|
|
34498
34584
|
return {
|
|
34499
34585
|
activateSearch: activateSearch,
|
|
34500
34586
|
clearState: clearState,
|
|
@@ -34887,7 +34973,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
34887
34973
|
*/
|
|
34888
34974
|
var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
|
|
34889
34975
|
|
|
34890
|
-
var version = '10.
|
|
34976
|
+
var version = '10.13.0';
|
|
34891
34977
|
|
|
34892
34978
|
var useChat = function (_a) {
|
|
34893
34979
|
var _b, _c;
|