stream-chat-react 11.4.0 → 11.6.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.
Files changed (151) hide show
  1. package/dist/browser.full-bundle.js +6138 -5630
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +4 -4
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Channel/Channel.d.ts +9 -2
  6. package/dist/components/Channel/Channel.d.ts.map +1 -1
  7. package/dist/components/Channel/Channel.js +86 -22
  8. package/dist/components/ChannelPreview/ChannelPreview.d.ts +16 -0
  9. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  10. package/dist/components/ChannelPreview/ChannelPreview.js +16 -2
  11. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -0
  12. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  13. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +62 -2
  14. package/dist/components/Emojis/index.cjs.js +1 -1
  15. package/dist/components/Message/Message.d.ts.map +1 -1
  16. package/dist/components/Message/Message.js +40 -8
  17. package/dist/components/Message/hooks/index.d.ts +2 -0
  18. package/dist/components/Message/hooks/index.d.ts.map +1 -1
  19. package/dist/components/Message/hooks/index.js +2 -0
  20. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +10 -0
  21. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -0
  22. package/dist/components/Message/hooks/useMarkUnreadHandler.js +45 -0
  23. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +11 -0
  24. package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -0
  25. package/dist/components/Message/hooks/useReactionsFetcher.js +58 -0
  26. package/dist/components/Message/hooks/useUserRole.d.ts +1 -0
  27. package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
  28. package/dist/components/Message/hooks/useUserRole.js +2 -0
  29. package/dist/components/Message/types.d.ts +7 -1
  30. package/dist/components/Message/types.d.ts.map +1 -1
  31. package/dist/components/Message/utils.d.ts +4 -1
  32. package/dist/components/Message/utils.d.ts.map +1 -1
  33. package/dist/components/Message/utils.js +12 -3
  34. package/dist/components/MessageActions/MessageActions.d.ts +1 -1
  35. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  36. package/dist/components/MessageActions/MessageActions.js +4 -3
  37. package/dist/components/MessageActions/MessageActionsBox.d.ts +1 -1
  38. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  39. package/dist/components/MessageActions/MessageActionsBox.js +3 -4
  40. package/dist/components/MessageList/MessageList.d.ts +3 -1
  41. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  42. package/dist/components/MessageList/MessageList.js +29 -13
  43. package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -0
  44. package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
  45. package/dist/components/MessageList/MessageListMainPanel.js +2 -1
  46. package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
  47. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  48. package/dist/components/MessageList/MessageListNotifications.js +2 -2
  49. package/dist/components/MessageList/MessageNotification.d.ts +2 -0
  50. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  51. package/dist/components/MessageList/ScrollToBottomButton.d.ts +1 -1
  52. package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
  53. package/dist/components/MessageList/ScrollToBottomButton.js +3 -44
  54. package/dist/components/MessageList/UnreadMessagesNotification.d.ts +6 -0
  55. package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
  56. package/dist/components/MessageList/UnreadMessagesNotification.js +12 -0
  57. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts +6 -0
  58. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -0
  59. package/dist/components/MessageList/UnreadMessagesSeparator.js +10 -0
  60. package/dist/components/MessageList/VirtualizedMessageList.d.ts +12 -1
  61. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  62. package/dist/components/MessageList/VirtualizedMessageList.js +42 -19
  63. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +5 -3
  64. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  65. package/dist/components/MessageList/VirtualizedMessageListComponents.js +27 -6
  66. package/dist/components/MessageList/hooks/MessageList/index.d.ts +1 -0
  67. package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -1
  68. package/dist/components/MessageList/hooks/MessageList/index.js +1 -0
  69. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -5
  70. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  71. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +3 -1
  72. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +7 -0
  73. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -0
  74. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +42 -0
  75. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +1 -0
  76. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -1
  77. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +1 -0
  78. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +22 -0
  79. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -0
  80. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +29 -0
  81. package/dist/components/MessageList/hooks/useMarkRead.d.ts +19 -0
  82. package/dist/components/MessageList/hooks/useMarkRead.d.ts.map +1 -0
  83. package/dist/components/MessageList/hooks/useMarkRead.js +38 -0
  84. package/dist/components/MessageList/icons.d.ts +1 -0
  85. package/dist/components/MessageList/icons.d.ts.map +1 -1
  86. package/dist/components/MessageList/icons.js +2 -0
  87. package/dist/components/MessageList/index.d.ts +2 -0
  88. package/dist/components/MessageList/index.d.ts.map +1 -1
  89. package/dist/components/MessageList/index.js +2 -0
  90. package/dist/components/MessageList/renderMessages.d.ts +13 -2
  91. package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
  92. package/dist/components/MessageList/renderMessages.js +16 -11
  93. package/dist/components/Reactions/ReactionsList.d.ts +2 -1
  94. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  95. package/dist/components/Reactions/ReactionsList.js +32 -41
  96. package/dist/components/Reactions/ReactionsListModal.d.ts +13 -0
  97. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -0
  98. package/dist/components/Reactions/ReactionsListModal.js +46 -0
  99. package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -4
  100. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  101. package/dist/components/Reactions/SimpleReactionsList.js +7 -24
  102. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +12 -0
  103. package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -0
  104. package/dist/components/Reactions/hooks/useFetchReactions.js +50 -0
  105. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -13
  106. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  107. package/dist/components/Reactions/hooks/useProcessReactions.js +51 -46
  108. package/dist/components/Reactions/types.d.ts +9 -0
  109. package/dist/components/Reactions/types.d.ts.map +1 -0
  110. package/dist/components/Reactions/types.js +1 -0
  111. package/dist/context/ChannelActionContext.d.ts +2 -0
  112. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  113. package/dist/context/ComponentContext.d.ts +6 -2
  114. package/dist/context/ComponentContext.d.ts.map +1 -1
  115. package/dist/context/MessageContext.d.ts +8 -2
  116. package/dist/context/MessageContext.d.ts.map +1 -1
  117. package/dist/css/v2/index.css +1 -1
  118. package/dist/css/v2/index.layout.css +1 -1
  119. package/dist/i18n/Streami18n.d.ts +10 -0
  120. package/dist/i18n/Streami18n.d.ts.map +1 -1
  121. package/dist/i18n/de.json +10 -0
  122. package/dist/i18n/en.json +10 -0
  123. package/dist/i18n/es.json +12 -0
  124. package/dist/i18n/fr.json +12 -0
  125. package/dist/i18n/hi.json +11 -0
  126. package/dist/i18n/it.json +12 -0
  127. package/dist/i18n/ja.json +8 -0
  128. package/dist/i18n/ko.json +8 -0
  129. package/dist/i18n/nl.json +10 -0
  130. package/dist/i18n/pt.json +12 -0
  131. package/dist/i18n/ru.json +14 -0
  132. package/dist/i18n/tr.json +10 -0
  133. package/dist/{icons-b84cd102.js → icons-7ead3d97.js} +12 -12
  134. package/dist/index.cjs.js +4880 -4372
  135. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +1 -0
  136. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +16 -8
  137. package/dist/scss/v2/Avatar/Avatar-theme.scss +1 -0
  138. package/dist/scss/v2/Message/Message-layout.scss +68 -10
  139. package/dist/scss/v2/Message/Message-theme.scss +34 -2
  140. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -11
  141. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-layout.scss +18 -0
  142. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-theme.scss +51 -0
  143. package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +74 -0
  144. package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +17 -0
  145. package/dist/scss/v2/_base.scss +3 -20
  146. package/dist/scss/v2/_global-theme-variables.scss +3 -0
  147. package/dist/scss/v2/index.layout.scss +1 -0
  148. package/dist/scss/v2/index.scss +1 -1
  149. package/dist/version.d.ts +1 -1
  150. package/dist/version.js +1 -1
  151. package/package.json +5 -3
