stream-chat-react-native-core 6.7.3-beta.2 → 6.7.3-beta.3

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/Channel/Channel.js +273 -281
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +133 -147
  4. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  5. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +7 -12
  6. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/MessageList.js +167 -179
  8. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  9. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +60 -37
  10. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  11. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +450 -459
  12. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  13. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  14. package/lib/commonjs/hooks/index.js +11 -0
  15. package/lib/commonjs/hooks/index.js.map +1 -1
  16. package/lib/commonjs/hooks/useStableCallback.js +13 -0
  17. package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
  18. package/lib/commonjs/version.json +1 -1
  19. package/lib/module/components/Channel/Channel.js +273 -281
  20. package/lib/module/components/Channel/Channel.js.map +1 -1
  21. package/lib/module/components/Channel/hooks/useMessageListPagination.js +133 -147
  22. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  23. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +7 -12
  24. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  25. package/lib/module/components/MessageList/MessageList.js +167 -179
  26. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  27. package/lib/module/components/MessageList/hooks/useMessageList.js +60 -37
  28. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  29. package/lib/module/contexts/messageInputContext/MessageInputContext.js +450 -459
  30. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  31. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  32. package/lib/module/hooks/index.js +11 -0
  33. package/lib/module/hooks/index.js.map +1 -1
  34. package/lib/module/hooks/useStableCallback.js +13 -0
  35. package/lib/module/hooks/useStableCallback.js.map +1 -0
  36. package/lib/module/version.json +1 -1
  37. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  38. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +3 -3
  39. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
  40. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +3 -0
  41. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
  42. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  43. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +4 -0
  44. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  45. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  46. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +1 -1
  47. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  48. package/lib/typescript/hooks/index.d.ts +1 -0
  49. package/lib/typescript/hooks/index.d.ts.map +1 -1
  50. package/lib/typescript/hooks/useStableCallback.d.ts +26 -0
  51. package/lib/typescript/hooks/useStableCallback.d.ts.map +1 -0
  52. package/package.json +1 -1
  53. package/src/components/Channel/Channel.tsx +424 -408
  54. package/src/components/Channel/hooks/useMessageListPagination.tsx +152 -147
  55. package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +6 -4
  56. package/src/components/MessageList/MessageList.tsx +147 -112
  57. package/src/components/MessageList/hooks/useMessageList.ts +69 -38
  58. package/src/contexts/messageInputContext/MessageInputContext.tsx +293 -267
  59. package/src/contexts/messageInputContext/__tests__/pickFile.test.tsx +2 -1
  60. package/src/contexts/messagesContext/MessagesContext.tsx +1 -0
  61. package/src/hooks/index.ts +1 -0
  62. package/src/hooks/useStableCallback.ts +37 -0
  63. package/src/version.json +1 -1
@@ -26,6 +26,7 @@ var _OverlayContext = require("../../contexts/overlayContext/OverlayContext");
26
26
  var _PaginatedMessageListContext = require("../../contexts/paginatedMessageListContext/PaginatedMessageListContext");
27
27
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
28
28
  var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
29
+ var _hooks = require("../../hooks");
29
30
  var _types = require("../../types/types");
30
31
  var _jsxRuntime = require("react/jsx-runtime");
31
32
  var _excluded = ["contentContainerStyle", "ItemSeparatorComponent", "style"];
@@ -95,7 +96,7 @@ var getPreviousLastMessage = function getPreviousLastMessage(messages, newMessag
95
96
  return previousLastMessage;
96
97
  };
