stream-chat-react 11.12.1 → 11.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Window-40a618cb.js → Window-44a85f63.js} +230 -94
- package/dist/browser.full-bundle.js +309 -138
- 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.map +1 -1
- package/dist/components/Channel/Channel.js +122 -47
- package/dist/components/Channel/utils.d.ts +27 -0
- package/dist/components/Channel/utils.d.ts.map +1 -1
- package/dist/components/Channel/utils.js +56 -0
- package/dist/components/Emojis/index.cjs.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +1 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +1 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +20 -7
- package/dist/components/MessageList/hooks/useMarkRead.js +2 -3
- package/dist/components/MessageList/renderMessages.d.ts +5 -5
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/components/MessageList/renderMessages.js +44 -22
- package/dist/components/MessageList/utils.d.ts +10 -1
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +3 -0
- package/dist/constants/limits.d.ts +1 -0
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +1 -0
- package/dist/index.cjs.js +67 -31
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -54264,6 +54264,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
54264
54264
|
|
|
54265
54265
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
|
|
54266
54266
|
var DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
|
|
54267
|
+
var DEFAULT_JUMP_TO_PAGE_SIZE = 100;
|
|
54267
54268
|
var DEFAULT_THREAD_PAGE_SIZE = 50;
|
|
54268
54269
|
var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
|
|
54269
54270
|
|
|
@@ -54631,6 +54632,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
54631
54632
|
var hasNotMoreMessages = function (returnedCountMessages, limit) {
|
|
54632
54633
|
return returnedCountMessages < limit;
|
|
54633
54634
|
};
|
|
54635
|
+
function isDateSeparatorMessage(message) {
|
|
54636
|
+
return message.customType === CUSTOM_MESSAGE_TYPE.date && !!message.date && isDate(message.date);
|
|
54637
|
+
}
|
|
54634
54638
|
|
|
54635
54639
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useEnrichedMessages = function (args) {
|
|
54636
54640
|
var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser;
|
|
@@ -54951,7 +54955,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
54951
54955
|
unreadMessages > 0;
|
|
54952
54956
|
};
|
|
54953
54957
|
var onVisibilityChange = function () {
|
|
54954
|
-
if (shouldMarkRead(
|
|
54958
|
+
if (shouldMarkRead(channel.countUnread()))
|
|
54955
54959
|
markRead();
|
|
54956
54960
|
};
|
|
54957
54961
|
var handleMessageNew = function (event) {
|
|
@@ -54973,7 +54977,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
54973
54977
|
}
|
|
54974
54978
|
else if (newMessageToCurrentChannel &&
|
|
54975
54979
|
mainChannelUpdated &&
|
|
54976
|
-
!isOwnMessage &&
|
|
54977
54980
|
shouldMarkRead(channel.countUnread())) {
|
|
54978
54981
|
markRead();
|
|
54979
54982
|
}
|
|
@@ -54982,7 +54985,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
54982
54985
|
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
54983
54986
|
var hasScrolledToBottom = previousRenderMessageListScrolledToBottom.current !== isMessageListScrolledToBottom &&
|
|
54984
54987
|
isMessageListScrolledToBottom;
|
|
54985
|
-
if (
|
|
54988
|
+
if (hasScrolledToBottom && shouldMarkRead(channel.countUnread()))
|
|
54986
54989
|
markRead();
|
|
54987
54990
|
previousRenderMessageListScrolledToBottom.current = isMessageListScrolledToBottom;
|
|
54988
54991
|
return function () {
|
|
@@ -55264,35 +55267,123 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
55264
55267
|
|
|
55265
55268
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
55266
55269
|
|
|
55270
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var selectColor = function (number, dark) {
|
|
55271
|
+
var hue = number * 137.508; // use golden angle approximation
|
|
55272
|
+
return "hsl(".concat(hue, ",").concat(dark ? '50%' : '85%', ", ").concat(dark ? '75%' : '55%', ")");
|
|
55273
|
+
};
|
|
55274
|
+
var hashUserId = function (userId) {
|
|
55275
|
+
var hash = userId.split('').reduce(function (acc, c) {
|
|
55276
|
+
acc = (acc << 5) - acc + c.charCodeAt(0); // eslint-disable-line
|
|
55277
|
+
return acc & acc; // eslint-disable-line no-bitwise
|
|
55278
|
+
}, 0);
|
|
55279
|
+
return Math.abs(hash) / Math.pow(10, Math.ceil(Math.log10(Math.abs(hash) + 1)));
|
|
55280
|
+
};
|
|
55281
|
+
var getUserColor = function (theme, userId) {
|
|
55282
|
+
return selectColor(hashUserId(userId), theme.includes('dark'));
|
|
55283
|
+
};
|
|
55284
|
+
var UnMemoizedFixedHeightMessage = function (props) {
|
|
55285
|
+
var _a, _b, _c, _d;
|
|
55286
|
+
var propGroupedByUser = props.groupedByUser, propMessage = props.message;
|
|
55287
|
+
var theme = useChatContext('FixedHeightMessage').theme;
|
|
55288
|
+
var _e = useMessageContext('FixedHeightMessage'), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
55289
|
+
var _f = useComponentContext('FixedHeightMessage').MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
55290
|
+
var userLanguage = useTranslationContext('FixedHeightMessage').userLanguage;
|
|
55291
|
+
var groupedByUser = propGroupedByUser !== undefined ? propGroupedByUser : contextGroupedByUser;
|
|
55292
|
+
var message = propMessage || contextMessage;
|
|
55293
|
+
var handleAction = useActionHandler(message);
|
|
55294
|
+
var handleDelete = useDeleteHandler(message);
|
|
55295
|
+
var role = useUserRole(message);
|
|
55296
|
+
var messageTextToRender = ((_a = message === null || message === void 0 ? void 0 : message.i18n) === null || _a === void 0 ? void 0 : _a["".concat(userLanguage, "_text")]) || (message === null || message === void 0 ? void 0 : message.text);
|
|
55297
|
+
var renderedText = React$2.useMemo(function () { return renderText(messageTextToRender, message.mentioned_users); }, [
|
|
55298
|
+
message.mentioned_users,
|
|
55299
|
+
messageTextToRender,
|
|
55300
|
+
]);
|
|
55301
|
+
var userId = ((_b = message.user) === null || _b === void 0 ? void 0 : _b.id) || '';
|
|
55302
|
+
var userColor = React$2.useMemo(function () { return getUserColor(theme, userId); }, [userId, theme]);
|
|
55303
|
+
var messageActionsHandler = React$2.useCallback(function () { return getMessageActions(['delete'], { canDelete: role.canDelete }); }, [role]);
|
|
55304
|
+
var images = (_c = message === null || message === void 0 ? void 0 : message.attachments) === null || _c === void 0 ? void 0 : _c.filter(function (_a) {
|
|
55305
|
+
var type = _a.type;
|
|
55306
|
+
return type === 'image';
|
|
55307
|
+
});
|
|
55308
|
+
return (React__default["default"].createElement("div", { className: "str-chat__virtual-message__wrapper ".concat(role.isMyMessage ? 'str-chat__virtual-message__wrapper--me' : '', " ").concat(groupedByUser ? 'str-chat__virtual-message__wrapper--group' : ''), key: message.id },
|
|
55309
|
+
message.user && (React__default["default"].createElement(Avatar, { image: message.user.image, name: message.user.name || message.user.id, shape: 'rounded', size: 38, user: message.user })),
|
|
55310
|
+
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__content' },
|
|
55311
|
+
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__meta' },
|
|
55312
|
+
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__author', style: { color: userColor } },
|
|
55313
|
+
React__default["default"].createElement("strong", null, ((_d = message.user) === null || _d === void 0 ? void 0 : _d.name) || 'unknown'))),
|
|
55314
|
+
message.deleted_at || message.type === 'deleted' ? (React__default["default"].createElement(MessageDeleted$1, { message: message })) : (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
55315
|
+
images && React__default["default"].createElement(Gallery, { images: images }),
|
|
55316
|
+
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__text', "data-testid": 'msg-text' },
|
|
55317
|
+
renderedText,
|
|
55318
|
+
message.mml && (React__default["default"].createElement(MML$1, { actionHandler: handleAction, align: 'left', source: message.mml })),
|
|
55319
|
+
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__data' },
|
|
55320
|
+
React__default["default"].createElement(MessageActions, { customWrapperClass: 'str-chat__virtual-message__actions', getMessageActions: messageActionsHandler, handleDelete: handleDelete, message: message, mine: function () { return role.isMyMessage; } }),
|
|
55321
|
+
React__default["default"].createElement("span", { className: 'str-chat__virtual-message__date' },
|
|
55322
|
+
React__default["default"].createElement(MessageTimestamp, { customClass: 'str-chat__message-simple-timestamp', message: message })))))))));
|
|
55323
|
+
};
|
|
55324
|
+
/**
|
|
55325
|
+
* @deprecated - This UI component will be removed in the next major release.
|
|
55326
|
+
*
|
|
55327
|
+
* FixedHeightMessage - This component renders a single message.
|
|
55328
|
+
* It uses fixed height elements to make sure it works well in VirtualizedMessageList
|
|
55329
|
+
*/
|
|
55330
|
+
var FixedHeightMessage = React__default["default"].memo(UnMemoizedFixedHeightMessage);
|
|
55331
|
+
|
|
55332
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
55333
|
+
|
|
55334
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
55335
|
+
|
|
55267
55336
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};function defaultRenderMessages(_a) {
|
|
55268
55337
|
var channelUnreadUiState = _a.channelUnreadUiState, components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, readData = _a.readData, messageProps = _a.sharedMessageProps;
|
|
55269
55338
|
var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem, UnreadMessagesSeparator = components.UnreadMessagesSeparator;
|
|
55270
|
-
|
|
55271
|
-
|
|
55272
|
-
|
|
55339
|
+
var renderedMessages = [];
|
|
55340
|
+
var firstMessage;
|
|
55341
|
+
for (var index = 0; index < messages.length; index++) {
|
|
55342
|
+
var message = messages[index];
|
|
55343
|
+
if (isDateSeparatorMessage(message)) {
|
|
55344
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
|
|
55273
55345
|
React__default["default"].createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
|
|
55274
55346
|
}
|
|
55275
|
-
if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
55276
|
-
|
|
55347
|
+
else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
55348
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: 'intro' },
|
|
55277
55349
|
React__default["default"].createElement(HeaderComponent, null)));
|
|
55278
55350
|
}
|
|
55279
|
-
if (message.type === 'system') {
|
|
55280
|
-
|
|
55351
|
+
else if (message.type === 'system') {
|
|
55352
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: message.id || message.created_at },
|
|
55281
55353
|
React__default["default"].createElement(MessageSystem, { message: message })));
|
|
55282
55354
|
}
|
|
55283
|
-
|
|
55284
|
-
|
|
55285
|
-
|
|
55286
|
-
|
|
55287
|
-
|
|
55288
|
-
|
|
55289
|
-
|
|
55290
|
-
|
|
55291
|
-
|
|
55292
|
-
|
|
55293
|
-
|
|
55294
|
-
|
|
55295
|
-
|
|
55355
|
+
else {
|
|
55356
|
+
if (!firstMessage) {
|
|
55357
|
+
firstMessage = message;
|
|
55358
|
+
}
|
|
55359
|
+
var groupStyles = messageGroupStyles[message.id] || '';
|
|
55360
|
+
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
55361
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
55362
|
+
var lastReadTimestamp = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read.getTime();
|
|
55363
|
+
var isFirstMessage = (firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.id) && firstMessage.id === message.id;
|
|
55364
|
+
var isNewestMessage = index === messages.length - 1;
|
|
55365
|
+
var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id ||
|
|
55366
|
+
(!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) && createdAtTimestamp === lastReadTimestamp);
|
|
55367
|
+
var isFirstUnreadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) === message.id ||
|
|
55368
|
+
(!!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) &&
|
|
55369
|
+
!!createdAtTimestamp &&
|
|
55370
|
+
!!lastReadTimestamp &&
|
|
55371
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
55372
|
+
isFirstMessage);
|
|
55373
|
+
var showUnreadSeparatorAbove = !(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) && isFirstUnreadMessage;
|
|
55374
|
+
var showUnreadSeparatorBelow = isLastReadMessage &&
|
|
55375
|
+
!isNewestMessage &&
|
|
55376
|
+
((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages)); // this part has to be here as we do not mark channel read when sending a message
|
|
55377
|
+
renderedMessages.push(React__default["default"].createElement(React$2.Fragment, { key: message.id || message.created_at },
|
|
55378
|
+
showUnreadSeparatorAbove && UnreadMessagesSeparator && (React__default["default"].createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
55379
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages }))),
|
|
55380
|
+
React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
|
|
55381
|
+
React__default["default"].createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
|
|
55382
|
+
showUnreadSeparatorBelow && UnreadMessagesSeparator && (React__default["default"].createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
55383
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })))));
|
|
55384
|
+
}
|
|
55385
|
+
}
|
|
55386
|
+
return renderedMessages;
|
|
55296
55387
|
}
|
|
55297
55388
|
|
|
55298
55389
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var MessageListWithContext = function (props) {
|
|
@@ -56915,72 +57006,6 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
56915
57006
|
|
|
56916
57007
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
56917
57008
|
|
|
56918
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var selectColor = function (number, dark) {
|
|
56919
|
-
var hue = number * 137.508; // use golden angle approximation
|
|
56920
|
-
return "hsl(".concat(hue, ",").concat(dark ? '50%' : '85%', ", ").concat(dark ? '75%' : '55%', ")");
|
|
56921
|
-
};
|
|
56922
|
-
var hashUserId = function (userId) {
|
|
56923
|
-
var hash = userId.split('').reduce(function (acc, c) {
|
|
56924
|
-
acc = (acc << 5) - acc + c.charCodeAt(0); // eslint-disable-line
|
|
56925
|
-
return acc & acc; // eslint-disable-line no-bitwise
|
|
56926
|
-
}, 0);
|
|
56927
|
-
return Math.abs(hash) / Math.pow(10, Math.ceil(Math.log10(Math.abs(hash) + 1)));
|
|
56928
|
-
};
|
|
56929
|
-
var getUserColor = function (theme, userId) {
|
|
56930
|
-
return selectColor(hashUserId(userId), theme.includes('dark'));
|
|
56931
|
-
};
|
|
56932
|
-
var UnMemoizedFixedHeightMessage = function (props) {
|
|
56933
|
-
var _a, _b, _c, _d;
|
|
56934
|
-
var propGroupedByUser = props.groupedByUser, propMessage = props.message;
|
|
56935
|
-
var theme = useChatContext('FixedHeightMessage').theme;
|
|
56936
|
-
var _e = useMessageContext('FixedHeightMessage'), contextGroupedByUser = _e.groupedByUser, contextMessage = _e.message;
|
|
56937
|
-
var _f = useComponentContext('FixedHeightMessage').MessageDeleted, MessageDeleted$1 = _f === void 0 ? MessageDeleted : _f;
|
|
56938
|
-
var userLanguage = useTranslationContext('FixedHeightMessage').userLanguage;
|
|
56939
|
-
var groupedByUser = propGroupedByUser !== undefined ? propGroupedByUser : contextGroupedByUser;
|
|
56940
|
-
var message = propMessage || contextMessage;
|
|
56941
|
-
var handleAction = useActionHandler(message);
|
|
56942
|
-
var handleDelete = useDeleteHandler(message);
|
|
56943
|
-
var role = useUserRole(message);
|
|
56944
|
-
var messageTextToRender = ((_a = message === null || message === void 0 ? void 0 : message.i18n) === null || _a === void 0 ? void 0 : _a["".concat(userLanguage, "_text")]) || (message === null || message === void 0 ? void 0 : message.text);
|
|
56945
|
-
var renderedText = React$2.useMemo(function () { return renderText(messageTextToRender, message.mentioned_users); }, [
|
|
56946
|
-
message.mentioned_users,
|
|
56947
|
-
messageTextToRender,
|
|
56948
|
-
]);
|
|
56949
|
-
var userId = ((_b = message.user) === null || _b === void 0 ? void 0 : _b.id) || '';
|
|
56950
|
-
var userColor = React$2.useMemo(function () { return getUserColor(theme, userId); }, [userId, theme]);
|
|
56951
|
-
var messageActionsHandler = React$2.useCallback(function () { return getMessageActions(['delete'], { canDelete: role.canDelete }); }, [role]);
|
|
56952
|
-
var images = (_c = message === null || message === void 0 ? void 0 : message.attachments) === null || _c === void 0 ? void 0 : _c.filter(function (_a) {
|
|
56953
|
-
var type = _a.type;
|
|
56954
|
-
return type === 'image';
|
|
56955
|
-
});
|
|
56956
|
-
return (React__default["default"].createElement("div", { className: "str-chat__virtual-message__wrapper ".concat(role.isMyMessage ? 'str-chat__virtual-message__wrapper--me' : '', " ").concat(groupedByUser ? 'str-chat__virtual-message__wrapper--group' : ''), key: message.id },
|
|
56957
|
-
message.user && (React__default["default"].createElement(Avatar, { image: message.user.image, name: message.user.name || message.user.id, shape: 'rounded', size: 38, user: message.user })),
|
|
56958
|
-
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__content' },
|
|
56959
|
-
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__meta' },
|
|
56960
|
-
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__author', style: { color: userColor } },
|
|
56961
|
-
React__default["default"].createElement("strong", null, ((_d = message.user) === null || _d === void 0 ? void 0 : _d.name) || 'unknown'))),
|
|
56962
|
-
message.deleted_at || message.type === 'deleted' ? (React__default["default"].createElement(MessageDeleted$1, { message: message })) : (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
56963
|
-
images && React__default["default"].createElement(Gallery, { images: images }),
|
|
56964
|
-
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__text', "data-testid": 'msg-text' },
|
|
56965
|
-
renderedText,
|
|
56966
|
-
message.mml && (React__default["default"].createElement(MML$1, { actionHandler: handleAction, align: 'left', source: message.mml })),
|
|
56967
|
-
React__default["default"].createElement("div", { className: 'str-chat__virtual-message__data' },
|
|
56968
|
-
React__default["default"].createElement(MessageActions, { customWrapperClass: 'str-chat__virtual-message__actions', getMessageActions: messageActionsHandler, handleDelete: handleDelete, message: message, mine: function () { return role.isMyMessage; } }),
|
|
56969
|
-
React__default["default"].createElement("span", { className: 'str-chat__virtual-message__date' },
|
|
56970
|
-
React__default["default"].createElement(MessageTimestamp, { customClass: 'str-chat__message-simple-timestamp', message: message })))))))));
|
|
56971
|
-
};
|
|
56972
|
-
/**
|
|
56973
|
-
* @deprecated - This UI component will be removed in the next major release.
|
|
56974
|
-
*
|
|
56975
|
-
* FixedHeightMessage - This component renders a single message.
|
|
56976
|
-
* It uses fixed height elements to make sure it works well in VirtualizedMessageList
|
|
56977
|
-
*/
|
|
56978
|
-
var FixedHeightMessage = React__default["default"].memo(UnMemoizedFixedHeightMessage);
|
|
56979
|
-
|
|
56980
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
56981
|
-
|
|
56982
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
56983
|
-
|
|
56984
57009
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var PREPEND_OFFSET = Math.pow(10, 7);
|
|
56985
57010
|
function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
|
|
56986
57011
|
return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
|
|
@@ -57036,7 +57061,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57036
57061
|
};
|
|
57037
57062
|
var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
57038
57063
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
57039
|
-
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
57064
|
+
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
57040
57065
|
var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
57041
57066
|
if (customMessageRenderer) {
|
|
57042
57067
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
@@ -57044,7 +57069,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57044
57069
|
var message = messageList[streamMessageIndex];
|
|
57045
57070
|
if (!message)
|
|
57046
57071
|
return React__default["default"].createElement("div", { style: { height: '1px' } }); // returning null or zero height breaks the virtuoso
|
|
57047
|
-
if (
|
|
57072
|
+
if (isDateSeparatorMessage(message)) {
|
|
57048
57073
|
return DateSeparator ? React__default["default"].createElement(DateSeparator, { date: message.date, unread: message.unread }) : null;
|
|
57049
57074
|
}
|
|
57050
57075
|
if (message.type === 'system') {
|
|
@@ -57060,12 +57085,25 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57060
57085
|
(maybePrevMessage && isMessageEdited(maybePrevMessage)));
|
|
57061
57086
|
var endOfGroup = shouldGroupByUser &&
|
|
57062
57087
|
(((_e = message.user) === null || _e === void 0 ? void 0 : _e.id) !== ((_f = maybeNextMessage === null || maybeNextMessage === void 0 ? void 0 : maybeNextMessage.user) === null || _f === void 0 ? void 0 : _f.id) || isMessageEdited(message));
|
|
57088
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
57089
|
+
var lastReadTimestamp = lastReadDate === null || lastReadDate === void 0 ? void 0 : lastReadDate.getTime();
|
|
57090
|
+
var isFirstMessage = streamMessageIndex === 0;
|
|
57063
57091
|
var isNewestMessage = lastReadMessageId === lastReceivedMessageId;
|
|
57064
|
-
var isLastReadMessage = message.id === lastReadMessageId
|
|
57065
|
-
|
|
57092
|
+
var isLastReadMessage = message.id === lastReadMessageId ||
|
|
57093
|
+
(!unreadMessageCount && createdAtTimestamp === lastReadTimestamp);
|
|
57094
|
+
var isFirstUnreadMessage = firstUnreadMessageId === message.id ||
|
|
57095
|
+
(!!unreadMessageCount &&
|
|
57096
|
+
createdAtTimestamp &&
|
|
57097
|
+
lastReadTimestamp &&
|
|
57098
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
57099
|
+
isFirstMessage);
|
|
57100
|
+
var showUnreadSeparatorAbove = !lastReadMessageId && isFirstUnreadMessage;
|
|
57101
|
+
var showUnreadSeparatorBelow = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || !!unreadMessageCount);
|
|
57066
57102
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
57103
|
+
showUnreadSeparatorAbove && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
57104
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
|
|
57067
57105
|
React__default["default"].createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
|
|
57068
|
-
|
|
57106
|
+
showUnreadSeparatorBelow && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
57069
57107
|
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
|
|
57070
57108
|
};
|
|
57071
57109
|
|
|
@@ -57266,6 +57304,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57266
57304
|
DateSeparator: DateSeparator,
|
|
57267
57305
|
firstUnreadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id,
|
|
57268
57306
|
head: head,
|
|
57307
|
+
lastReadDate: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read,
|
|
57269
57308
|
lastReadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id,
|
|
57270
57309
|
lastReceivedMessageId: lastReceivedMessageId,
|
|
57271
57310
|
loadingMore: loadingMore,
|
|
@@ -57327,6 +57366,62 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57327
57366
|
}, 5000);
|
|
57328
57367
|
notificationTimeouts.push(timeout);
|
|
57329
57368
|
}; };
|
|
57369
|
+
/**
|
|
57370
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
57371
|
+
* @param targetId
|
|
57372
|
+
* @param msgSet
|
|
57373
|
+
*/
|
|
57374
|
+
var findInMsgSetById = function (targetId, msgSet) {
|
|
57375
|
+
for (var i = msgSet.length - 1; i >= 0; i--) {
|
|
57376
|
+
var item = msgSet[i];
|
|
57377
|
+
if (item.id === targetId) {
|
|
57378
|
+
return {
|
|
57379
|
+
index: i,
|
|
57380
|
+
target: item,
|
|
57381
|
+
};
|
|
57382
|
+
}
|
|
57383
|
+
}
|
|
57384
|
+
return {
|
|
57385
|
+
index: -1,
|
|
57386
|
+
};
|
|
57387
|
+
};
|
|
57388
|
+
/**
|
|
57389
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
57390
|
+
* @param targetDate
|
|
57391
|
+
* @param msgSet
|
|
57392
|
+
* @param exact
|
|
57393
|
+
*/
|
|
57394
|
+
var findInMsgSetByDate = function (targetDate, msgSet, exact) {
|
|
57395
|
+
var _a, _b;
|
|
57396
|
+
if (exact === void 0) { exact = false; }
|
|
57397
|
+
var targetTimestamp = targetDate.getTime();
|
|
57398
|
+
var left = 0;
|
|
57399
|
+
var middle = 0;
|
|
57400
|
+
var right = msgSet.length - 1;
|
|
57401
|
+
while (left <= right) {
|
|
57402
|
+
middle = Math.floor((right + left) / 2);
|
|
57403
|
+
var middleTimestamp = new Date(msgSet[middle].created_at).getTime();
|
|
57404
|
+
var middleLeftTimestamp = ((_a = msgSet[middle - 1]) === null || _a === void 0 ? void 0 : _a.created_at) &&
|
|
57405
|
+
new Date(msgSet[middle - 1].created_at).getTime();
|
|
57406
|
+
var middleRightTimestamp = ((_b = msgSet[middle + 1]) === null || _b === void 0 ? void 0 : _b.created_at) &&
|
|
57407
|
+
new Date(msgSet[middle + 1].created_at).getTime();
|
|
57408
|
+
if (middleTimestamp === targetTimestamp ||
|
|
57409
|
+
(middleLeftTimestamp &&
|
|
57410
|
+
middleRightTimestamp &&
|
|
57411
|
+
middleLeftTimestamp < targetTimestamp &&
|
|
57412
|
+
targetTimestamp < middleRightTimestamp)) {
|
|
57413
|
+
return { index: middle, target: msgSet[middle] };
|
|
57414
|
+
}
|
|
57415
|
+
if (middleTimestamp < targetTimestamp)
|
|
57416
|
+
left = middle + 1;
|
|
57417
|
+
else
|
|
57418
|
+
right = middle - 1;
|
|
57419
|
+
}
|
|
57420
|
+
if (!exact || new Date(msgSet[left].created_at).getTime() === targetTimestamp) {
|
|
57421
|
+
return { index: left, target: msgSet[left] };
|
|
57422
|
+
}
|
|
57423
|
+
return { index: -1 };
|
|
57424
|
+
};
|
|
57330
57425
|
|
|
57331
57426
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};/**
|
|
57332
57427
|
* @deprecated will be removed in the next major release
|
|
@@ -57705,6 +57800,9 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57705
57800
|
unread_messages: (_a = event.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
57706
57801
|
};
|
|
57707
57802
|
});
|
|
57803
|
+
if (event.type === 'channel.truncated' && event.cid === channel.cid) {
|
|
57804
|
+
_setChannelUnreadUiState(undefined);
|
|
57805
|
+
}
|
|
57708
57806
|
throttledCopyStateFromChannel();
|
|
57709
57807
|
return [2 /*return*/];
|
|
57710
57808
|
}
|
|
@@ -57864,7 +57962,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57864
57962
|
});
|
|
57865
57963
|
};
|
|
57866
57964
|
var loadMoreNewer = function (limit) {
|
|
57867
|
-
if (limit === void 0) { limit =
|
|
57965
|
+
if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
|
|
57868
57966
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
57869
57967
|
var newestMessage, newestId, perPage, queryResponse, e_4, hasMoreNewerMessages;
|
|
57870
57968
|
var _a, _b;
|
|
@@ -57908,7 +58006,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57908
58006
|
};
|
|
57909
58007
|
var clearHighlightedMessageTimeoutId = React$2.useRef(null);
|
|
57910
58008
|
var jumpToMessage = function (messageId, messageLimit) {
|
|
57911
|
-
if (messageLimit === void 0) { messageLimit =
|
|
58009
|
+
if (messageLimit === void 0) { messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
|
|
57912
58010
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
57913
58011
|
var indexOfMessage, hasMoreMessages;
|
|
57914
58012
|
return __generator(this, function (_a) {
|
|
@@ -57955,57 +58053,113 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
57955
58053
|
});
|
|
57956
58054
|
}); };
|
|
57957
58055
|
var jumpToFirstUnreadMessage = React$2.useCallback(function (queryMessageLimit) {
|
|
57958
|
-
if (queryMessageLimit === void 0) { queryMessageLimit =
|
|
58056
|
+
if (queryMessageLimit === void 0) { queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
|
|
57959
58057
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
57960
|
-
var
|
|
57961
|
-
var
|
|
57962
|
-
return __generator(this, function (
|
|
57963
|
-
switch (
|
|
58058
|
+
var lastReadMessageId, firstUnreadMessageId, isInCurrentMessageSet, hasMoreMessages, result, result, lastReadTimestamp, _a, lastReadMessageIndex, lastReadMessage, messages, firstMessageWithCreationDate, firstMessageTimestamp, result, targetId_1, indexOfTarget;
|
|
58059
|
+
var _b, _c, _d, _e;
|
|
58060
|
+
return __generator(this, function (_f) {
|
|
58061
|
+
switch (_f.label) {
|
|
57964
58062
|
case 0:
|
|
57965
|
-
if (!(
|
|
58063
|
+
if (!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages))
|
|
57966
58064
|
return [2 /*return*/];
|
|
57967
|
-
|
|
57968
|
-
|
|
57969
|
-
|
|
57970
|
-
}
|
|
57971
|
-
currentMessageSet = channel.state.messages;
|
|
57972
|
-
for (i = currentMessageSet.length - 1; i >= 0; i--) {
|
|
57973
|
-
id = currentMessageSet[i].id;
|
|
57974
|
-
if (id === channelUnreadUiState.last_read_message_id) {
|
|
57975
|
-
indexOfLastReadMessage = i;
|
|
57976
|
-
break;
|
|
57977
|
-
}
|
|
57978
|
-
}
|
|
57979
|
-
if (!(typeof indexOfLastReadMessage === 'undefined')) return [3 /*break*/, 5];
|
|
57980
|
-
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
58065
|
+
lastReadMessageId = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id;
|
|
58066
|
+
firstUnreadMessageId = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id;
|
|
58067
|
+
isInCurrentMessageSet = false;
|
|
57981
58068
|
hasMoreMessages = true;
|
|
57982
|
-
|
|
58069
|
+
if (!firstUnreadMessageId) return [3 /*break*/, 1];
|
|
58070
|
+
result = findInMsgSetById(firstUnreadMessageId, channel.state.messages);
|
|
58071
|
+
isInCurrentMessageSet = result.index !== -1;
|
|
58072
|
+
return [3 /*break*/, 8];
|
|
57983
58073
|
case 1:
|
|
57984
|
-
|
|
57985
|
-
|
|
58074
|
+
if (!lastReadMessageId) return [3 /*break*/, 2];
|
|
58075
|
+
result = findInMsgSetById(lastReadMessageId, channel.state.messages);
|
|
58076
|
+
isInCurrentMessageSet = !!result.target;
|
|
58077
|
+
firstUnreadMessageId =
|
|
58078
|
+
result.index > -1 ? (_b = channel.state.messages[result.index + 1]) === null || _b === void 0 ? void 0 : _b.id : undefined;
|
|
58079
|
+
return [3 /*break*/, 8];
|
|
57986
58080
|
case 2:
|
|
57987
|
-
|
|
57988
|
-
|
|
57989
|
-
|
|
57990
|
-
|
|
57991
|
-
|
|
57992
|
-
|
|
57993
|
-
|
|
57994
|
-
return [3 /*break*/, 4];
|
|
58081
|
+
lastReadTimestamp = channelUnreadUiState.last_read.getTime();
|
|
58082
|
+
_a = findInMsgSetByDate(channelUnreadUiState.last_read, channel.state.messages, true), lastReadMessageIndex = _a.index, lastReadMessage = _a.target;
|
|
58083
|
+
if (!lastReadMessage) return [3 /*break*/, 3];
|
|
58084
|
+
firstUnreadMessageId = (_c = channel.state.messages[lastReadMessageIndex + 1]) === null || _c === void 0 ? void 0 : _c.id;
|
|
58085
|
+
isInCurrentMessageSet = !!firstUnreadMessageId;
|
|
58086
|
+
lastReadMessageId = lastReadMessage.id;
|
|
58087
|
+
return [3 /*break*/, 8];
|
|
57995
58088
|
case 3:
|
|
57996
|
-
|
|
58089
|
+
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
58090
|
+
messages = void 0;
|
|
58091
|
+
_f.label = 4;
|
|
58092
|
+
case 4:
|
|
58093
|
+
_f.trys.push([4, 6, , 7]);
|
|
58094
|
+
return [4 /*yield*/, channel.query({
|
|
58095
|
+
messages: {
|
|
58096
|
+
created_at_around: channelUnreadUiState.last_read.toISOString(),
|
|
58097
|
+
limit: queryMessageLimit,
|
|
58098
|
+
},
|
|
58099
|
+
}, 'new')];
|
|
58100
|
+
case 5:
|
|
58101
|
+
messages = (_f.sent()).messages;
|
|
58102
|
+
return [3 /*break*/, 7];
|
|
58103
|
+
case 6:
|
|
58104
|
+
_f.sent();
|
|
57997
58105
|
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
57998
58106
|
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
57999
58107
|
return [2 /*return*/];
|
|
58000
|
-
case
|
|
58108
|
+
case 7:
|
|
58109
|
+
firstMessageWithCreationDate = messages.find(function (msg) { return msg.created_at; });
|
|
58110
|
+
if (!firstMessageWithCreationDate) {
|
|
58111
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
58112
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
58113
|
+
return [2 /*return*/];
|
|
58114
|
+
}
|
|
58115
|
+
firstMessageTimestamp = new Date(firstMessageWithCreationDate.created_at).getTime();
|
|
58116
|
+
if (lastReadTimestamp < firstMessageTimestamp) {
|
|
58117
|
+
// whole channel is unread
|
|
58118
|
+
firstUnreadMessageId = firstMessageWithCreationDate.id;
|
|
58119
|
+
hasMoreMessages = false;
|
|
58120
|
+
}
|
|
58121
|
+
else {
|
|
58122
|
+
result = findInMsgSetByDate(channelUnreadUiState.last_read, messages);
|
|
58123
|
+
lastReadMessageId = (_d = result.target) === null || _d === void 0 ? void 0 : _d.id;
|
|
58124
|
+
hasMoreMessages = result.index >= Math.floor(queryMessageLimit / 2);
|
|
58125
|
+
}
|
|
58001
58126
|
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
58002
|
-
|
|
58003
|
-
case
|
|
58004
|
-
|
|
58005
|
-
|
|
58127
|
+
_f.label = 8;
|
|
58128
|
+
case 8:
|
|
58129
|
+
if (!firstUnreadMessageId && !lastReadMessageId) {
|
|
58130
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
58131
|
+
return [2 /*return*/];
|
|
58132
|
+
}
|
|
58133
|
+
if (!!isInCurrentMessageSet) return [3 /*break*/, 12];
|
|
58134
|
+
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
58135
|
+
_f.label = 9;
|
|
58136
|
+
case 9:
|
|
58137
|
+
_f.trys.push([9, 11, , 12]);
|
|
58138
|
+
targetId_1 = (firstUnreadMessageId !== null && firstUnreadMessageId !== void 0 ? firstUnreadMessageId : lastReadMessageId);
|
|
58139
|
+
return [4 /*yield*/, channel.state.loadMessageIntoState(targetId_1, undefined, queryMessageLimit)];
|
|
58140
|
+
case 10:
|
|
58141
|
+
_f.sent();
|
|
58142
|
+
indexOfTarget = channel.state.messages.findIndex(function (message) { return message.id === targetId_1; });
|
|
58143
|
+
hasMoreMessages = indexOfTarget >= Math.floor(queryMessageLimit / 2);
|
|
58144
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
58145
|
+
firstUnreadMessageId =
|
|
58146
|
+
firstUnreadMessageId !== null && firstUnreadMessageId !== void 0 ? firstUnreadMessageId : (_e = channel.state.messages[indexOfTarget + 1]) === null || _e === void 0 ? void 0 : _e.id;
|
|
58147
|
+
return [3 /*break*/, 12];
|
|
58148
|
+
case 11:
|
|
58149
|
+
_f.sent();
|
|
58150
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
58151
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
58152
|
+
return [2 /*return*/];
|
|
58153
|
+
case 12:
|
|
58154
|
+
if (!firstUnreadMessageId) {
|
|
58155
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
58156
|
+
return [2 /*return*/];
|
|
58157
|
+
}
|
|
58158
|
+
if (!channelUnreadUiState.first_unread_message_id)
|
|
58159
|
+
_setChannelUnreadUiState(__assign(__assign({}, channelUnreadUiState), { first_unread_message_id: firstUnreadMessageId, last_read_message_id: lastReadMessageId }));
|
|
58006
58160
|
dispatch({
|
|
58007
58161
|
hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
|
|
58008
|
-
highlightedMessageId:
|
|
58162
|
+
highlightedMessageId: firstUnreadMessageId,
|
|
58009
58163
|
type: 'jumpToMessageFinished',
|
|
58010
58164
|
});
|
|
58011
58165
|
if (clearHighlightedMessageTimeoutId.current) {
|
|
@@ -58019,7 +58173,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
58019
58173
|
}
|
|
58020
58174
|
});
|
|
58021
58175
|
});
|
|
58022
|
-
}, [addNotification, channel,
|
|
58176
|
+
}, [addNotification, channel, loadMoreFinished, t, channelUnreadUiState]);
|
|
58023
58177
|
var deleteMessage = React$2.useCallback(function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
58024
58178
|
var deletedMessage, result;
|
|
58025
58179
|
return __generator(this, function (_a) {
|
|
@@ -58103,8 +58257,24 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
58103
58257
|
case 6:
|
|
58104
58258
|
error_1 = _d.sent();
|
|
58105
58259
|
stringError = JSON.stringify(error_1);
|
|
58106
|
-
parsedError =
|
|
58107
|
-
|
|
58260
|
+
parsedError = (stringError
|
|
58261
|
+
? JSON.parse(stringError)
|
|
58262
|
+
: {});
|
|
58263
|
+
// Handle the case where the message already exists
|
|
58264
|
+
// (typically, when retrying to send a message).
|
|
58265
|
+
// If the message already exists, we can assume it was sent successfully,
|
|
58266
|
+
// so we update the message status to "received".
|
|
58267
|
+
// Right now, the only way to check this error is by checking
|
|
58268
|
+
// the combination of the error code and the error description,
|
|
58269
|
+
// since there is no special error code for duplicate messages.
|
|
58270
|
+
if (parsedError.code === 4 &&
|
|
58271
|
+
error_1 instanceof Error &&
|
|
58272
|
+
error_1.message.includes('already exists')) {
|
|
58273
|
+
updateMessage(__assign(__assign({}, message), { status: 'received' }));
|
|
58274
|
+
}
|
|
58275
|
+
else {
|
|
58276
|
+
updateMessage(__assign(__assign({}, message), { error: parsedError, errorStatusCode: parsedError.status || undefined, status: 'failed' }));
|
|
58277
|
+
}
|
|
58108
58278
|
return [3 /*break*/, 7];
|
|
58109
58279
|
case 7: return [2 /*return*/];
|
|
58110
58280
|
}
|
|
@@ -59680,7 +59850,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
59680
59850
|
|
|
59681
59851
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
59682
59852
|
|
|
59683
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.12.
|
|
59853
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '11.12.2';
|
|
59684
59854
|
|
|
59685
59855
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
|
|
59686
59856
|
var _b, _c;
|
|
@@ -84353,6 +84523,7 @@ var StreamChatReact = (function (exports, React$2, jsxRuntime, ReactDOM, streamC
|
|
|
84353
84523
|
exports.isAudioAttachment = isAudioAttachment;
|
|
84354
84524
|
exports.isChannel = isChannel;
|
|
84355
84525
|
exports.isDate = isDate;
|
|
84526
|
+
exports.isDateSeparatorMessage = isDateSeparatorMessage;
|
|
84356
84527
|
exports.isDayOrMoment = isDayOrMoment;
|
|
84357
84528
|
exports.isFileAttachment = isFileAttachment;
|
|
84358
84529
|
exports.isGalleryAttachmentType = isGalleryAttachmentType;
|