stream-chat-react-native-core 8.5.2 → 8.6.0-beta.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.
Files changed (63) hide show
  1. package/lib/commonjs/components/MessageList/MessageFlashList.js +877 -0
  2. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -0
  3. package/lib/commonjs/components/MessageList/MessageList.js +6 -8
  4. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  5. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +8 -3
  6. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js +1 -1
  8. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  9. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessageFlashList.js +15 -0
  10. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessageFlashList.js.map +1 -0
  11. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +4 -4
  12. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
  13. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js +28 -24
  14. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  15. package/lib/commonjs/components/Thread/Thread.js +12 -1
  16. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  17. package/lib/commonjs/components/index.js +11 -0
  18. package/lib/commonjs/components/index.js.map +1 -1
  19. package/lib/commonjs/version.json +1 -1
  20. package/lib/module/components/MessageList/MessageFlashList.js +877 -0
  21. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -0
  22. package/lib/module/components/MessageList/MessageList.js +6 -8
  23. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  24. package/lib/module/components/MessageList/hooks/useMessageList.js +8 -3
  25. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  26. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js +1 -1
  27. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  28. package/lib/module/components/MessageList/utils/getLastReceivedMessageFlashList.js +15 -0
  29. package/lib/module/components/MessageList/utils/getLastReceivedMessageFlashList.js.map +1 -0
  30. package/lib/module/components/MessageMenu/MessageUserReactions.js +4 -4
  31. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
  32. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js +28 -24
  33. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  34. package/lib/module/components/Thread/Thread.js +12 -1
  35. package/lib/module/components/Thread/Thread.js.map +1 -1
  36. package/lib/module/components/index.js +11 -0
  37. package/lib/module/components/index.js.map +1 -1
  38. package/lib/module/version.json +1 -1
  39. package/lib/typescript/components/MessageList/MessageFlashList.d.ts +81 -0
  40. package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -0
  41. package/lib/typescript/components/MessageList/MessageList.d.ts +2 -1
  42. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  43. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +1 -0
  44. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  45. package/lib/typescript/components/MessageList/utils/getLastReceivedMessageFlashList.d.ts +3 -0
  46. package/lib/typescript/components/MessageList/utils/getLastReceivedMessageFlashList.d.ts.map +1 -0
  47. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +1 -1
  48. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  49. package/lib/typescript/components/Thread/Thread.d.ts +9 -1
  50. package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
  51. package/lib/typescript/components/index.d.ts +1 -0
  52. package/lib/typescript/components/index.d.ts.map +1 -1
  53. package/package.json +7 -1
  54. package/src/components/MessageList/MessageFlashList.tsx +1319 -0
  55. package/src/components/MessageList/MessageList.tsx +9 -6
  56. package/src/components/MessageList/hooks/useMessageList.ts +8 -3
  57. package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts +1 -1
  58. package/src/components/MessageList/utils/getLastReceivedMessageFlashList.ts +20 -0
  59. package/src/components/MessageMenu/MessageUserReactions.tsx +13 -9
  60. package/src/components/MessageMenu/hooks/useFetchReactions.ts +27 -24
  61. package/src/components/Thread/Thread.tsx +31 -6
  62. package/src/components/index.ts +1 -0
  63. package/src/version.json +1 -1