97
98
  var MessageListWithContext = function MessageListWithContext(props) {
98
- var _getLastReceivedMessa, _client$user3;
99
+ var _client$user3;
99
100
  var LoadingMoreRecentIndicator = props.threadList ? _InlineLoadingMoreRecentThreadIndicator.InlineLoadingMoreRecentThreadIndicator : _InlineLoadingMoreRecentIndicator.InlineLoadingMoreRecentIndicator;
100
101
  var additionalFlatListProps = props.additionalFlatListProps,
101
102
  channel = props.channel,
@@ -192,6 +193,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
192
193
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
193
194
  autoscrollToRecent = _useState4[0],
194
195
  setAutoscrollToRecent = _useState4[1];
196
+ var maintainVisibleContentPosition = (0, _react.useMemo)(function () {
197
+ return {
198
+ autoscrollToTopThreshold: autoscrollToRecent ? 10 : undefined,
199
+ minIndexForVisible: 1
200
+ };
201
+ }, [autoscrollToRecent]);
195
202
  var onStartReachedTracker = (0, _react.useRef)({});
196
203
  var onEndReachedTracker = (0, _react.useRef)({});
197
204
  var onStartReachedInPromise = (0, _react.useRef)(null);
@@ -205,22 +212,22 @@ var MessageListWithContext = function MessageListWithContext(props) {
205
212
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
206
213
  hasMoved = _useState6[0],
207
214
  setHasMoved = _useState6[1];
208
- var _useState7 = (0, _react.useState)((_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList)) == null ? void 0 : _getLastReceivedMessa.id),
215
+ var lastReceivedId = (0, _react.useMemo)(function () {
216
+ var _getLastReceivedMessa;
217
+ return (_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList)) == null ? void 0 : _getLastReceivedMessa.id;
218
+ }, [processedMessageList]);
219
+ var _useState7 = (0, _react.useState)(false),
209
220
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
210
- lastReceivedId = _useState8[0],
211
- setLastReceivedId = _useState8[1];
212
- var _useState9 = (0, _react.useState)(false),
221
+ scrollToBottomButtonVisible = _useState8[0],
222
+ setScrollToBottomButtonVisible = _useState8[1];
223
+ var _useState9 = (0, _react.useState)(),
213
224
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
214
- scrollToBottomButtonVisible = _useState10[0],
215
- setScrollToBottomButtonVisible = _useState10[1];
216
- var _useState11 = (0, _react.useState)(),
217
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
218
- stickyHeaderDate = _useState12[0],
219
- setStickyHeaderDate = _useState12[1];
225
+ stickyHeaderDate = _useState10[0],
226
+ setStickyHeaderDate = _useState10[1];
220
227
  var stickyHeaderDateRef = (0, _react.useRef)(undefined);
221
228
  var channelRef = (0, _react.useRef)(channel);
222
229
  channelRef.current = channel;
223
- var updateStickyHeaderDateIfNeeded = function updateStickyHeaderDateIfNeeded(viewableItems) {
230
+ var updateStickyHeaderDateIfNeeded = (0, _hooks.useStableCallback)(function (viewableItems) {
224
231
  if (!viewableItems.length) {
225
232
  return;
226
233
  }
@@ -237,8 +244,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
237
244
  setStickyHeaderDate(lastItem.item.created_at);
238
245
  }
239
246
  }
240
- };
241
- var updateStickyUnreadIndicator = function updateStickyUnreadIndicator(viewableItems) {
247
+ });
248
+ var updateStickyUnreadIndicator = (0, _hooks.useStableCallback)(function (viewableItems) {
242
249
  if (!viewableItems.length) {
243
250
  setIsUnreadNotificationOpen(false);
244
251
  return;
@@ -267,7 +274,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
267
274
  setIsUnreadNotificationOpen(false);
268
275
  }
269
276
  }
270
- };
277
+ });
271
278
  var unstableOnViewableItemsChanged = function unstableOnViewableItemsChanged(_ref) {
272
279
  var viewableItems = _ref.viewableItems;
273
280
  if (!viewableItems) {
@@ -346,8 +353,6 @@ var MessageListWithContext = function MessageListWithContext(props) {
346
353
  };
347
354
  }, [channel, channelUnreadState == null ? void 0 : channelUnreadState.first_unread_message_id, (_client$user3 = client.user) == null ? void 0 : _client$user3.id, markRead, scrollToBottomButtonVisible, setChannelUnreadState, threadList]);
