stream-chat-react-native-core 8.5.2-beta.2 → 8.6.0-beta.1

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