@@ -0,0 +1,877 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.MessageFlashList = void 0;
6
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _reactNative = require("react-native");
11
+ var _useMessageList2 = require("./hooks/useMessageList");
12
+ var _useShouldScrollToRecentOnNewOwnMessage = require("./hooks/useShouldScrollToRecentOnNewOwnMessage");
13
+ var _InlineLoadingMoreIndicator = require("./InlineLoadingMoreIndicator");
14
+ var _InlineLoadingMoreRecentIndicator = require("./InlineLoadingMoreRecentIndicator");
15
+ var _InlineLoadingMoreRecentThreadIndicator = require("./InlineLoadingMoreRecentThreadIndicator");
16
+ var _getLastReceivedMessageFlashList = require("./utils/getLastReceivedMessageFlashList");
17
+ var _AttachmentPickerContext = require("../../contexts/attachmentPickerContext/AttachmentPickerContext");
18
+ var _ChannelContext = require("../../contexts/channelContext/ChannelContext");
19
+ var _ChatContext = require("../../contexts/chatContext/ChatContext");
20
+ var _ImageGalleryContext = require("../../contexts/imageGalleryContext/ImageGalleryContext");
21
+ var _MessagesContext = require("../../contexts/messagesContext/MessagesContext");
22
+ var _OwnCapabilitiesContext = require("../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext");
23
+ var _PaginatedMessageListContext = require("../../contexts/paginatedMessageListContext/PaginatedMessageListContext");
24
+ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
25
+ var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
26
+ var _hooks = require("../../hooks");
27
+ var _types = require("../../types/types");
28
+ var _jsxRuntime = require("react/jsx-runtime");
29
+ var _excluded = ["contentContainerStyle", "style"];
30
+ var _this = this,
31
+ _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/MessageFlashList.tsx";
32
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
33
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
34
+ var FlashList;
35
+ try {
36
+ FlashList = require('@shopify/flash-list').FlashList;
37
+ } catch (_unused) {
38
+ FlashList = undefined;
39
+ }
40
+ var keyExtractor = function keyExtractor(item) {
41
+ if (item.id) {
42
+ return item.id;
43
+ }
44
+ if (item.created_at) {
45
+ return typeof item.created_at === 'string' ? item.created_at : item.created_at.toISOString();
46
+ }
47
+ return Date.now().toString();
48
+ };
49
+ var flatListViewabilityConfig = {
50
+ viewAreaCoveragePercentThreshold: 1
51
+ };
52
+ var hasReadLastMessage = function hasReadLastMessage(channel, userId) {
53
+ var _channel$state$latest, _channel$state$read$u;
54
+ var latestMessageIdInChannel = (_channel$state$latest = channel.state.latestMessages[channel.state.latestMessages.length - 1]) == null ? void 0 : _channel$state$latest.id;
55
+ var lastReadMessageIdServer = (_channel$state$read$u = channel.state.read[userId]) == null ? void 0 : _channel$state$read$u.last_read_message_id;
56
+ return latestMessageIdInChannel === lastReadMessageIdServer;
57
+ };
58
+ var getPreviousLastMessage = function getPreviousLastMessage(messages, newMessage) {
59
+ if (!newMessage) return;
60
+ var previousLastMessage;
61
+ for (var i = messages.length - 1; i >= 0; i--) {
62
+ var msg = messages[i];
63
+ if (!(msg != null && msg.id)) break;
64
+ if (msg.id !== newMessage.id) {
65
+ previousLastMessage = msg;
66
+ break;
67
+ }
68
+ }
69
+ return previousLastMessage;
70
+ };
71
+ var WAIT_FOR_SCROLL_TIMEOUT = 0;
72
+ var getItemTypeInternal = function getItemTypeInternal(message) {
73
+ if (message.type === 'regular') {
74
+ var _message$attachments$, _message$attachments;
75
+ if (((_message$attachments$ = (_message$attachments = message.attachments) == null ? void 0 : _message$attachments.length) != null ? _message$attachments$ : 0) > 0) {
76
+ return 'message-with-attachments';
77
+ }
78
+ if (message.poll_id) {
79
+ return 'message-with-poll';
80
+ }
81
+ if (message.quoted_message_id) {
82
+ return 'message-with-quote';
83
+ }
84
+ if (message.shared_location) {
85
+ return 'message-with-shared-location';
86
+ }
87
+ if (message.text) {
88
+ return 'message-with-text';
89
+ }
90
+ return 'message-with-nothing';
91
+ }
92
+ if (message.type === 'deleted') {
93
+ return 'deleted-message';
94
+ }
95
+ if (message.type === 'system') {
96
+ return 'system-message';
97
+ }
98
+ return 'generic-message';
99
+ };
100
+ var MessageFlashListWithContext = function MessageFlashListWithContext(props) {
101
+ var _client$user4;
102
+ var LoadingMoreRecentIndicator = props.threadList ? _InlineLoadingMoreRecentThreadIndicator.InlineLoadingMoreRecentThreadIndicator : _InlineLoadingMoreRecentIndicator.InlineLoadingMoreRecentIndicator;
103
+ var additionalFlashListProps = props.additionalFlashListProps,
104
+ channel = props.channel,
105
+ channelUnreadState = props.channelUnreadState,
106
+ client = props.client,
107
+ closePicker = props.closePicker,
108
+ DateHeader = props.DateHeader,
109
+ disabled = props.disabled,
110
+ disableTypingIndicator = props.disableTypingIndicator,
111
+ EmptyStateIndicator = props.EmptyStateIndicator,
112
+ _props$FooterComponen = props.FooterComponent,
113
+ FooterComponent = _props$FooterComponen === void 0 ? LoadingMoreRecentIndicator : _props$FooterComponen,
114
+ _props$HeaderComponen = props.HeaderComponent,
115
+ HeaderComponent = _props$HeaderComponen === void 0 ? _InlineLoadingMoreIndicator.InlineLoadingMoreIndicator : _props$HeaderComponen,
116
+ hideStickyDateHeader = props.hideStickyDateHeader,
117
+ highlightedMessageId = props.highlightedMessageId,
118
+ InlineDateSeparator = props.InlineDateSeparator,
119
+ InlineUnreadIndicator = props.InlineUnreadIndicator,
120
+ _props$isListActive = props.isListActive,
121
+ isListActive = _props$isListActive === void 0 ? false : _props$isListActive,
122
+ legacyImageViewerSwipeBehaviour = props.legacyImageViewerSwipeBehaviour,
123
+ loadChannelAroundMessage = props.loadChannelAroundMessage,
124
+ loading = props.loading,
125
+ LoadingIndicator = props.LoadingIndicator,
126
+ loadMore = props.loadMore,
127
+ loadMoreRecent = props.loadMoreRecent,
128
+ loadMoreRecentThread = props.loadMoreRecentThread,
129
+ loadMoreThread = props.loadMoreThread,
130
+ markRead = props.markRead,
131
+ Message = props.Message,
132
+ MessageSystem = props.MessageSystem,
133
+ myMessageTheme = props.myMessageTheme,
134
+ readEvents = props.readEvents,
135
+ NetworkDownIndicator = props.NetworkDownIndicator,
136
+ noGroupByUser = props.noGroupByUser,
137
+ onListScroll = props.onListScroll,
138
+ onThreadSelect = props.onThreadSelect,
139
+ reloadChannel = props.reloadChannel,
140
+ ScrollToBottomButton = props.ScrollToBottomButton,
141
+ selectedPicker = props.selectedPicker,
142
+ setChannelUnreadState = props.setChannelUnreadState,
143
+ setFlatListRef = props.setFlatListRef,
144
+ setMessages = props.setMessages,
145
+ setSelectedPicker = props.setSelectedPicker,
146
+ setTargetedMessage = props.setTargetedMessage,
147
+ shouldShowUnreadUnderlay = props.shouldShowUnreadUnderlay,
148
+ StickyHeader = props.StickyHeader,
149
+ targetedMessage = props.targetedMessage,
150
+ thread = props.thread,
151
+ threadInstance = props.threadInstance,
152
+ _props$threadList = props.threadList,
153
+ threadList = _props$threadList === void 0 ? false : _props$threadList,
154
+ TypingIndicator = props.TypingIndicator,
155
+ TypingIndicatorContainer = props.TypingIndicatorContainer,
156
+ UnreadMessagesNotification = props.UnreadMessagesNotification;
157
+ var flashListRef = (0, _react.useRef)(null);
158
+ var _useState = (0, _react.useState)(false),
159
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
160
+ hasMoved = _useState2[0],
161
+ setHasMoved = _useState2[1];
162
+ var _useState3 = (0, _react.useState)(false),
163
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
164
+ scrollToBottomButtonVisible = _useState4[0],
165
+ setScrollToBottomButtonVisible = _useState4[1];
166
+ var _useState5 = (0, _react.useState)(false),
167
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
168
+ isUnreadNotificationOpen = _useState6[0],
169
+ setIsUnreadNotificationOpen = _useState6[1];
170
+ var _useState7 = (0, _react.useState)(),
171
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
172
+ stickyHeaderDate = _useState8[0],
173
+ setStickyHeaderDate = _useState8[1];
174
+ var _useState9 = (0, _react.useState)(false),
175
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
176
+ autoScrollToRecent = _useState10[0],
177
+ setAutoScrollToRecent = _useState10[1];
178
+ var stickyHeaderDateRef = (0, _react.useRef)(undefined);
179
+ var onStartReachedTracker = (0, _react.useRef)({});
180
+ var onEndReachedTracker = (0, _react.useRef)({});
181
+ var onStartReachedInPromise = (0, _react.useRef)(null);
182
+ var onEndReachedInPromise = (0, _react.useRef)(null);
183
+ var scrollToDebounceTimeoutRef = (0, _react.useRef)(undefined);
184
+ var channelResyncScrollSet = (0, _react.useRef)(true);
185
+ var _useTheme = (0, _ThemeContext.useTheme)(),
186
+ theme = _useTheme.theme;
187
+ var white_snow = theme.colors.white_snow,
188
+ _theme$messageList = theme.messageList,
189
+ container = _theme$messageList.container,
190
+ contentContainer = _theme$messageList.contentContainer,
191
+ listContainer = _theme$messageList.listContainer;
192
+ var myMessageThemeString = (0, _react.useMemo)(function () {
193
+ return JSON.stringify(myMessageTheme);
194
+ }, [myMessageTheme]);
195
+ var modifiedTheme = (0, _react.useMemo)(function () {
196
+ return (0, _ThemeContext.mergeThemes)({
197
+ style: myMessageTheme,
198
+ theme: theme
199
+ });
200
+ }, [myMessageThemeString, theme]);
201
+ var _useMessageList = (0, _useMessageList2.useMessageList)({
202
+ isFlashList: true,
203
+ noGroupByUser: noGroupByUser,
204
+ threadList: threadList
205
+ }),
206
+ dateSeparatorsRef = _useMessageList.dateSeparatorsRef,
207
+ messageGroupStylesRef = _useMessageList.messageGroupStylesRef,
208
+ processedMessageList = _useMessageList.processedMessageList,
209
+ rawMessageList = _useMessageList.rawMessageList;
210
+ var topMessageBeforeUpdate = (0, _react.useRef)(undefined);
211
+ var topMessageAfterUpdate = rawMessageList[0];
212
+ var latestNonCurrentMessageBeforeUpdateRef = (0, _react.useRef)(undefined);
213
+ var messageListLengthBeforeUpdate = (0, _react.useRef)(0);
214
+ var messageListLengthAfterUpdate = processedMessageList.length;
215
+ var shouldScrollToRecentOnNewOwnMessageRef = (0, _useShouldScrollToRecentOnNewOwnMessage.useShouldScrollToRecentOnNewOwnMessage)(rawMessageList, client.userID);
216
+ var lastReceivedId = (0, _react.useMemo)(function () {
217
+ var _getLastReceivedMessa;
218
+ return (_getLastReceivedMessa = (0, _getLastReceivedMessageFlashList.getLastReceivedMessageFlashList)(processedMessageList)) == null ? void 0 : _getLastReceivedMessa.id;
219
+ }, [processedMessageList]);
220
+ var maintainVisibleContentPosition = (0, _react.useMemo)(function () {
221
+ return {
222
+ animateAutoscrollToBottom: true,
223
+ autoscrollToBottomThreshold: autoScrollToRecent || threadList ? 10 : undefined,
224
+ startRenderingFromBottom: true
225
+ };
226
+ }, [autoScrollToRecent, threadList]);
227
+ (0, _react.useEffect)(function () {
228
+ if (disabled) {
229
+ setScrollToBottomButtonVisible(false);
230
+ }
231
+ }, [disabled]);
232
+ (0, _react.useEffect)(function () {
233
+ if (!targetedMessage) {
234
+ return;
235
+ }
236
+ var indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
237
+ return (message == null ? void 0 : message.id) === targetedMessage;
238
+ });
239
+ if (indexOfParentInMessageList === -1) {
240
+ loadChannelAroundMessage({
241
+ messageId: targetedMessage,
242
+ setTargetedMessage: setTargetedMessage
243
+ });
244
+ } else {
245
+ scrollToDebounceTimeoutRef.current = setTimeout(function () {
246
+ var _flashListRef$current;
247
+ clearTimeout(scrollToDebounceTimeoutRef.current);
248
+ (_flashListRef$current = flashListRef.current) == null || _flashListRef$current.scrollToIndex({
249
+ animated: true,
250
+ index: indexOfParentInMessageList,
251
+ viewPosition: 0.5
252
+ });
253
+ setTargetedMessage(undefined);
254
+ }, WAIT_FOR_SCROLL_TIMEOUT);
255
+ }
256
+ }, [loadChannelAroundMessage, processedMessageList, setTargetedMessage, targetedMessage]);
257
+ var goToMessage = (0, _hooks.useStableCallback)(function () {
258
+ var _ref = (0, _asyncToGenerator2.default)(function* (messageId) {
259
+ var indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
260
+ return (message == null ? void 0 : message.id) === messageId;
261
+ });
262
+ if (indexOfParentInMessageList !== -1) {
263
+ var _flashListRef$current2;
264
+ (_flashListRef$current2 = flashListRef.current) == null || _flashListRef$current2.scrollToIndex({
265
+ animated: true,
266
+ index: indexOfParentInMessageList,
267
+ viewPosition: 0.5
268
+ });
269
+ setTargetedMessage(messageId);
270
+ return;
271
+ }
272
+ try {
273
+ if (indexOfParentInMessageList === -1) {
274
+ var _flashListRef$current3;
275
+ clearTimeout(scrollToDebounceTimeoutRef.current);
276
+ yield loadChannelAroundMessage({
277
+ messageId: messageId
278
+ });
279
+ setTargetedMessage(messageId);
280
+ (_flashListRef$current3 = flashListRef.current) == null || _flashListRef$current3.scrollToIndex({
281
+ animated: true,
282
+ index: indexOfParentInMessageList,
283
+ viewPosition: 0.5
284
+ });
285
+ return;
286
+ }
287
+ } catch (e) {
288
+ console.warn('Error while scrolling to message', e);
289
+ }
290
+ });
291
+ return function (_x) {
292
+ return _ref.apply(this, arguments);
293
+ };
294
+ }());
295
+ (0, _react.useEffect)(function () {
296
+ var isMessageRemovedFromMessageList = messageListLengthBeforeUpdate.current - messageListLengthAfterUpdate === 1;
297
+ var scrollToBottomIfNeeded = function scrollToBottomIfNeeded() {
298
+ var _topMessageBeforeUpda;
299
+ if (!client || !channel || processedMessageList.length === 0) {
300
+ return;
301
+ }
302
+ if (isMessageRemovedFromMessageList || (_topMessageBeforeUpda = topMessageBeforeUpdate.current) != null && _topMessageBeforeUpda.created_at && topMessageAfterUpdate != null && topMessageAfterUpdate.created_at && topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at) {
303
+ channelResyncScrollSet.current = false;
304
+ setScrollToBottomButtonVisible(false);
305
+ resetPaginationTrackersRef.current();
306
+ setAutoScrollToRecent(true);
307
+ setTimeout(function () {
308
+ channelResyncScrollSet.current = true;
309
+ if (channel.countUnread() > 0) {
310
+ markRead();
311
+ }
312
+ setAutoScrollToRecent(false);
313
+ }, WAIT_FOR_SCROLL_TIMEOUT);
314
+ }
315
+ };
316
+ if (isMessageRemovedFromMessageList) {
317
+ scrollToBottomIfNeeded();
318
+ }
319
+ messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;
320
+ topMessageBeforeUpdate.current = topMessageAfterUpdate;
321
+ }, [messageListLengthAfterUpdate, topMessageAfterUpdate == null ? void 0 : topMessageAfterUpdate.id]);
322
+ (0, _react.useEffect)(function () {
323
+ if (!processedMessageList.length) {
324
+ return;
325
+ }
326
+ var notLatestSet = channel.state.messages !== channel.state.latestMessages;
327
+ if (notLatestSet) {
328
+ latestNonCurrentMessageBeforeUpdateRef.current = channel.state.latestMessages[channel.state.latestMessages.length - 1];
329
+ setAutoScrollToRecent(false);
330
+ setScrollToBottomButtonVisible(true);
331
+ return;
332
+ }
333
+ var latestNonCurrentMessageBeforeUpdate = latestNonCurrentMessageBeforeUpdateRef.current;
334
+ latestNonCurrentMessageBeforeUpdateRef.current = undefined;
335
+ var latestCurrentMessageAfterUpdate = processedMessageList[processedMessageList.length - 1];
336
+ if (!latestCurrentMessageAfterUpdate) {
337
+ setAutoScrollToRecent(true);
338
+ return;
339
+ }
340
+ var didMergeMessageSetsWithNoUpdates = (latestNonCurrentMessageBeforeUpdate == null ? void 0 : latestNonCurrentMessageBeforeUpdate.id) === latestCurrentMessageAfterUpdate.id;
341
+ if (!didMergeMessageSetsWithNoUpdates) {
342
+ var shouldScrollToRecentOnNewOwnMessage = shouldScrollToRecentOnNewOwnMessageRef.current();
343
+ if (shouldScrollToRecentOnNewOwnMessage) {
344
+ var _flashListRef$current4;
345
+ (_flashListRef$current4 = flashListRef.current) == null || _flashListRef$current4.scrollToEnd({
346
+ animated: true
347
+ });
348
+ }
349
+ }
350
+ }, [channel, processedMessageList, shouldScrollToRecentOnNewOwnMessageRef, threadList]);
351
+ (0, _react.useEffect)(function () {
352
+ var handleEvent = function handleEvent(event) {
353
+ var _event$message;
354
+ if (((_event$message = event.message) == null || (_event$message = _event$message.user) == null ? void 0 : _event$message.id) !== client.userID) {
355
+ if (!scrollToBottomButtonVisible) {
356
+ var _flashListRef$current5;
357
+ (_flashListRef$current5 = flashListRef.current) == null || _flashListRef$current5.scrollToEnd({
358
+ animated: true
359
+ });
360
+ } else {
361
+ setAutoScrollToRecent(false);
362
+ }
363
+ }
364
+ };
365
+ var listener = channel.on('message.new', handleEvent);
366
+ return function () {
367
+ listener == null || listener.unsubscribe();
368
+ };
369
+ }, [channel, client.userID, scrollToBottomButtonVisible]);
370
+ (0, _react.useEffect)(function () {
371
+ var shouldMarkRead = function shouldMarkRead() {
372
+ var _client$user, _client$user2;
373
+ return !(channelUnreadState != null && channelUnreadState.first_unread_message_id) && !scrollToBottomButtonVisible && ((_client$user = client.user) == null ? void 0 : _client$user.id) && !hasReadLastMessage(channel, (_client$user2 = client.user) == null ? void 0 : _client$user2.id);
374
+ };
375
+ var handleEvent = function () {
376
+ var _ref2 = (0, _asyncToGenerator2.default)(function* (event) {
377
+ var _event$message2, _event$message3, _event$message4, _client$user3;
378
+ var mainChannelUpdated = !((_event$message2 = event.message) != null && _event$message2.parent_id) || ((_event$message3 = event.message) == null ? void 0 : _event$message3.show_in_channel);
379
+ var isMyOwnMessage = ((_event$message4 = event.message) == null || (_event$message4 = _event$message4.user) == null ? void 0 : _event$message4.id) === ((_client$user3 = client.user) == null ? void 0 : _client$user3.id);
380
+ if ((scrollToBottomButtonVisible || channelUnreadState != null && channelUnreadState.first_unread_message_id) && !isMyOwnMessage) {
381
+ setChannelUnreadState(function (prev) {
382
+ var _prev$unread_messages, _prev$last_read;
383
+ var previousUnreadCount = (_prev$unread_messages = prev == null ? void 0 : prev.unread_messages) != null ? _prev$unread_messages : 0;
384
+ var previousLastMessage = getPreviousLastMessage(channel.state.messages, event.message);
385
+ return Object.assign({}, prev || {}, {
386
+ last_read: (_prev$last_read = prev == null ? void 0 : prev.last_read) != null ? _prev$last_read : previousUnreadCount === 0 && previousLastMessage != null && previousLastMessage.created_at ? new Date(previousLastMessage.created_at) : new Date(0),
387
+ unread_messages: previousUnreadCount + 1
388
+ });
389
+ });
390
+ } else if (mainChannelUpdated && shouldMarkRead()) {
391
+ yield markRead();
392
+ }
393
+ });
394
+ return function handleEvent(_x2) {
395
+ return _ref2.apply(this, arguments);
396
+ };
397
+ }();
398
+ var listener = channel.on('message.new', handleEvent);
399
+ return function () {
400
+ listener == null || listener.unsubscribe();
401
+ };
402
+ }, [channel, channelUnreadState == null ? void 0 : channelUnreadState.first_unread_message_id, (_client$user4 = client.user) == null ? void 0 : _client$user4.id, markRead, scrollToBottomButtonVisible, setChannelUnreadState, threadList]);
403
+ var updateStickyHeaderDateIfNeeded = (0, _hooks.useStableCallback)(function (viewableItems) {
404
+ var _lastItem$item, _stickyHeaderDateRef$;
405
+ if (!viewableItems.length) {
406
+ return;
407
+ }
408
+ var lastItem = viewableItems[0];
409
+ if (!lastItem) return;
410
+ if (!channel.state.messagePagination.hasPrev && processedMessageList[0].id === lastItem.item.id) {
411
+ setStickyHeaderDate(undefined);
412
+ return;
413
+ }
414
+ var isMessageTypeDeleted = lastItem.item.type === 'deleted';
415
+ if (lastItem != null && (_lastItem$item = lastItem.item) != null && _lastItem$item.created_at && !isMessageTypeDeleted && typeof lastItem.item.created_at !== 'string' && lastItem.item.created_at.toDateString() !== ((_stickyHeaderDateRef$ = stickyHeaderDateRef.current) == null ? void 0 : _stickyHeaderDateRef$.toDateString())) {
416
+ stickyHeaderDateRef.current = lastItem.item.created_at;
417
+ setStickyHeaderDate(lastItem.item.created_at);
418
+ }
419
+ });
420
+ var updateStickyUnreadIndicator = (0, _hooks.useStableCallback)(function (viewableItems) {
421
+ if (!viewableItems.length || !readEvents) {
422
+ setIsUnreadNotificationOpen(false);
423
+ return;
424
+ }
425
+ if (selectedPicker === 'images') {
426
+ setIsUnreadNotificationOpen(false);
427
+ return;
428
+ }
429
+ var lastItem = viewableItems[0];
430
+ if (!lastItem) return;
431
+ var lastItemMessage = lastItem.item;
432
+ var lastItemCreatedAt = lastItemMessage.created_at;
433
+ var unreadIndicatorDate = channelUnreadState == null ? void 0 : channelUnreadState.last_read.getTime();
434
+ var lastItemDate = lastItemCreatedAt.getTime();
435
+ if (!channel.state.messagePagination.hasPrev && processedMessageList[0].id === lastItemMessage.id) {
436
+ setIsUnreadNotificationOpen(false);
437
+ return;
438
+ }
439
+ if (viewableItems.length === 1 && channel.countUnread() === 0 && lastItemMessage.user.id === client.userID) {
440
+ setIsUnreadNotificationOpen(false);
441
+ return;
442
+ }
443
+ if (unreadIndicatorDate && lastItemDate > unreadIndicatorDate) {
444
+ setIsUnreadNotificationOpen(true);
445
+ } else {
446
+ setIsUnreadNotificationOpen(false);
447
+ }
448
+ });
449
+ var unstableOnViewableItemsChanged = function unstableOnViewableItemsChanged(_ref3) {
450
+ var viewableItems = _ref3.viewableItems;
451
+ if (!viewableItems) {
452
+ return;
453
+ }
454
+ if (!hideStickyDateHeader) {
455
+ updateStickyHeaderDateIfNeeded(viewableItems);
456
+ }
457
+ updateStickyUnreadIndicator(viewableItems);
458
+ };
459
+ var onViewableItemsChanged = (0, _react.useRef)(unstableOnViewableItemsChanged);
460
+ onViewableItemsChanged.current = unstableOnViewableItemsChanged;
461
+ var stableOnViewableItemsChanged = (0, _react.useCallback)(function (_ref4) {
462
+ var viewableItems = _ref4.viewableItems;
463
+ onViewableItemsChanged.current({
464
+ viewableItems: viewableItems
465
+ });
466
+ }, []);
467
+ var renderItem = (0, _react.useCallback)(function (_ref5) {
468
+ var _message$user, _messageGroupStylesRe;
469
+ var index = _ref5.index,
470
+ message = _ref5.item;
471
+ if (!channel || channel.disconnected || !channel.initialized && !channel.offlineMode) {
472
+ return null;
473
+ }
474
+ var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
475
+ var lastReadTimestamp = channelUnreadState == null ? void 0 : channelUnreadState.last_read.getTime();
476
+ var isNewestMessage = index === 0;
477
+ var isLastReadMessage = (channelUnreadState == null ? void 0 : channelUnreadState.last_read_message_id) === message.id || !(channelUnreadState != null && channelUnreadState.unread_messages) && createdAtTimestamp === lastReadTimestamp;
478
+ var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (!!(channelUnreadState != null && channelUnreadState.first_unread_message_id) || !!(channelUnreadState != null && channelUnreadState.unread_messages));
479
+ var showUnreadUnderlay = !!shouldShowUnreadUnderlay && showUnreadSeparator;
480
+ var wrapMessageInTheme = client.userID === ((_message$user = message.user) == null ? void 0 : _message$user.id) && !!myMessageTheme;
481
+ var renderDateSeperator = dateSeparatorsRef.current[message.id] && (0, _jsxRuntime.jsx)(InlineDateSeparator, {
482
+ date: dateSeparatorsRef.current[message.id]
483
+ });
484
+ var renderMessage = (0, _jsxRuntime.jsx)(Message, {
485
+ goToMessage: goToMessage,
486
+ groupStyles: (_messageGroupStylesRe = messageGroupStylesRef.current[message.id]) != null ? _messageGroupStylesRe : [],
487
+ isTargetedMessage: highlightedMessageId === message.id,
488
+ lastReceivedId: lastReceivedId === message.id || message.quoted_message_id ? lastReceivedId : undefined,
489
+ message: message,
490
+ onThreadSelect: onThreadSelect,
491
+ showUnreadUnderlay: showUnreadUnderlay,
492
+ threadList: threadList
493
+ });
494
+ return (0, _jsxRuntime.jsxs)(_reactNative.View, {
495
+ testID: `message-list-item-${index}`,
496
+ children: [message.type === 'system' ? (0, _jsxRuntime.jsx)(MessageSystem, {
497
+ message: message
498
+ }) : wrapMessageInTheme ? (0, _jsxRuntime.jsx)(_ThemeContext.ThemeProvider, {
499
+ mergedStyle: modifiedTheme,
500
+ children: (0, _jsxRuntime.jsxs)(_reactNative.View, {
501
+ testID: `message-list-item-${index}`,
502
+ children: [renderDateSeperator, renderMessage]
503
+ })
504
+ }) : (0, _jsxRuntime.jsxs)(_reactNative.View, {
505
+ testID: `message-list-item-${index}`,
506
+ children: [renderDateSeperator, renderMessage]
507
+ }), showUnreadUnderlay && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})]
508
+ });
509
+ }, [InlineDateSeparator, InlineUnreadIndicator, Message, MessageSystem, channel, channelUnreadState == null ? void 0 : channelUnreadState.first_unread_message_id, channelUnreadState == null ? void 0 : channelUnreadState.last_read, channelUnreadState == null ? void 0 : channelUnreadState.last_read_message_id, channelUnreadState == null ? void 0 : channelUnreadState.unread_messages, client.userID, dateSeparatorsRef, goToMessage, highlightedMessageId, lastReceivedId, messageGroupStylesRef, modifiedTheme, myMessageTheme, onThreadSelect, shouldShowUnreadUnderlay, threadList]);
510
+ var messagesWithImages = legacyImageViewerSwipeBehaviour && processedMessageList.filter(function (message) {
511
+ var isMessageTypeDeleted = message.type === 'deleted';
512
+ if (!isMessageTypeDeleted && message.attachments) {
513
+ return message.attachments.some(function (attachment) {
514
+ return attachment.type === _types.FileTypes.Image && !attachment.title_link && !attachment.og_scrape_url && (attachment.image_url || attachment.thumb_url);
515
+ });
516
+ }
517
+ return false;
518
+ });
519
+ var imageString = legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.map(function (message) {
520
+ var _message$attachments2;
521
+ return (_message$attachments2 = message.attachments) == null ? void 0 : _message$attachments2.map(function (attachment) {
522
+ return attachment.image_url || attachment.thumb_url || '';
523
+ }).join();
524
+ }).join();
525
+ var numberOfMessagesWithImages = legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;
526
+ var threadExists = !!thread;
527
+ (0, _react.useEffect)(function () {
528
+ if (legacyImageViewerSwipeBehaviour && isListActive && (threadList && thread || !threadList && !thread)) {
529
+ setMessages(messagesWithImages);
530
+ }
531
+ }, [imageString, isListActive, legacyImageViewerSwipeBehaviour, numberOfMessagesWithImages, threadExists, threadList]);
532
+ var maybeCallOnStartReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2.default)(function* () {
533
+ if (processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length]) {
534
+ return;
535
+ }
536
+ if (processedMessageList != null && processedMessageList.length) {
537
+ onStartReachedTracker.current[processedMessageList.length] = true;
538
+ }
539
+ var callback = function callback() {
540
+ onStartReachedInPromise.current = null;
541
+ return Promise.resolve();
542
+ };
543
+ var onError = function onError() {
544
+ setTimeout(function () {
545
+ onStartReachedTracker.current = {};
546
+ }, 2000);
547
+ };
548
+ if (onEndReachedInPromise.current) {
549
+ yield onEndReachedInPromise.current;
550
+ }
551
+ onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback).catch(onError);
552
+ }));
553
+ var maybeCallOnEndReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2.default)(function* () {
554
+ if (processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length]) {
555
+ return;
556
+ }
557
+ if (processedMessageList != null && processedMessageList.length) {
558
+ onEndReachedTracker.current[processedMessageList.length] = true;
559
+ }
560
+ var callback = function callback() {
561
+ onEndReachedInPromise.current = null;
562
+ return Promise.resolve();
563
+ };
564
+ var onError = function onError() {
565
+ setTimeout(function () {
566
+ onEndReachedTracker.current = {};
567
+ }, 2000);
568
+ };
569
+ if (onStartReachedInPromise.current) {
570
+ yield onStartReachedInPromise.current;
571
+ }
572
+ onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback).catch(onError);
573
+ }));
574
+ var onUserScrollEvent = (0, _hooks.useStableCallback)(function (event) {
575
+ var nativeEvent = event.nativeEvent;
576
+ var offset = nativeEvent.contentOffset.y;
577
+ var visibleLength = nativeEvent.layoutMeasurement.height;
578
+ var contentLength = nativeEvent.contentSize.height;
579
+ if (!channel || !channelResyncScrollSet.current) {
580
+ return;
581
+ }
582
+ var isScrollAtEnd = offset < 100;
583
+ var isScrollAtStart = contentLength - visibleLength - offset < 100;
584
+ if (isScrollAtEnd) {
585
+ maybeCallOnEndReached();
586
+ }
587
+ if (isScrollAtStart) {
588
+ maybeCallOnStartReached();
589
+ }
590
+ });
591
+ var resetPaginationTrackersRef = (0, _react.useRef)(function () {
592
+ onStartReachedTracker.current = {};
593
+ onEndReachedTracker.current = {};
594
+ });
595
+ var currentScrollOffsetRef = (0, _react.useRef)(0);
596
+ var handleScroll = (0, _hooks.useStableCallback)(function (event) {
597
+ var messageListHasMessages = processedMessageList.length > 0;
598
+ var nativeEvent = event.nativeEvent;
599
+ var offset = nativeEvent.contentOffset.y;
600
+ currentScrollOffsetRef.current = offset;
601
+ var visibleLength = nativeEvent.layoutMeasurement.height;
602
+ var contentLength = nativeEvent.contentSize.height;
603
+ var isScrollAtStart = contentLength - visibleLength - offset < 150;
604
+ var notLatestSet = channel.state.messages !== channel.state.latestMessages;
605
+ var showScrollToBottomButton = messageListHasMessages && (!threadList && notLatestSet || !isScrollAtStart);
606
+ setScrollToBottomButtonVisible(showScrollToBottomButton);
607
+ if (onListScroll) {
608
+ onListScroll(event);
609
+ }
610
+ });
611
+ var goToNewMessages = (0, _hooks.useStableCallback)((0, _asyncToGenerator2.default)(function* () {
612
+ var isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
613
+ if (isNotLatestSet) {
614
+ resetPaginationTrackersRef.current();
615
+ yield reloadChannel();
616
+ } else if (flashListRef.current) {
617
+ flashListRef.current.scrollToEnd({
618
+ animated: true
619
+ });
620
+ }
621
+ setScrollToBottomButtonVisible(false);
622
+ yield markRead({
623
+ updateChannelUnreadState: false
624
+ });
625
+ }));
626
+ var dismissImagePicker = (0, _hooks.useStableCallback)(function () {
627
+ if (selectedPicker) {
628
+ setSelectedPicker(undefined);
629
+ closePicker();
630
+ }
631
+ });
632
+ var onScrollBeginDrag = (0, _hooks.useStableCallback)(function (event) {
633
+ !hasMoved && selectedPicker && setHasMoved(true);
634
+ onUserScrollEvent(event);
635
+ });
636
+ var onScrollEndDrag = (0, _hooks.useStableCallback)(function (event) {
637
+ hasMoved && selectedPicker && setHasMoved(false);
638
+ onUserScrollEvent(event);
639
+ });
640
+ var refCallback = (0, _hooks.useStableCallback)(function (ref) {
641
+ flashListRef.current = ref;
642
+ if (setFlatListRef) {
643
+ setFlatListRef(ref);
644
+ }
645
+ });
646
+ var onUnreadNotificationClose = (0, _hooks.useStableCallback)((0, _asyncToGenerator2.default)(function* () {
647
+ yield markRead();
648
+ setIsUnreadNotificationOpen(false);
649
+ }));
650
+ var additionalFlashListPropsExcludingStyle;
651
+ if (additionalFlashListProps) {
652
+ var contentContainerStyle = additionalFlashListProps.contentContainerStyle,
653
+ style = additionalFlashListProps.style,
654
+ rest = (0, _objectWithoutProperties2.default)(additionalFlashListProps, _excluded);
655
+ additionalFlashListPropsExcludingStyle = rest;
656
+ }
657
+ var flatListStyle = (0, _react.useMemo)(function () {
658
+ return Object.assign({}, styles.listContainer, listContainer, additionalFlashListProps == null ? void 0 : additionalFlashListProps.style);
659
+ }, [additionalFlashListProps == null ? void 0 : additionalFlashListProps.style, listContainer]);
660
+ var flatListContentContainerStyle = (0, _react.useMemo)(function () {
661
+ return Object.assign({}, styles.contentContainer, contentContainer);
662
+ }, [contentContainer]);
663
+ var getItemType = (0, _hooks.useStableCallback)(function (item) {
664
+ var _item$user;
665
+ var type = getItemTypeInternal(item);
666
+ return client.userID === ((_item$user = item.user) == null ? void 0 : _item$user.id) ? `own-${type}` : type;
667
+ });
668
+ var currentListHeightRef = (0, _react.useRef)(undefined);
669
+ var onLayout = (0, _hooks.useStableCallback)(function (e) {
670
+ var _flashListRef$current6;
671
+ var height = e.nativeEvent.layout.height;
672
+ if (!currentListHeightRef.current) {
673
+ currentListHeightRef.current = height;
674
+ return;
675
+ }
676
+ var changedBy = currentListHeightRef.current - height;
677
+ (_flashListRef$current6 = flashListRef.current) == null || _flashListRef$current6.scrollToOffset({
678
+ offset: currentScrollOffsetRef.current + changedBy
679
+ });
680
+ currentListHeightRef.current = height;
681
+ });
682
+ if (loading) {
683
+ return (0, _jsxRuntime.jsx)(_reactNative.View, {
684
+ style: [styles.container, {
685
+ backgroundColor: white_snow
686
+ }, container],
687
+ children: (0, _jsxRuntime.jsx)(LoadingIndicator, {
688
+ listType: "message"
689
+ })
690
+ });
691
+ }
692
+ if (!FlashList) {
693
+ throw new Error('The package @shopify/flash-list is not installed. Installing this package will enable the use of the FlashList component.');
694
+ }
695
+ return (0, _jsxRuntime.jsxs)(_reactNative.View, {
696
+ onLayout: onLayout,
697
+ style: [styles.container, {
698
+ backgroundColor: white_snow
699
+ }, container],
700
+ testID: "message-flat-list-wrapper",
701
+ children: [processedMessageList.length === 0 && !thread ? (0, _jsxRuntime.jsx)(_reactNative.View, {
702
+ style: [styles.flex, {
703
+ backgroundColor: white_snow
704
+ }],
705
+ testID: "empty-state",
706
+ children: EmptyStateIndicator ? (0, _jsxRuntime.jsx)(EmptyStateIndicator, {
707
+ listType: "message"
708
+ }) : null
709
+ }) : (0, _jsxRuntime.jsx)(FlashList, Object.assign({
710
+ contentContainerStyle: flatListContentContainerStyle,
711
+ data: processedMessageList,
712
+ drawDistance: 800,
713
+ getItemType: getItemType,
714
+ keyboardShouldPersistTaps: "handled",
715
+ keyExtractor: keyExtractor,
716
+ ListFooterComponent: FooterComponent,
717
+ ListHeaderComponent: HeaderComponent,
718
+ maintainVisibleContentPosition: maintainVisibleContentPosition,
719
+ onMomentumScrollEnd: onUserScrollEvent,
720
+ onScroll: handleScroll,
721
+ onScrollBeginDrag: onScrollBeginDrag,
722
+ onScrollEndDrag: onScrollEndDrag,
723
+ onTouchEnd: dismissImagePicker,
724
+ onViewableItemsChanged: stableOnViewableItemsChanged,
725
+ ref: refCallback,
726
+ renderItem: renderItem,
727
+ showsVerticalScrollIndicator: false,
728
+ style: flatListStyle,
729
+ testID: "message-flash-list",
730
+ viewabilityConfig: flatListViewabilityConfig
731
+ }, additionalFlashListPropsExcludingStyle)), (0, _jsxRuntime.jsx)(_reactNative.View, {
732
+ style: styles.stickyHeader,
733
+ children: messageListLengthAfterUpdate && StickyHeader ? (0, _jsxRuntime.jsx)(StickyHeader, {
734
+ date: stickyHeaderDate,
735
+ DateHeader: DateHeader
736
+ }) : null
737
+ }), !disableTypingIndicator && TypingIndicator && (0, _jsxRuntime.jsx)(TypingIndicatorContainer, {
738
+ children: (0, _jsxRuntime.jsx)(TypingIndicator, {})
739
+ }), (0, _jsxRuntime.jsx)(ScrollToBottomButton, {
740
+ onPress: goToNewMessages,
741
+ showNotification: scrollToBottomButtonVisible,
742
+ unreadCount: threadList ? 0 : channel == null ? void 0 : channel.countUnread()
743
+ }), (0, _jsxRuntime.jsx)(NetworkDownIndicator, {}), isUnreadNotificationOpen && !threadList ? (0, _jsxRuntime.jsx)(UnreadMessagesNotification, {
744
+ onCloseHandler: onUnreadNotificationClose
745
+ }) : null]
746
+ });
747
+ };
748
+ var MessageFlashList = exports.MessageFlashList = function MessageFlashList(props) {
749
+ var _useAttachmentPickerC = (0, _AttachmentPickerContext.useAttachmentPickerContext)(),
750
+ closePicker = _useAttachmentPickerC.closePicker,
751
+ selectedPicker = _useAttachmentPickerC.selectedPicker,
752
+ setSelectedPicker = _useAttachmentPickerC.setSelectedPicker;
753
+ var _useChannelContext = (0, _ChannelContext.useChannelContext)(),
754
+ channel = _useChannelContext.channel,
755
+ channelUnreadState = _useChannelContext.channelUnreadState,
756
+ disabled = _useChannelContext.disabled,
757
+ EmptyStateIndicator = _useChannelContext.EmptyStateIndicator,
758
+ enableMessageGroupingByUser = _useChannelContext.enableMessageGroupingByUser,
759
+ error = _useChannelContext.error,
760
+ hideStickyDateHeader = _useChannelContext.hideStickyDateHeader,
761
+ highlightedMessageId = _useChannelContext.highlightedMessageId,
762
+ isChannelActive = _useChannelContext.isChannelActive,
763
+ loadChannelAroundMessage = _useChannelContext.loadChannelAroundMessage,
764
+ loading = _useChannelContext.loading,
765
+ LoadingIndicator = _useChannelContext.LoadingIndicator,
766
+ markRead = _useChannelContext.markRead,
767
+ NetworkDownIndicator = _useChannelContext.NetworkDownIndicator,
768
+ reloadChannel = _useChannelContext.reloadChannel,
769
+ scrollToFirstUnreadThreshold = _useChannelContext.scrollToFirstUnreadThreshold,
770
+ setChannelUnreadState = _useChannelContext.setChannelUnreadState,
771
+ setTargetedMessage = _useChannelContext.setTargetedMessage,
772
+ StickyHeader = _useChannelContext.StickyHeader,
773
+ targetedMessage = _useChannelContext.targetedMessage,
774
+ threadList = _useChannelContext.threadList;
775
+ var _useChatContext = (0, _ChatContext.useChatContext)(),
776
+ client = _useChatContext.client;
777
+ var _useImageGalleryConte = (0, _ImageGalleryContext.useImageGalleryContext)(),
778
+ setMessages = _useImageGalleryConte.setMessages;
779
+ var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
780
+ DateHeader = _useMessagesContext.DateHeader,
781
+ disableTypingIndicator = _useMessagesContext.disableTypingIndicator,
782
+ FlatList = _useMessagesContext.FlatList,
783
+ InlineDateSeparator = _useMessagesContext.InlineDateSeparator,
784
+ InlineUnreadIndicator = _useMessagesContext.InlineUnreadIndicator,
785
+ legacyImageViewerSwipeBehaviour = _useMessagesContext.legacyImageViewerSwipeBehaviour,
786
+ Message = _useMessagesContext.Message,
787
+ MessageSystem = _useMessagesContext.MessageSystem,
788
+ myMessageTheme = _useMessagesContext.myMessageTheme,
789
+ ScrollToBottomButton = _useMessagesContext.ScrollToBottomButton,
790
+ shouldShowUnreadUnderlay = _useMessagesContext.shouldShowUnreadUnderlay,
791
+ TypingIndicator = _useMessagesContext.TypingIndicator,
792
+ TypingIndicatorContainer = _useMessagesContext.TypingIndicatorContainer,
793
+ UnreadMessagesNotification = _useMessagesContext.UnreadMessagesNotification;
794
+ var _usePaginatedMessageL = (0, _PaginatedMessageListContext.usePaginatedMessageListContext)(),
795
+ loadMore = _usePaginatedMessageL.loadMore,
796
+ loadMoreRecent = _usePaginatedMessageL.loadMoreRecent;
797
+ var _useThreadContext = (0, _ThreadContext.useThreadContext)(),
798
+ loadMoreRecentThread = _useThreadContext.loadMoreRecentThread,
799
+ loadMoreThread = _useThreadContext.loadMoreThread,
800
+ thread = _useThreadContext.thread,
801
+ threadInstance = _useThreadContext.threadInstance;
802
+ var _useOwnCapabilitiesCo = (0, _OwnCapabilitiesContext.useOwnCapabilitiesContext)(),
803
+ readEvents = _useOwnCapabilitiesCo.readEvents;
804
+ return (0, _jsxRuntime.jsx)(MessageFlashListWithContext, Object.assign({
805
+ channel: channel,
806
+ channelUnreadState: channelUnreadState,
807
+ client: client,
808
+ closePicker: closePicker,
809
+ DateHeader: DateHeader,
810
+ disabled: disabled,
811
+ disableTypingIndicator: disableTypingIndicator,
812
+ EmptyStateIndicator: EmptyStateIndicator,
813
+ enableMessageGroupingByUser: enableMessageGroupingByUser,
814
+ error: error,
815
+ FlatList: FlatList,
816
+ hideStickyDateHeader: hideStickyDateHeader,
817
+ highlightedMessageId: highlightedMessageId,
818
+ InlineDateSeparator: InlineDateSeparator,
819
+ InlineUnreadIndicator: InlineUnreadIndicator,
820
+ isListActive: isChannelActive,
821
+ legacyImageViewerSwipeBehaviour: legacyImageViewerSwipeBehaviour,
822
+ loadChannelAroundMessage: loadChannelAroundMessage,
823
+ loading: loading,
824
+ LoadingIndicator: LoadingIndicator,
825
+ loadMore: loadMore,
826
+ loadMoreRecent: loadMoreRecent,
827
+ loadMoreRecentThread: loadMoreRecentThread,
828
+ loadMoreThread: loadMoreThread,
829
+ markRead: markRead,
830
+ Message: Message,
831
+ MessageSystem: MessageSystem,
832
+ myMessageTheme: myMessageTheme,
833
+ NetworkDownIndicator: NetworkDownIndicator,
834
+ readEvents: readEvents,
835
+ reloadChannel: reloadChannel,
836
+ ScrollToBottomButton: ScrollToBottomButton,
837
+ scrollToFirstUnreadThreshold: scrollToFirstUnreadThreshold,
838
+ selectedPicker: selectedPicker,
839
+ setChannelUnreadState: setChannelUnreadState,
840
+ setMessages: setMessages,
841
+ setSelectedPicker: setSelectedPicker,
842
+ setTargetedMessage: setTargetedMessage,
843
+ shouldShowUnreadUnderlay: shouldShowUnreadUnderlay,
844
+ StickyHeader: StickyHeader,
845
+ targetedMessage: targetedMessage,
846
+ thread: thread,
847
+ threadInstance: threadInstance,
848
+ threadList: threadList,
849
+ TypingIndicator: TypingIndicator,
850
+ TypingIndicatorContainer: TypingIndicatorContainer,
851
+ UnreadMessagesNotification: UnreadMessagesNotification
852
+ }, props, {
853
+ noGroupByUser: !enableMessageGroupingByUser || props.noGroupByUser
854
+ }));
855
+ };
856
+ var styles = _reactNative.StyleSheet.create({
857
+ container: {
858
+ alignItems: 'center',
859
+ flex: 1,
860
+ width: '100%'
861
+ },
862
+ contentContainer: {
863
+ paddingBottom: 4
864
+ },
865
+ flex: {
866
+ flex: 1
867
+ },
868
+ listContainer: {
869
+ flex: 1,
870
+ width: '100%'
871
+ },
872
+ stickyHeader: {
873
+ position: 'absolute',
874
+ top: 0
875
+ }
876
+ });
877
+ //# sourceMappingURL=MessageFlashList.js.map