348
355
  (0, _react.useEffect)(function () {
349
- var lastReceivedMessage = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList);
350
- setLastReceivedId(lastReceivedMessage == null ? void 0 : lastReceivedMessage.id);
351
356
  var scrollToBottomIfNeeded = function scrollToBottomIfNeeded() {
352
357
  var _topMessageBeforeUpda;
353
358
  if (!client || !channel || rawMessageList.length === 0) {
@@ -415,7 +420,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
415
420
  }
416
421
  }
417
422
  }, [channel, rawMessageList, threadList]);
418
- var goToMessage = function () {
423
+ var goToMessage = (0, _hooks.useStableCallback)(function () {
419
424
  var _ref4 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(messageId) {
420
425
  var indexOfParentInMessageList;
421
426
  return _regenerator["default"].wrap(function _callee2$(_context2) {
@@ -465,10 +470,10 @@ var MessageListWithContext = function MessageListWithContext(props) {
465
470
  }
466
471
  }, _callee2, null, [[1, 18]]);
467
472
  }));
468
- return function goToMessage(_x2) {
473
+ return function (_x2) {
469
474
  return _ref4.apply(this, arguments);
470
475
  };
471
- }();
476
+ }());
472
477
  (0, _react.useEffect)(function () {
473
478
  if (!targetedMessage) {
474
479
  return;
@@ -517,7 +522,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
517
522
  })), WAIT_FOR_SCROLL_TIMEOUT);
518
523
  }, [targetedMessage]);
519
524
  var shouldApplyAndroidWorkaround = inverted && _reactNative.Platform.OS === 'android';
520
- var renderItem = function renderItem(_ref6) {
525
+ var renderItem = (0, _react.useCallback)(function (_ref6) {
521
526
  var _message$user;
522
527
  var index = _ref6.index,
523
528
  message = _ref6.item;
@@ -564,92 +569,82 @@ var MessageListWithContext = function MessageListWithContext(props) {
564
569
  children: [renderDateSeperator, renderMessage]
565
570
  }), showUnreadUnderlay && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})]
566
571
  });