@@ -3,6 +3,7 @@ export * from './useDeleteHandler';
3
3
  export * from './useEditHandler';
4
4
  export * from './useFlagHandler';
5
5
  export * from './useMentionsHandler';
6
+ export * from './useMarkUnreadHandler';
6
7
  export * from './useMuteHandler';
7
8
  export * from './useOpenThreadHandler';
8
9
  export * from './usePinHandler';
@@ -10,3 +11,4 @@ export * from './useReactionHandler';
10
11
  export * from './useRetryHandler';
11
12
  export * from './useUserHandler';
12
13
  export * from './useUserRole';
14
+ export * from './useReactionsFetcher';
@@ -0,0 +1,10 @@
1
+ import type { StreamMessage } from '../../../context';
2
+ import type { ReactEventHandler } from '../types';
3
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
4
+ export type MarkUnreadHandlerNotifications<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
5
+ getErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
6
+ getSuccessNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
7
+ notify?: (notificationText: string, type: 'success' | 'error') => void;
8
+ };
9
+ export declare const useMarkUnreadHandler: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message?: StreamMessage<StreamChatGenerics> | undefined, notifications?: MarkUnreadHandlerNotifications<StreamChatGenerics>) => ReactEventHandler;
10
+ //# sourceMappingURL=useMarkUnreadHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkUnreadHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useMarkUnreadHandler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,MAAM,8BAA8B,CACxC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAC9E,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAChF,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,qNAK9B,iBAiCF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { validateAndGetMessage } from '../utils';
3
+ import { useChannelStateContext, useTranslationContext } from '../../../context';
4
+ export var useMarkUnreadHandler = function (message, notifications) {
5
+ if (notifications === void 0) { notifications = {}; }
6
+ var getErrorNotification = notifications.getErrorNotification, getSuccessNotification = notifications.getSuccessNotification, notify = notifications.notify;
7
+ var channel = useChannelStateContext('useMarkUnreadHandler').channel;
8
+ var t = useTranslationContext('useMarkUnreadHandler').t;
9
+ return function (event) { return __awaiter(void 0, void 0, void 0, function () {
10
+ var successMessage, e_1, errorMessage;
11
+ return __generator(this, function (_a) {
12
+ switch (_a.label) {
13
+ case 0:
14
+ event.preventDefault();
15
+ if (!(message === null || message === void 0 ? void 0 : message.id)) {
16
+ console.warn('Mark unread handler does not have access to message id');
17
+ return [2 /*return*/];
18
+ }
19
+ _a.label = 1;
20
+ case 1:
21
+ _a.trys.push([1, 3, , 4]);
22
+ return [4 /*yield*/, channel.markUnread({ message_id: message.id })];
23
+ case 2:
24
+ _a.sent();
25
+ if (!notify)
26
+ return [2 /*return*/];
27
+ successMessage = getSuccessNotification && validateAndGetMessage(getSuccessNotification, [message]);
28
+ if (successMessage)
29
+ notify(successMessage, 'success');
30
+ return [3 /*break*/, 4];
31
+ case 3:
32
+ e_1 = _a.sent();
33
+ if (!notify)
34
+ return [2 /*return*/];
35
+ errorMessage = getErrorNotification && validateAndGetMessage(getErrorNotification, [message]);
36
+ if (getErrorNotification && !errorMessage)
37
+ return [2 /*return*/];
38
+ notify(errorMessage ||
39
+ t('Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.'), 'error');
40
+ return [3 /*break*/, 4];
41
+ case 4: return [2 /*return*/];
42
+ }
43
+ });
44
+ }); };
45
+ };
@@ -0,0 +1,11 @@
1
+ import { StreamMessage } from '../../../context';
2
+ import { DefaultStreamChatGenerics } from '../../../types/types';
3
+ import { ReactionResponse } from 'stream-chat';
4
+ export declare const MAX_MESSAGE_REACTIONS_TO_FETCH = 1200;
5
+ type FetchMessageReactionsNotifications<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
6
+ getErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
7
+ notify?: (notificationText: string, type: 'success' | 'error') => void;
8
+ };
9
+ export declare function useReactionsFetcher<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: StreamMessage<StreamChatGenerics>, notifications?: FetchMessageReactionsNotifications<StreamChatGenerics>): () => Promise<ReactionResponse<StreamChatGenerics>[]>;
10
+ export {};
11
+ //# sourceMappingURL=useReactionsFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReactionsFetcher.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useReactionsFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiD,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAW,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD,KAAK,kCAAkC,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;CACxE,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAEhF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,aAAa,GAAE,kCAAkC,CAAC,kBAAkB,CAAM,yDAe3E"}
@@ -0,0 +1,58 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { useChannelStateContext, useTranslationContext } from '../../../context';
3
+ export var MAX_MESSAGE_REACTIONS_TO_FETCH = 1200;
4
+ export function useReactionsFetcher(message, notifications) {
5
+ var _this = this;
6
+ if (notifications === void 0) { notifications = {}; }
7
+ var channel = useChannelStateContext('useReactionFetcher').channel;
8
+ var t = useTranslationContext('useReactionFetcher').t;
9
+ var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
10
+ return function () { return __awaiter(_this, void 0, void 0, function () {
11
+ var e_1, errorMessage;
12
+ return __generator(this, function (_a) {
13
+ switch (_a.label) {
14
+ case 0:
15
+ _a.trys.push([0, 2, , 3]);
16
+ return [4 /*yield*/, fetchMessageReactions(channel, message.id)];
17
+ case 1: return [2 /*return*/, _a.sent()];
18
+ case 2:
19
+ e_1 = _a.sent();
20
+ errorMessage = getErrorNotification === null || getErrorNotification === void 0 ? void 0 : getErrorNotification(message);
21
+ notify === null || notify === void 0 ? void 0 : notify(errorMessage || t('Error fetching reactions'), 'error');
22
+ throw e_1;
23
+ case 3: return [2 /*return*/];
24
+ }
25
+ });
26
+ }); };
27
+ }
28
+ function fetchMessageReactions(channel, messageId) {
29
+ return __awaiter(this, void 0, void 0, function () {
30
+ var reactions, limit, offset, reactionsLimit, lastPageSize, response;
31
+ return __generator(this, function (_a) {
32
+ switch (_a.label) {
33
+ case 0:
34
+ reactions = [];
35
+ limit = 300;
36
+ offset = 0;
37
+ reactionsLimit = MAX_MESSAGE_REACTIONS_TO_FETCH;
38
+ lastPageSize = limit;
39
+ _a.label = 1;
40
+ case 1:
41
+ if (!(lastPageSize === limit && reactions.length < reactionsLimit)) return [3 /*break*/, 3];
42
+ return [4 /*yield*/, channel.getReactions(messageId, {
43
+ limit: limit,
44
+ offset: offset,
45
+ })];
46
+ case 2:
47
+ response = _a.sent();
48
+ lastPageSize = response.reactions.length;
49
+ if (lastPageSize > 0) {
50
+ reactions.push.apply(reactions, response.reactions);
51
+ }
52
+ offset += lastPageSize;
53
+ return [3 /*break*/, 1];
54
+ case 3: return [2 /*return*/, reactions];
55
+ }
56
+ });
57
+ });
58
+ }
@@ -4,6 +4,7 @@ export declare const useUserRole: <StreamChatGenerics extends DefaultStreamChatG
4
4
  canDelete: boolean;
