stream-chat-react 12.8.0 → 12.8.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/components/Chat/hooks/useChat.js +1 -1
- package/dist/components/Dialog/DialogManager.d.ts +8 -0
- package/dist/components/Dialog/DialogManager.js +42 -0
- package/dist/components/Dialog/hooks/useDialog.js +5 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +12 -19
- package/dist/components/MessageList/hooks/useMarkRead.js +3 -6
- package/dist/components/MessageList/renderMessages.js +14 -21
- package/dist/components/MessageList/utils.d.ts +9 -0
- package/dist/components/MessageList/utils.js +8 -0
- package/dist/experimental/index.browser.cjs +1 -1
- package/dist/experimental/index.browser.cjs.map +2 -2
- package/dist/experimental/index.node.cjs +1 -1
- package/dist/experimental/index.node.cjs.map +2 -2
- package/dist/index.browser.cjs +87 -26
- package/dist/index.browser.cjs.map +2 -2
- package/dist/index.node.cjs +88 -26
- package/dist/index.node.cjs.map +2 -2
- package/package.json +2 -2
package/dist/index.browser.cjs
CHANGED
|
@@ -17630,6 +17630,7 @@ __export(src_exports, {
|
|
|
17630
17630
|
getGroupChannelDisplayInfo: () => getGroupChannelDisplayInfo,
|
|
17631
17631
|
getGroupStyles: () => getGroupStyles,
|
|
17632
17632
|
getImages: () => getImages,
|
|
17633
|
+
getIsFirstUnreadMessage: () => getIsFirstUnreadMessage,
|
|
17633
17634
|
getLastReceived: () => getLastReceived,
|
|
17634
17635
|
getLatestMessagePreview: () => getLatestMessagePreview,
|
|
17635
17636
|
getMessageActions: () => getMessageActions,
|
|
@@ -17976,6 +17977,7 @@ var DialogManager = class {
|
|
|
17976
17977
|
open: () => {
|
|
17977
17978
|
this.open({ id });
|
|
17978
17979
|
},
|
|
17980
|
+
removalTimeout: void 0,
|
|
17979
17981
|
remove: () => {
|
|
17980
17982
|
this.remove(id);
|
|
17981
17983
|
},
|
|
@@ -17988,6 +17990,21 @@ var DialogManager = class {
|
|
|
17988
17990
|
...{ dialogsById: { ...current.dialogsById, [id]: dialog } }
|
|
17989
17991
|
}));
|
|
17990
17992
|
}
|
|
17993
|
+
if (dialog.removalTimeout) {
|
|
17994
|
+
clearTimeout(dialog.removalTimeout);
|
|
17995
|
+
this.state.next((current) => ({
|
|
17996
|
+
...current,
|
|
17997
|
+
...{
|
|
17998
|
+
dialogsById: {
|
|
17999
|
+
...current.dialogsById,
|
|
18000
|
+
[id]: {
|
|
18001
|
+
...dialog,
|
|
18002
|
+
removalTimeout: void 0
|
|
18003
|
+
}
|
|
18004
|
+
}
|
|
18005
|
+
}
|
|
18006
|
+
}));
|
|
18007
|
+
}
|
|
17991
18008
|
return dialog;
|
|
17992
18009
|
}
|
|
17993
18010
|
open(params, closeRest) {
|
|
@@ -18023,6 +18040,9 @@ var DialogManager = class {
|
|
|
18023
18040
|
const state = this.state.getLatestValue();
|
|
18024
18041
|
const dialog = state.dialogsById[id];
|
|
18025
18042
|
if (!dialog) return;
|
|
18043
|
+
if (dialog.removalTimeout) {
|
|
18044
|
+
clearTimeout(dialog.removalTimeout);
|
|
18045
|
+
}
|
|
18026
18046
|
this.state.next((current) => {
|
|
18027
18047
|
const newDialogs = { ...current.dialogsById };
|
|
18028
18048
|
delete newDialogs[id];
|
|
@@ -18032,6 +18052,29 @@ var DialogManager = class {
|
|
|
18032
18052
|
};
|
|
18033
18053
|
});
|
|
18034
18054
|
}
|
|
18055
|
+
/**
|
|
18056
|
+
* Marks the dialog state as unused. If the dialog id is referenced again quickly,
|
|
18057
|
+
* the state will not be removed. Otherwise, the state will be removed after
|
|
18058
|
+
* a short timeout.
|
|
18059
|
+
*/
|
|
18060
|
+
markForRemoval(id) {
|
|
18061
|
+
const dialog = this.state.getLatestValue().dialogsById[id];
|
|
18062
|
+
if (!dialog) {
|
|
18063
|
+
return;
|
|
18064
|
+
}
|
|
18065
|
+
this.state.next((current) => ({
|
|
18066
|
+
...current,
|
|
18067
|
+
dialogsById: {
|
|
18068
|
+
...current.dialogsById,
|
|
18069
|
+
[id]: {
|
|
18070
|
+
...dialog,
|
|
18071
|
+
removalTimeout: setTimeout(() => {
|
|
18072
|
+
this.remove(id);
|
|
18073
|
+
}, 16)
|
|
18074
|
+
}
|
|
18075
|
+
}
|
|
18076
|
+
}));
|
|
18077
|
+
}
|
|
18035
18078
|
};
|
|
18036
18079
|
|
|
18037
18080
|
// src/components/Dialog/DialogPortal.tsx
|
|
@@ -18060,7 +18103,7 @@ var useDialog = ({ id }) => {
|
|
|
18060
18103
|
const { dialogManager } = useDialogManager();
|
|
18061
18104
|
(0, import_react7.useEffect)(
|
|
18062
18105
|
() => () => {
|
|
18063
|
-
dialogManager.
|
|
18106
|
+
dialogManager.markForRemoval(id);
|
|
18064
18107
|
},
|
|
18065
18108
|
[dialogManager, id]
|
|
18066
18109
|
);
|
|
@@ -47777,6 +47820,21 @@ var hasNotMoreMessages = (returnedCountMessages, limit) => returnedCountMessages
|
|
|
47777
47820
|
function isDateSeparatorMessage(message) {
|
|
47778
47821
|
return message.customType === CUSTOM_MESSAGE_TYPE.date && !!message.date && isDate(message.date);
|
|
47779
47822
|
}
|
|
47823
|
+
var getIsFirstUnreadMessage = ({
|
|
47824
|
+
firstUnreadMessageId,
|
|
47825
|
+
isFirstMessage,
|
|
47826
|
+
lastReadDate,
|
|
47827
|
+
lastReadMessageId,
|
|
47828
|
+
message,
|
|
47829
|
+
previousMessage,
|
|
47830
|
+
unreadMessageCount = 0
|
|
47831
|
+
}) => {
|
|
47832
|
+
const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
47833
|
+
const lastReadTimestamp = lastReadDate?.getTime();
|
|
47834
|
+
const messageIsUnread = !!createdAtTimestamp && !!lastReadTimestamp && createdAtTimestamp > lastReadTimestamp;
|
|
47835
|
+
const previousMessageIsLastRead = !!lastReadMessageId && lastReadMessageId === previousMessage?.id;
|
|
47836
|
+
return firstUnreadMessageId === message.id || !!unreadMessageCount && messageIsUnread && (isFirstMessage || previousMessageIsLastRead);
|
|
47837
|
+
};
|
|
47780
47838
|
|
|
47781
47839
|
// src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
|
|
47782
47840
|
var useEnrichedMessages = (args) => {
|
|
@@ -48133,7 +48191,6 @@ var useMarkRead = ({
|
|
|
48133
48191
|
if (shouldMarkRead(channel.countUnread())) markRead();
|
|
48134
48192
|
};
|
|
48135
48193
|
const handleMessageNew = (event) => {
|
|
48136
|
-
const newMessageToCurrentChannel = event.cid === channel.cid;
|
|
48137
48194
|
const isOwnMessage = event.user?.id && event.user.id === client.user?.id;
|
|
48138
48195
|
const mainChannelUpdated = !event.message?.parent_id || event.message?.show_in_channel;
|
|
48139
48196
|
if (isOwnMessage) return;
|
|
@@ -48151,17 +48208,17 @@ var useMarkRead = ({
|
|
|
48151
48208
|
unread_messages: previousUnreadCount + 1
|
|
48152
48209
|
};
|
|
48153
48210
|
});
|
|
48154
|
-
} else if (
|
|
48211
|
+
} else if (mainChannelUpdated && shouldMarkRead(channel.countUnread())) {
|
|
48155
48212
|
markRead();
|
|
48156
48213
|
}
|
|
48157
48214
|
};
|
|
48158
|
-
|
|
48215
|
+
channel.on("message.new", handleMessageNew);
|
|
48159
48216
|
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
48160
48217
|
const hasScrolledToBottom = previousRenderMessageListScrolledToBottom.current !== isMessageListScrolledToBottom && isMessageListScrolledToBottom;
|
|
48161
48218
|
if (hasScrolledToBottom && shouldMarkRead(channel.countUnread())) markRead();
|
|
48162
48219
|
previousRenderMessageListScrolledToBottom.current = isMessageListScrolledToBottom;
|
|
48163
48220
|
return () => {
|
|
48164
|
-
|
|
48221
|
+
channel.off("message.new", handleMessageNew);
|
|
48165
48222
|
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
48166
48223
|
};
|
|
48167
48224
|
}, [
|
|
@@ -48596,6 +48653,7 @@ function defaultRenderMessages({
|
|
|
48596
48653
|
} = components;
|
|
48597
48654
|
const renderedMessages = [];
|
|
48598
48655
|
let firstMessage;
|
|
48656
|
+
let previousMessage = void 0;
|
|
48599
48657
|
for (let index3 = 0; index3 < messages.length; index3++) {
|
|
48600
48658
|
const message = messages[index3];
|
|
48601
48659
|
if (isDateSeparatorMessage(message)) {
|
|
@@ -48623,16 +48681,17 @@ function defaultRenderMessages({
|
|
|
48623
48681
|
}
|
|
48624
48682
|
const groupStyles = messageGroupStyles[message.id] || "";
|
|
48625
48683
|
const messageClass = customClasses?.message || `str-chat__li str-chat__li--${groupStyles}`;
|
|
48626
|
-
const
|
|
48627
|
-
|
|
48628
|
-
|
|
48629
|
-
|
|
48630
|
-
|
|
48631
|
-
|
|
48632
|
-
|
|
48633
|
-
|
|
48684
|
+
const isFirstUnreadMessage = getIsFirstUnreadMessage({
|
|
48685
|
+
firstUnreadMessageId: channelUnreadUiState?.first_unread_message_id,
|
|
48686
|
+
isFirstMessage: !!firstMessage?.id && firstMessage.id === message.id,
|
|
48687
|
+
lastReadDate: channelUnreadUiState?.last_read,
|
|
48688
|
+
lastReadMessageId: channelUnreadUiState?.last_read_message_id,
|
|
48689
|
+
message,
|
|
48690
|
+
previousMessage,
|
|
48691
|
+
unreadMessageCount: channelUnreadUiState?.unread_messages
|
|
48692
|
+
});
|
|
48634
48693
|
renderedMessages.push(
|
|
48635
|
-
/* @__PURE__ */ import_react246.default.createElement(import_react246.Fragment, { key: message.id || message.created_at },
|
|
48694
|
+
/* @__PURE__ */ import_react246.default.createElement(import_react246.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react246.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react246.default.createElement(UnreadMessagesSeparator2, { unreadCount: channelUnreadUiState?.unread_messages })), /* @__PURE__ */ import_react246.default.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass }, /* @__PURE__ */ import_react246.default.createElement(
|
|
48636
48695
|
Message,
|
|
48637
48696
|
{
|
|
48638
48697
|
groupStyles: [groupStyles],
|
|
@@ -48641,8 +48700,9 @@ function defaultRenderMessages({
|
|
|
48641
48700
|
readBy: readData[message.id] || [],
|
|
48642
48701
|
...messageProps
|
|
48643
48702
|
}
|
|
48644
|
-
))
|
|
48703
|
+
)))
|
|
48645
48704
|
);
|
|
48705
|
+
previousMessage = message;
|
|
48646
48706
|
}
|
|
48647
48707
|
}
|
|
48648
48708
|
return renderedMessages;
|
|
@@ -49242,15 +49302,16 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
49242
49302
|
const maybeNextMessage = messageList[streamMessageIndex + 1];
|
|
49243
49303
|
const firstOfGroup = shouldGroupByUser && (message.user?.id !== maybePrevMessage?.user?.id || maybePrevMessage && isMessageEdited(maybePrevMessage));
|
|
49244
49304
|
const endOfGroup = shouldGroupByUser && (message.user?.id !== maybeNextMessage?.user?.id || isMessageEdited(message));
|
|
49245
|
-
const
|
|
49246
|
-
|
|
49247
|
-
|
|
49248
|
-
|
|
49249
|
-
|
|
49250
|
-
|
|
49251
|
-
|
|
49252
|
-
|
|
49253
|
-
|
|
49305
|
+
const isFirstUnreadMessage = getIsFirstUnreadMessage({
|
|
49306
|
+
firstUnreadMessageId,
|
|
49307
|
+
isFirstMessage: streamMessageIndex === 0,
|
|
49308
|
+
lastReadDate,
|
|
49309
|
+
lastReadMessageId,
|
|
49310
|
+
message,
|
|
49311
|
+
previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
|
|
49312
|
+
unreadMessageCount
|
|
49313
|
+
});
|
|
49314
|
+
return /* @__PURE__ */ import_react256.default.createElement(import_react256.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react256.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react256.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react256.default.createElement(
|
|
49254
49315
|
Message,
|
|
49255
49316
|
{
|
|
49256
49317
|
additionalMessageInputProps,
|
|
@@ -49273,7 +49334,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
|
|
|
49273
49334
|
sortReactions,
|
|
49274
49335
|
threadList
|
|
49275
49336
|
}
|
|
49276
|
-
)
|
|
49337
|
+
));
|
|
49277
49338
|
};
|
|
49278
49339
|
|
|
49279
49340
|
// src/components/MessageList/VirtualizedMessageList.tsx
|
|
@@ -50750,7 +50811,7 @@ var useChat = ({
|
|
|
50750
50811
|
if (!client) return;
|
|
50751
50812
|
const userAgent = client.getUserAgent();
|
|
50752
50813
|
if (!userAgent.includes("stream-chat-react")) {
|
|
50753
|
-
client.setUserAgent(`stream-chat-react-12.8.
|
|
50814
|
+
client.setUserAgent(`stream-chat-react-12.8.2-${userAgent}`);
|
|
50754
50815
|
}
|
|
50755
50816
|
client.threads.registerSubscriptions();
|
|
50756
50817
|
client.polls.registerSubscriptions();
|