567
- };
568
- var maybeCallOnStartReached = function () {
569
- var _ref7 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
570
- var callback, onError;
571
- return _regenerator["default"].wrap(function _callee4$(_context4) {
572
- while (1) switch (_context4.prev = _context4.next) {
573
- case 0:
574
- if (!(processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length])) {
575
- _context4.next = 2;
576
- break;
577
- }
578
- return _context4.abrupt("return");
579
- case 2:
580
- if (processedMessageList != null && processedMessageList.length) {
581
- onStartReachedTracker.current[processedMessageList.length] = true;
582
- }
583
- callback = function callback() {
584
- onStartReachedInPromise.current = null;
585
- return Promise.resolve();
586
- };
587
- onError = function onError() {
588
- setTimeout(function () {
589
- onStartReachedTracker.current = {};
590
- }, 2000);
591
- };
592
- if (!onEndReachedInPromise.current) {
593
- _context4.next = 8;
594
- break;
595
- }
572
+ }, [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, goToMessage, highlightedMessageId, lastReceivedId, messageContainer, modifiedTheme, myMessageTheme, onThreadSelect, screenPadding, shouldApplyAndroidWorkaround, shouldShowUnreadUnderlay, threadList]);
573
+ var maybeCallOnStartReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
574
+ var callback, onError;
575
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
576
+ while (1) switch (_context4.prev = _context4.next) {
577
+ case 0:
578
+ if (!(processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length])) {
579
+ _context4.next = 2;
580
+ break;
581
+ }
582
+ return _context4.abrupt("return");
583
+ case 2:
584
+ if (processedMessageList != null && processedMessageList.length) {
585
+ onStartReachedTracker.current[processedMessageList.length] = true;
586
+ }
587
+ callback = function callback() {
588
+ onStartReachedInPromise.current = null;
589
+ return Promise.resolve();
590
+ };
591
+ onError = function onError() {
592
+ setTimeout(function () {
593
+ onStartReachedTracker.current = {};
594
+ }, 2000);
595
+ };
596
+ if (!onEndReachedInPromise.current) {
596
597
  _context4.next = 8;
597
- return onEndReachedInPromise.current;
598
- case 8:
599
- onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback)["catch"](onError);
600
- case 9:
601
- case "end":
602
- return _context4.stop();
603
- }
604
- }, _callee4);
605
- }));
606
- return function maybeCallOnStartReached() {
607
- return _ref7.apply(this, arguments);
608
- };
609
- }();
610
- var maybeCallOnEndReached = function () {
611
- var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
612
- var callback, onError;
613
- return _regenerator["default"].wrap(function _callee5$(_context5) {
614
- while (1) switch (_context5.prev = _context5.next) {
615
- case 0:
616
- if (!(processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length])) {
617
- _context5.next = 2;
618
- break;
619
- }
620
- return _context5.abrupt("return");
621
- case 2:
622
- if (processedMessageList != null && processedMessageList.length) {
623
- onEndReachedTracker.current[processedMessageList.length] = true;
624
- }
625
- callback = function callback() {
626
- onEndReachedInPromise.current = null;
627
- return Promise.resolve();
628
- };
629
- onError = function onError() {
630
- setTimeout(function () {
631
- onEndReachedTracker.current = {};
632
- }, 2000);
633
- };
634
- if (!onStartReachedInPromise.current) {
635
- _context5.next = 8;
636
- break;
637
- }
598
+ break;
599
+ }
600
+ _context4.next = 8;
601
+ return onEndReachedInPromise.current;
602
+ case 8:
603
+ onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback)["catch"](onError);
604
+ case 9:
605
+ case "end":
606
+ return _context4.stop();
607
+ }
608
+ }, _callee4);
609
+ })));
610
+ var maybeCallOnEndReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
611
+ var callback, onError;
612
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
613
+ while (1) switch (_context5.prev = _context5.next) {
614
+ case 0:
615
+ if (!(processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length])) {
616
+ _context5.next = 2;
617
+ break;
618
+ }
619
+ return _context5.abrupt("return");
620
+ case 2:
621
+ if (processedMessageList != null && processedMessageList.length) {
622
+ onEndReachedTracker.current[processedMessageList.length] = true;
623
+ }
624
+ callback = function callback() {
625
+ onEndReachedInPromise.current = null;
626
+ return Promise.resolve();
627
+ };
628
+ onError = function onError() {
629
+ setTimeout(function () {
630
+ onEndReachedTracker.current = {};
631
+ }, 2000);
632
+ };
633
+ if (!onStartReachedInPromise.current) {
638
634
  _context5.next = 8;
639
- return onStartReachedInPromise.current;
640
- case 8:
641
- onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback)["catch"](onError);
642
- case 9:
643
- case "end":
644
- return _context5.stop();
645
- }
646
- }, _callee5);
647
- }));
648
- return function maybeCallOnEndReached() {
649
- return _ref8.apply(this, arguments);
650
- };
651
- }();
652
- var onUserScrollEvent = function onUserScrollEvent(event) {
635
+ break;
636
+ }
637
+ _context5.next = 8;
638
+ return onStartReachedInPromise.current;
639
+ case 8:
640
+ onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback)["catch"](onError);
641
+ case 9:
642
+ case "end":
643
+ return _context5.stop();
644
+ }
645
+ }, _callee5);
646
+ })));
647
+ var onUserScrollEvent = (0, _hooks.useStableCallback)(function (event) {
653
648
  var nativeEvent = event.nativeEvent;
654
649
  clearTimeout(onScrollEventTimeoutRef.current);
655
650
  var offset = nativeEvent.contentOffset.y;
@@ -666,8 +661,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
666
661
  if (isScrollAtEnd) {
667
662
  maybeCallOnEndReached();
668
663
  }
669
- };
670
- var handleScroll = function handleScroll(event) {
664
+ });
665
+ var handleScroll = (0, _hooks.useStableCallback)(function (event) {
671
666
  var messageListHasMessages = processedMessageList.length > 0;
672
667
  var offset = event.nativeEvent.contentOffset.y;
673
668
  var isScrollAtBottom = offset <= 150;
@@ -677,47 +672,42 @@ var MessageListWithContext = function MessageListWithContext(props) {
677
672
  if (onListScroll) {
678
673
  onListScroll(event);
679
674
  }
680
- };
681
- var goToNewMessages = function () {
682
- var _ref9 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
683
- var isNotLatestSet;
684
- return _regenerator["default"].wrap(function _callee6$(_context6) {
685
- while (1) switch (_context6.prev = _context6.next) {
686
- case 0:
687
- isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
688
- if (!isNotLatestSet) {
689
- _context6.next = 7;
690
- break;
691
- }
692
- resetPaginationTrackersRef.current();
693
- _context6.next = 5;
694
- return reloadChannel();
695
- case 5:
696
- _context6.next = 8;
675
+ });
676
+ var goToNewMessages = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
677
+ var isNotLatestSet;
678
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
679
+ while (1) switch (_context6.prev = _context6.next) {
680
+ case 0:
681
+ isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
682
+ if (!isNotLatestSet) {
683
+ _context6.next = 7;
697
684
  break;
698
- case 7:
699
- if (flatListRef.current) {
700
- flatListRef.current.scrollToOffset({
701
- animated: true,
702
- offset: 0
703
- });
704
- }
705
- case 8:
706
- setScrollToBottomButtonVisible(false);
707
- _context6.next = 11;
708
- return markRead({
709
- updateChannelUnreadState: false
685
+ }
686
+ resetPaginationTrackersRef.current();
687
+ _context6.next = 5;
688
+ return reloadChannel();
689
+ case 5:
690
+ _context6.next = 8;
691
+ break;
692
+ case 7:
693
+ if (flatListRef.current) {
694
+ flatListRef.current.scrollToOffset({
695
+ animated: true,
696
+ offset: 0
710
697
  });
711
- case 11:
712
- case "end":
713
- return _context6.stop();
714
- }
715
- }, _callee6);
716
- }));
717
- return function goToNewMessages() {
718
- return _ref9.apply(this, arguments);
719
- };
720
- }();
698
+ }
699
+ case 8:
700
+ setScrollToBottomButtonVisible(false);
701
+ _context6.next = 11;
702
+ return markRead({
703
+ updateChannelUnreadState: false
704
+ });
705
+ case 11:
706
+ case "end":
707
+ return _context6.stop();
708
+ }
709
+ }, _callee6);
710
+ })));
721
711
  var scrollToIndexFailedRetryCountRef = (0, _react.useRef)(0);