5
5
  canEdit: boolean;
6
6
  canFlag: boolean;
7
+ canMarkUnread: boolean;
7
8
  canMute: boolean;
8
9
  canQuote: boolean;
9
10
  canReact: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useUserRole.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useUserRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,sCAAsC,CAAC;AAG7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,WAAW,qJAIF,OAAO,0BACH,OAAO;;;;;;;;;;;;CA2DhC,CAAC"}
1
+ {"version":3,"file":"useUserRole.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/hooks/useUserRole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,sCAAsC,CAAC;AAG7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,WAAW,qJAIF,OAAO,0BACH,OAAO;;;;;;;;;;;;;CA6DhC,CAAC"}
@@ -29,6 +29,7 @@ export var useUserRole = function (message, onlySenderCanEdit, disableQuotedMess
29
29
  var canDelete = channelCapabilities['delete-any-message'] ||
30
30
  (isMyMessage && channelCapabilities['delete-own-message']);
31
31
  var canFlag = !isMyMessage && channelCapabilities['flag-message'];
32
+ var canMarkUnread = channelCapabilities['read-events'];
32
33
  var canMute = !isMyMessage && channelCapabilities['mute-channel'];
33
34
  var canQuote = !disableQuotedMessages && channelCapabilities['quote-message'];
34
35
  var canReact = channelCapabilities['send-reaction'];
@@ -37,6 +38,7 @@ export var useUserRole = function (message, onlySenderCanEdit, disableQuotedMess
37
38
  canDelete: canDelete,
38
39
  canEdit: canEdit,
39
40
  canFlag: canFlag,
41
+ canMarkUnread: canMarkUnread,
40
42
  canMute: canMute,
41
43
  canQuote: canQuote,
42
44
  canReact: canReact,
@@ -33,10 +33,16 @@ export type MessageProps<StreamChatGenerics extends DefaultStreamChatGenerics =
33
33
  formatDate?: (date: Date) => string;
34
34
  /** Function that returns the notification text to be displayed when a delete message request fails */
35
35
  getDeleteMessageErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
36
+ /** Function that returns the notification text to be displayed when loading message reactions fails */
37
+ getFetchReactionsErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
36
38
  /** Function that returns the notification text to be displayed when a flag message request fails */
37
39
  getFlagMessageErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
38
40
  /** Function that returns the notification text to be displayed when a flag message request succeeds */
39
41
  getFlagMessageSuccessNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
42
+ /** Function that returns the notification text to be displayed when mark channel messages unread request fails */
43
+ getMarkMessageUnreadErrorNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
44
+ /** Function that returns the notification text to be displayed when mark channel messages unread request succeeds */
45
+ getMarkMessageUnreadSuccessNotification?: (message: StreamMessage<StreamChatGenerics>) => string;
40
46
  /** Function that returns the notification text to be displayed when a mute user request fails */
41
47
  getMuteUserErrorNotification?: (user: UserResponse<StreamChatGenerics>) => string;
42
48
  /** Function that returns the notification text to be displayed when a mute user request succeeds */
@@ -73,7 +79,7 @@ export type MessageProps<StreamChatGenerics extends DefaultStreamChatGenerics =
73
79
  openThread?: ChannelActionContextValue<StreamChatGenerics>['openThread'];
74
80
  /** @deprecated in favor of `channelCapabilities - The user roles allowed to pin messages in various channel types */
75
81
  pinPermissions?: PinPermissions;
76
- /** A list of users that have read this Message */
82
+ /** A list of users that have read this Message if the message is the last one and was posted by my user */
77
83
  readBy?: UserResponse<StreamChatGenerics>[];
78
84
  /** Custom function to render message text content, defaults to the renderText function: [utils](https://github.com/GetStream/stream-chat-react/blob/master/src/utils.ts) */
79
85
  renderText?: (text?: string, mentioned_users?: UserResponse<StreamChatGenerics>[], options?: RenderTextOptions) => JSX.Element | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Message/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Message/types.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare const MESSAGE_ACTIONS: {
17
17
  delete: string;
18
18
  edit: string;
19
19
  flag: string;
20
+ markUnread: string;
20
21
  mute: string;
21
22
  pin: string;
22
23
  quote: string;
@@ -29,13 +30,15 @@ export type Capabilities = {
29
30
  canDelete?: boolean;
30
31
  canEdit?: boolean;
31
32
  canFlag?: boolean;
33
+ canMarkUnread?: boolean;
32
34
  canMute?: boolean;
33
35
  canPin?: boolean;
34
36
  canQuote?: boolean;
35
37
  canReact?: boolean;
36
38
  canReply?: boolean;
37
39
  };
38
- export declare const getMessageActions: (actions: MessageActionsArray | boolean, { canDelete, canEdit, canFlag, canMute, canPin, canQuote, canReact, canReply }: Capabilities) => MessageActionsArray<string>;
40
+ export declare const getMessageActions: (actions: MessageActionsArray | boolean, { canDelete, canEdit, canFlag, canMarkUnread, canMute, canPin, canQuote, canReact, canReply, }: Capabilities) => MessageActionsArray<string>;
41
+ export declare const ACTIONS_NOT_WORKING_IN_THREAD: string[];
39
42
  export declare const showMessageActionsBox: (actions: MessageActionsArray<string>, inThread?: boolean | undefined) => boolean;
40
43
  export declare const areMessagePropsEqual: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(prevProps: MessageProps<StreamChatGenerics, import("../../types/types").CustomTrigger> & {
41
44
  mutes?: Mute<StreamChatGenerics>[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kFAC0C,YAAY,gCA+C7F,CAAC;AAIF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAmBF,eAAO,MAAM,oBAAoB;;;;;;aAsChC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAIqC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,CAAC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAC/E,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,GACrC,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBAAsD,CAAC;AAEvF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,iEAEW,qBAAqB,WAiD7C,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,YAOzC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Message/utils.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,8CACV,OAAO,2BAiB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,2LAUvB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;CAU3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,KAAK,CAChE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAC9E,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,cAwDnC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,mBAAmB,GAAG,OAAO,kGAWnC,YAAY,gCAmDhB,CAAC;AAEF,eAAO,MAAM,6BAA6B,UAKzC,CAAC;AAEF,eAAO,MAAM,qBAAqB,oDAErB,OAAO,GAAG,SAAS,YAsB/B,CAAC;AAmBF,eAAO,MAAM,oBAAoB;;;;;;aAsChC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,wJAI6C,CAAC;AAE9E,eAAO,MAAM,qBAAqB,wJAIyB,CAAC;AAE5D,eAAO,MAAM,SAAS,yMASrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,yMASlC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,CAAC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAC/E,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,GACrC,MAAM,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBAAsD,CAAC;AAEvF,eAAO,MAAM,oBAAoB,mIAI5B,SAAS,iEAEW,qBAAqB,WAiD7C,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,YAOzC,CAAC"}
@@ -32,6 +32,7 @@ export var MESSAGE_ACTIONS = {
32
32
  delete: 'delete',
33
33
  edit: 'edit',
34
34
  flag: 'flag',
35
+ markUnread: 'markUnread',
35
36
  mute: 'mute',
36
37
  pin: 'pin',
37
38
  quote: 'quote',
@@ -97,7 +98,7 @@ export var defaultPinPermissions = {
97
98
  },
98
99
  };
99
100
  export var getMessageActions = function (actions, _a) {
100
- var canDelete = _a.canDelete, canEdit = _a.canEdit, canFlag = _a.canFlag, canMute = _a.canMute, canPin = _a.canPin, canQuote = _a.canQuote, canReact = _a.canReact, canReply = _a.canReply;
101
+ var canDelete = _a.canDelete, canEdit = _a.canEdit, canFlag = _a.canFlag, canMarkUnread = _a.canMarkUnread, canMute = _a.canMute, canPin = _a.canPin, canQuote = _a.canQuote, canReact = _a.canReact, canReply = _a.canReply;
101
102
  var messageActionsAfterPermission = [];
102
103
  var messageActions = [];
103
104
  if (actions && typeof actions === 'boolean') {
@@ -119,6 +120,9 @@ export var getMessageActions = function (actions, _a) {
119
120
  if (canFlag && messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1) {
120
121
  messageActionsAfterPermission.push(MESSAGE_ACTIONS.flag);
121
122
  }
123
+ if (canMarkUnread && messageActions.indexOf(MESSAGE_ACTIONS.markUnread) > -1) {
124
+ messageActionsAfterPermission.push(MESSAGE_ACTIONS.markUnread);
125
+ }
122
126
  if (canMute && messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1) {
123
127
  messageActionsAfterPermission.push(MESSAGE_ACTIONS.mute);
124
128
  }
@@ -136,7 +140,12 @@ export var getMessageActions = function (actions, _a) {
136
140
  }
137
141
  return messageActionsAfterPermission;
138
142
  };
139
- var ACTIONS_NOT_WORKING_IN_THREAD = ['pin', 'react', 'reply'];
143
+ export var ACTIONS_NOT_WORKING_IN_THREAD = [
144
+ MESSAGE_ACTIONS.pin,
145
+ MESSAGE_ACTIONS.react,
146
+ MESSAGE_ACTIONS.reply,
147
+ MESSAGE_ACTIONS.markUnread,
148
+ ];
140
149
  export var showMessageActionsBox = function (actions, inThread) {
141
150
  if (actions.length === 0) {
142
151
  return false;
@@ -213,7 +222,7 @@ export var areMessageUIPropsEqual = function (prevProps, nextProps) {
213
222
  }
214
223
  return areMessagesEqual(prevMessage, nextMessage);
215
224
  };
216
- export var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
225
+ export var messageHasReactions = function (message) { var _a; return Object.values((_a = message === null || message === void 0 ? void 0 : message.reaction_counts) !== null && _a !== void 0 ? _a : {}).some(function (count) { return count > 0; }); };
217
226
  export var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
218
227
  export var getImages = function (message) {
219
228
  if (!(message === null || message === void 0 ? void 0 : message.attachments)) {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { MessageContextValue } from '../../context/MessageContext';
3
3
  import type { DefaultStreamChatGenerics, IconProps } from '../../types/types';
4
- type MessageContextPropsToPick = 'getMessageActions' | 'handleDelete' | 'handleFlag' | 'handleMute' | 'handlePin' | 'message';
4
+ type MessageContextPropsToPick = 'getMessageActions' | 'handleDelete' | 'handleFlag' | 'handleMarkUnread' | 'handleMute' | 'handlePin' | 'message';
5
5
  export type MessageActionsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageContextValue<StreamChatGenerics>, MessageContextPropsToPick>> & {
6
6
  ActionsIcon?: React.ComponentType<IconProps>;
7
7
  customWrapperClass?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageActions.d.ts","sourceRoot":"","sources":["../../../src/components/MessageActions/MessageActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAQf,OAAO,EAAE,mBAAmB,EAAqB,MAAM,8BAA8B,CAAC;AAEtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,KAAK,yBAAyB,GAC1B,mBAAmB,GACnB,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC,CAAC,GAAG;IAEtF,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,cAAc,0JAsH1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"MessageActions.d.ts","sourceRoot":"","sources":["../../../src/components/MessageActions/MessageActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAQf,OAAO,EAAE,mBAAmB,EAAqB,MAAM,8BAA8B,CAAC;AAEtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,KAAK,yBAAyB,GAC1B,mBAAmB,GACnB,cAAc,GACd,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC,CAAC,GAAG;IAEtF,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,cAAc,0JA0H1B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -7,12 +7,13 @@ import { useChatContext } from '../../context/ChatContext';
7
7
  import { useMessageContext } from '../../context/MessageContext';
8
8
  import { useMessageActionsBoxPopper } from './hooks';
9
9
  export var MessageActions = function (props) {
10
- var _a = props.ActionsIcon, ActionsIcon = _a === void 0 ? DefaultActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
10
+ var _a = props.ActionsIcon, ActionsIcon = _a === void 0 ? DefaultActionsIcon : _a, _b = props.customWrapperClass, customWrapperClass = _b === void 0 ? '' : _b, propGetMessageActions = props.getMessageActions, propHandleDelete = props.handleDelete, propHandleFlag = props.handleFlag, propHandleMarkUnread = props.handleMarkUnread, propHandleMute = props.handleMute, propHandlePin = props.handlePin, inline = props.inline, propMessage = props.message, messageWrapperRef = props.messageWrapperRef, mine = props.mine;
11
11
  var mutes = useChatContext('MessageActions').mutes;
12
- var _c = useMessageContext('MessageActions'), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
12
+ var _c = useMessageContext('MessageActions'), customMessageActions = _c.customMessageActions, contextGetMessageActions = _c.getMessageActions, contextHandleDelete = _c.handleDelete, contextHandleFlag = _c.handleFlag, contextHandleMarkUnread = _c.handleMarkUnread, contextHandleMute = _c.handleMute, contextHandlePin = _c.handlePin, isMyMessage = _c.isMyMessage, contextMessage = _c.message, setEditingState = _c.setEditingState;
13
13
  var getMessageActions = propGetMessageActions || contextGetMessageActions;
14
14
  var handleDelete = propHandleDelete || contextHandleDelete;
15
15
  var handleFlag = propHandleFlag || contextHandleFlag;
16
+ var handleMarkUnread = propHandleMarkUnread || contextHandleMarkUnread;
16
17
  var handleMute = propHandleMute || contextHandleMute;
17
18
  var handlePin = propHandlePin || contextHandlePin;
18
19
  var message = propMessage || contextMessage;
@@ -56,7 +57,7 @@ export var MessageActions = function (props) {
56
57
  if (!messageActions.length && !customMessageActions)
57
58
  return null;
58
59
  return (React.createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
59
- React.createElement(MessageActionsBox, __assign({}, attributes.popper, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: isMine, open: actionsBoxOpen, ref: popperElementRef, style: styles.popper })),
60
+ React.createElement(MessageActionsBox, __assign({}, attributes.popper, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMarkUnread: handleMarkUnread, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: isMine, open: actionsBoxOpen, ref: popperElementRef, style: styles.popper })),
60
61
  React.createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu', className: 'str-chat__message-actions-box-button', ref: actionsBoxButtonRef },
61
62
  React.createElement(ActionsIcon, { className: 'str-chat__message-action-icon' }))));
62
63
  };
@@ -1,7 +1,7 @@
1
1
  import React, { ComponentProps } from 'react';
2
2
  import { MessageContextValue } from '../../context';
3
3
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
- type PropsDrilledToMessageActionsBox = 'getMessageActions' | 'handleDelete' | 'handleEdit' | 'handleFlag' | 'handleMute' | 'handlePin';
4
+ type PropsDrilledToMessageActionsBox = 'getMessageActions' | 'handleDelete' | 'handleEdit' | 'handleMarkUnread' | 'handleFlag' | 'handleMute' | 'handlePin';
5
5
  export type MessageActionsBoxProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<MessageContextValue<StreamChatGenerics>, PropsDrilledToMessageActionsBox> & {
6
6
  isUserMuted: () => boolean;
7
7
  mine: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageActionsBox.d.ts","sourceRoot":"","sources":["../../../src/components/MessageActions/MessageActionsBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK9C,OAAO,EACL,mBAAmB,EAKpB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAInE,KAAK,+BAA+B,GAChC,mBAAmB,GACnB,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,+BAA+B,CAAC,GAAG;IACnF,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AA0H1B;;GAEG;AACH,eAAO,MAAM,iBAAiB,+PAES,CAAC"}
1
+ {"version":3,"file":"MessageActionsBox.d.ts","sourceRoot":"","sources":["../../../src/components/MessageActions/MessageActionsBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK9C,OAAO,EACL,mBAAmB,EAKpB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAInE,KAAK,+BAA+B,GAChC,mBAAmB,GACnB,cAAc,GACd,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,+BAA+B,CAAC,GAAG;IACnF,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAmI1B;;GAEG;AACH,eAAO,MAAM,iBAAiB,+PAES,CAAC"}
@@ -5,12 +5,10 @@ import { MESSAGE_ACTIONS } from '../Message/utils';
5
5
  import { useChannelActionContext, useComponentContext, useMessageContext, useTranslationContext, } from '../../context';
6
6
  import { CustomMessageActionsList as DefaultCustomMessageActionsList } from './CustomMessageActionsList';
7
7
  var UnMemoizedMessageActionsBox = React.forwardRef(function (props, ref) {
8
- var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted,
9
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
- mine = props.mine, _a = props.open, open = _a === void 0 ? false : _a, restDivProps = __rest(props, ["getMessageActions", "handleDelete", "handleEdit", "handleFlag", "handleMute", "handlePin", "isUserMuted", "mine", "open"]);
8
+ var getMessageActions = props.getMessageActions, handleDelete = props.handleDelete, handleEdit = props.handleEdit, handleFlag = props.handleFlag, handleMarkUnread = props.handleMarkUnread, handleMute = props.handleMute, handlePin = props.handlePin, isUserMuted = props.isUserMuted, _a = props.open, open = _a === void 0 ? false : _a, restDivProps = __rest(props, ["getMessageActions", "handleDelete", "handleEdit", "handleFlag", "handleMarkUnread", "handleMute", "handlePin", "isUserMuted", "open"]);
11
9
  var _b = useComponentContext('MessageActionsBox').CustomMessageActionsList, CustomMessageActionsList = _b === void 0 ? DefaultCustomMessageActionsList : _b;
12
10
  var setQuotedMessage = useChannelActionContext('MessageActionsBox').setQuotedMessage;
13
- var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message;
11
+ var _c = useMessageContext('MessageActionsBox'), customMessageActions = _c.customMessageActions, message = _c.message, threadList = _c.threadList;
14
12
  var t = useTranslationContext('MessageActionsBox').t;
15
13
  var messageActions = getMessageActions();
16
14
  var handleQuote = function () {
@@ -32,6 +30,7 @@ var UnMemoizedMessageActionsBox = React.forwardRef(function (props, ref) {
32
30
  React.createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message }),
33
31
  messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleQuote, role: 'option' }, t('Reply'))),
34
32
  messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
33
+ messageActions.indexOf(MESSAGE_ACTIONS.markUnread) > -1 && !threadList && !!message.id && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMarkUnread, role: 'option' }, t('Mark as unread'))),
35
34
  messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleFlag, role: 'option' }, t('Flag'))),
36
35
  messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
37
36
  messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React.createElement("button", { "aria-selected": 'false', className: buttonClassName, onClick: handleEdit, role: 'option' }, t('Edit Message'))),
@@ -6,7 +6,7 @@ import { MessageRenderer } from './renderMessages';
6
6
  import type { MessageProps } from '../Message/types';
7
7
  import type { StreamMessage } from '../../context/ChannelStateContext';
8
8
  import type { DefaultStreamChatGenerics } from '../../types/types';
9
- type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'renderText' | 'retrySendMessage' | 'unsafeHTML';
9
+ type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMarkMessageUnreadErrorNotification' | 'getMarkMessageUnreadSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'renderText' | 'retrySendMessage' | 'unsafeHTML';
10
10
  export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
11
11
  /** Disables the injection of date separator components in MessageList, defaults to `false` */
12
12
  disableDateSeparator?: boolean;
@@ -34,6 +34,8 @@ export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGeneric
34
34
  loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
35
35
  /** Function called when newer messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
36
36
  loadMoreNewer?: ChannelActionContextValue['loadMoreNewer'] | (() => Promise<void>);
37
+ /** When enabled, the channel will be marked read when a user scrolls to the bottom. Ignored when scrolled to the bottom of a thread message list. */
38
+ markReadOnScrolledToBottom?: boolean;
37
39
  /** The limit to use when paginating messages */
38
40
  messageLimit?: number;
39
41
  /** The messages to render in the list, defaults to messages stored in [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AA8MnE,KAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACrD,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { __assign, __awaiter, __generator, __rest } from "tslib";
2
2
  import React from 'react';
3
- import { useEnrichedMessages, useMessageListElements, useScrollLocationLogic, } from './hooks/MessageList';
3
+ import { useEnrichedMessages, useMessageListElements, useScrollLocationLogic, useUnreadMessagesNotification, } from './hooks/MessageList';
4
+ import { useMarkRead } from './hooks/useMarkRead';
4
5
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
5
6
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
7
+ import { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';
6
8
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
7
9
  import { useChannelStateContext, } from '../../context/ChannelStateContext';
8
10
  import { useChatContext } from '../../context/ChatContext';
@@ -16,23 +18,34 @@ import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
16
18
  import { MessageListMainPanel } from './MessageListMainPanel';
17
19
  import { defaultRenderMessages } from './renderMessages';
18
20
  var MessageListWithContext = function (props) {
19
- var channel = props.channel, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? false : _a, groupStyles = props.groupStyles, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _d = props.messageActions, messageActions = _d === void 0 ? Object.keys(MESSAGE_ACTIONS) : _d, _e = props.messages, messages = _e === void 0 ? [] : _e, notifications = props.notifications, _f = props.noGroupByUser, noGroupByUser = _f === void 0 ? false : _f, _g = props.pinPermissions, pinPermissions = _g === void 0 ? defaultPinPermissions : _g, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
20
- _h = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
21
- returnAllReadData = _h === void 0 ? false : _h, _j = props.threadList, threadList = _j === void 0 ? false : _j, _k = props.unsafeHTML, unsafeHTML = _k === void 0 ? false : _k, headerPosition = props.headerPosition, read = props.read, _l = props.renderMessages, renderMessages = _l === void 0 ? defaultRenderMessages : _l, _m = props.messageLimit, messageLimit = _m === void 0 ? 100 : _m, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _o = props.hasMoreNewer, hasMoreNewer = _o === void 0 ? false : _o, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _p = props.jumpToLatestMessage, jumpToLatestMessage = _p === void 0 ? function () { return Promise.resolve(); } : _p;
22
- var _q = React.useState(null), listElement = _q[0], setListElement = _q[1];
23
- var _r = React.useState(null), ulElement = _r[0], setUlElement = _r[1];
24
- var customClasses = useChatContext('MessageList').customClasses;
25
- var _s = useComponentContext('MessageList'), _t = _s.EmptyStateIndicator, EmptyStateIndicator = _t === void 0 ? DefaultEmptyStateIndicator : _t, _u = _s.LoadingIndicator, LoadingIndicator = _u === void 0 ? DefaultLoadingIndicator : _u, _v = _s.MessageListNotifications, MessageListNotifications = _v === void 0 ? DefaultMessageListNotifications : _v, _w = _s.MessageNotification, MessageNotification = _w === void 0 ? DefaultMessageNotification : _w, _x = _s.TypingIndicator, TypingIndicator = _x === void 0 ? DefaultTypingIndicator : _x;
21
+ var _a;
22
+ var channel = props.channel, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
23
+ _j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
24
+ returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, markReadOnScrolledToBottom = props.markReadOnScrolledToBottom, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? 100 : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
25
+ var _r = React.useState(null), listElement = _r[0], setListElement = _r[1];
26
+ var _s = React.useState(null), ulElement = _s[0], setUlElement = _s[1];
27
+ var _t = useChatContext('MessageList'), client = _t.client, customClasses = _t.customClasses;
28
+ var _u = useComponentContext('MessageList'), _v = _u.EmptyStateIndicator, EmptyStateIndicator = _v === void 0 ? DefaultEmptyStateIndicator : _v, _w = _u.LoadingIndicator, LoadingIndicator = _w === void 0 ? DefaultLoadingIndicator : _w, _x = _u.MessageListNotifications, MessageListNotifications = _x === void 0 ? DefaultMessageListNotifications : _x, _y = _u.MessageNotification, MessageNotification = _y === void 0 ? DefaultMessageNotification : _y, _z = _u.TypingIndicator, TypingIndicator = _z === void 0 ? DefaultTypingIndicator : _z, _0 = _u.UnreadMessagesNotification, UnreadMessagesNotification = _0 === void 0 ? DefaultUnreadMessagesNotification : _0;
26
29
  var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
27
- var _y = useScrollLocationLogic({
30
+ var currentUserChannelReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]);
31
+ var showUnreadMessagesNotification = useUnreadMessagesNotification({
32
+ unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
33
+ }).show;
34
+ var _1 = useScrollLocationLogic({
28
35
  hasMoreNewer: hasMoreNewer,
29
36
  listElement: listElement,
30
37
  loadMoreScrollThreshold: loadMoreScrollThreshold,
31
38
  messages: messages,
32
39
  scrolledUpThreshold: props.scrolledUpThreshold,
33
40
  suppressAutoscroll: suppressAutoscroll,
34
- }), hasNewMessages = _y.hasNewMessages, isMessageListScrolledToBottom = _y.isMessageListScrolledToBottom, onScroll = _y.onScroll, scrollToBottom = _y.scrollToBottom, wrapperRect = _y.wrapperRect;
35
- var _z = useEnrichedMessages({
41
+ }), hasNewMessages = _1.hasNewMessages, isMessageListScrolledToBottom = _1.isMessageListScrolledToBottom, onScroll = _1.onScroll, scrollToBottom = _1.scrollToBottom, wrapperRect = _1.wrapperRect;
42
+ useMarkRead({
43
+ isMessageListScrolledToBottom: isMessageListScrolledToBottom,
44
+ markReadOnScrolledToBottom: markReadOnScrolledToBottom,
45
+ messageListIsThread: threadList,
46
+ unreadCount: (_a = currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages) !== null && _a !== void 0 ? _a : 0,
47
+ });
48
+ var _2 = useEnrichedMessages({
36
49
  channel: channel,
37
50
  disableDateSeparator: disableDateSeparator,
38
51
  groupStyles: groupStyles,
@@ -41,7 +54,7 @@ var MessageListWithContext = function (props) {
41
54
  hideNewMessageSeparator: hideNewMessageSeparator,
42
55
  messages: messages,
43
56
  noGroupByUser: noGroupByUser,
44
- }), messageGroupStyles = _z.messageGroupStyles, enrichedMessages = _z.messages;
57
+ }), messageGroupStyles = _2.messageGroupStyles, enrichedMessages = _2.messages;
45
58
  var elements = useMessageListElements({
46
59
  enrichedMessages: enrichedMessages,
47
60
  internalMessageProps: {
@@ -53,6 +66,8 @@ var MessageListWithContext = function (props) {
53
66
  getDeleteMessageErrorNotification: props.getDeleteMessageErrorNotification,
54
67
  getFlagMessageErrorNotification: props.getFlagMessageErrorNotification,
55
68
  getFlagMessageSuccessNotification: props.getFlagMessageSuccessNotification,
69
+ getMarkMessageUnreadErrorNotification: props.getMarkMessageUnreadErrorNotification,
70
+ getMarkMessageUnreadSuccessNotification: props.getMarkMessageUnreadSuccessNotification,
56
71
  getMuteUserErrorNotification: props.getMuteUserErrorNotification,
57
72
  getMuteUserSuccessNotification: props.getMuteUserSuccessNotification,
58
73
  getPinMessageErrorNotification: props.getPinMessageErrorNotification,
@@ -116,11 +131,12 @@ var MessageListWithContext = function (props) {
116
131
  var showEmptyStateIndicator = elements.length === 0 && !threadList;
117
132
  return (React.createElement(MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
118
133
  React.createElement(MessageListMainPanel, null,
134
+ !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages })),
119
135
  React.createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
120
136
  React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
121
137
  React.createElement(TypingIndicator, { threadList: threadList }),
122
138
  React.createElement("div", { key: 'bottom' }))))),
123
- React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList })));
139
+ React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList, unreadCount: threadList ? undefined : currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages })));
124
140
  };
125
141
  /**
126
142
  * The MessageList component renders a list of Messages.
@@ -1,3 +1,4 @@
1
1
  import type { PropsWithChildrenOnly } from '../../types/types';
2
+ export declare const MESSAGE_LIST_MAIN_PANEL_CLASS: "str-chat__main-panel-inner";
2
3
  export declare const MessageListMainPanel: ({ children }: PropsWithChildrenOnly) => JSX.Element;
3
4
  //# sourceMappingURL=MessageListMainPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageListMainPanel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListMainPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,oBAAoB,iBAAkB,qBAAqB,gBAMvE,CAAC"}
1
+ {"version":3,"file":"MessageListMainPanel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListMainPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,6BAA6B,8BAAwC,CAAC;AAEnF,eAAO,MAAM,oBAAoB,iBAAkB,qBAAqB,gBAMvE,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import { useChatContext } from '../../context/ChatContext';
3
+ export var MESSAGE_LIST_MAIN_PANEL_CLASS = 'str-chat__main-panel-inner';
3
4
  export var MessageListMainPanel = function (_a) {
4
5
  var children = _a.children;
5
6
  var themeVersion = useChatContext('MessageListMainPanel').themeVersion;
6
7
  if (themeVersion === '2')
7
- return React.createElement("div", { className: 'str-chat__main-panel-inner' }, children);
8
+ return React.createElement("div", { className: MESSAGE_LIST_MAIN_PANEL_CLASS }, children);
8
9
  return React.createElement(React.Fragment, null, children);
9
10
  };
@@ -9,6 +9,7 @@ export type MessageListNotificationsProps = {
9
9
  notifications: ChannelNotifications;
10
10
  scrollToBottom: () => void;
11
11
  threadList?: boolean;
12
+ unreadCount?: number;
12
13
  };
13
14
  export declare const MessageListNotifications: (props: MessageListNotificationsProps) => JSX.Element;
14
15
  //# sourceMappingURL=MessageListNotifications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageListNotifications.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,6BAA6B,EAAE,OAAO,CAAC;IACvC,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBA+B5E,CAAC"}
1
+ {"version":3,"file":"MessageListNotifications.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageListNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,6BAA6B,EAAE,OAAO,CAAC;IACvC,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,6BAA6B,gBAiC5E,CAAC"}