722
712
  var failScrollTimeoutId = (0, _react.useRef)(undefined);
723
713
  var onScrollToIndexFailedRef = (0, _react.useRef)(function (info) {
@@ -768,45 +758,40 @@ var MessageListWithContext = function MessageListWithContext(props) {
768
758
  setMessages(messagesWithImages);
769
759
  }
770
760
  }, [imageString, isListActive, legacyImageViewerSwipeBehaviour, numberOfMessagesWithImages, threadExists, threadList]);
771
- var dismissImagePicker = function dismissImagePicker() {
761
+ var dismissImagePicker = (0, _hooks.useStableCallback)(function () {
772
762
  if (selectedPicker) {
773
763
  setSelectedPicker(undefined);
774
764
  closePicker();
775
765
  }
776
- };
777
- var onScrollBeginDrag = function onScrollBeginDrag(event) {
766
+ });
767
+ var onScrollBeginDrag = (0, _hooks.useStableCallback)(function (event) {
778
768
  !hasMoved && selectedPicker && setHasMoved(true);
779
769
  onUserScrollEvent(event);
780
- };
781
- var onScrollEndDrag = function onScrollEndDrag(event) {
770
+ });
771
+ var onScrollEndDrag = (0, _hooks.useStableCallback)(function (event) {
782
772
  hasMoved && selectedPicker && setHasMoved(false);
783
773
  onUserScrollEvent(event);
784
- };
785
- var refCallback = function refCallback(ref) {
774
+ });
775
+ var refCallback = (0, _hooks.useStableCallback)(function (ref) {
786
776
  flatListRef.current = ref;
787
777
  if (setFlatListRef) {
788
778
  setFlatListRef(ref);
789
779
  }
790
- };
791
- var onUnreadNotificationClose = function () {
792
- var _ref10 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7() {
793
- return _regenerator["default"].wrap(function _callee7$(_context7) {
794
- while (1) switch (_context7.prev = _context7.next) {
795
- case 0:
796
- _context7.next = 2;
797
- return markRead();
798
- case 2:
799
- setIsUnreadNotificationOpen(false);
800
- case 3:
801
- case "end":
802
- return _context7.stop();
803
- }
804
- }, _callee7);
805
- }));
806
- return function onUnreadNotificationClose() {
807
- return _ref10.apply(this, arguments);
808
- };
809
- }();
780
+ });
781
+ var onUnreadNotificationClose = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7() {
782
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
783
+ while (1) switch (_context7.prev = _context7.next) {
784
+ case 0:
785
+ _context7.next = 2;
786
+ return markRead();
787
+ case 2:
788
+ setIsUnreadNotificationOpen(false);
789
+ case 3:
790
+ case "end":
791
+ return _context7.stop();
792
+ }
793
+ }, _callee7);
794
+ })));
810
795
  var debugRef = (0, _DebugContext.useDebugContext)();
811
796
  var isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;
812
797
  if (isDebugModeEnabled) {
@@ -847,6 +832,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
847
832
  rest = (0, _objectWithoutProperties2["default"])(additionalFlatListProps, _excluded);
848
833
  additionalFlatListPropsExcludingStyle = rest;
849
834
  }
835
+ var flatListStyle = (0, _react.useMemo)(function () {
836
+ return [styles.listContainer, listContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined];
837
+ }, [additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, listContainer, shouldApplyAndroidWorkaround]);
838
+ var flatListContentContainerStyle = (0, _react.useMemo)(function () {
839
+ return [styles.contentContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer];
840
+ }, [additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer]);
850
841
  if (!FlatList) {
851
842
  return null;
852
843
  }
@@ -874,7 +865,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
874
865
  listType: "message"
875
866
  }) : null
876
867
  }) : (0, _jsxRuntime.jsx)(FlatList, Object.assign({
877
- contentContainerStyle: [styles.contentContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer],
868
+ contentContainerStyle: flatListContentContainerStyle,
878
869
  data: processedMessageList,
879
870
  extraData: disabled,
880
871
  inverted: shouldApplyAndroidWorkaround ? false : inverted,
@@ -883,10 +874,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
883
874
  keyExtractor: keyExtractor,
884
875
  ListFooterComponent: ListFooterComponent,
885
876
  ListHeaderComponent: ListHeaderComponent,
886
- maintainVisibleContentPosition: {
887
- autoscrollToTopThreshold: autoscrollToRecent ? 10 : undefined,
888
- minIndexForVisible: 1
889
- },
877
+ maintainVisibleContentPosition: maintainVisibleContentPosition,
890
878
  maxToRenderPerBatch: 30,
891
879
  onMomentumScrollEnd: onUserScrollEvent,
892
880
  onScroll: handleScroll,
@@ -899,7 +887,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
899
887
  renderItem: renderItem,
900
888
  scrollEnabled: overlay === 'none',
901
889
  showsVerticalScrollIndicator: !shouldApplyAndroidWorkaround,
902
- style: [styles.listContainer, listContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
890
+ style: flatListStyle,
903
891
  testID: "message-flat-list",
904
892
  viewabilityConfig: flatListViewabilityConfig
905
893
  }, additionalFlatListPropsExcludingStyle)), (0, _jsxRuntime.jsx)(_reactNative.View, {