stream-chat-react-native-core 7.0.0-rc.8 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js +19 -9
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +3 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/Gallery.js +16 -3
  7. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -1
  9. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
  10. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  11. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
  12. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  13. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
  14. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  15. package/lib/commonjs/components/Channel/Channel.js +320 -310
  16. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  17. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -1
  18. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  19. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  20. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +133 -147
  21. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  22. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  23. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
  24. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  25. package/lib/commonjs/components/Message/Message.js +14 -7
  26. package/lib/commonjs/components/Message/Message.js.map +1 -1
  27. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  28. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +70 -54
  29. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  30. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +14 -6
  31. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  32. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  33. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  34. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +3 -1
  35. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  36. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  37. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  38. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +25 -39
  39. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  40. package/lib/commonjs/components/MessageInput/InputButtons.js +18 -15
  41. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  42. package/lib/commonjs/components/MessageInput/MessageInput.js +96 -74
  43. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  44. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  45. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  46. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +4 -4
  47. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -1
  48. package/lib/commonjs/components/MessageList/MessageList.js +281 -223
  49. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  50. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +65 -48
  51. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  52. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  53. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +1 -1
  54. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  55. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  56. package/lib/commonjs/components/MessageList/utils/getReadState.js +20 -0
  57. package/lib/commonjs/components/MessageList/utils/getReadState.js.map +1 -0
  58. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  59. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  60. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  61. package/lib/commonjs/components/Reply/Reply.js +2 -2
  62. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  63. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +24 -6
  64. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  65. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  66. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +10 -6
  67. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
  68. package/lib/commonjs/components/index.js +15 -4
  69. package/lib/commonjs/components/index.js.map +1 -1
  70. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  71. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +5 -1
  72. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  73. package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -1
  74. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  75. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  76. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +535 -523
  77. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  78. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
  79. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  80. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
  81. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  82. package/lib/commonjs/contexts/messageInputContext/utils/utils.js +4 -4
  83. package/lib/commonjs/contexts/messageInputContext/utils/utils.js.map +1 -1
  84. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  85. package/lib/commonjs/contexts/pollContext/pollContext.js.map +1 -1
  86. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +23 -14
  87. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  88. package/lib/commonjs/contexts/themeContext/utils/theme.js +2 -1
  89. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  90. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  91. package/lib/commonjs/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  92. package/lib/commonjs/hooks/index.js +22 -0
  93. package/lib/commonjs/hooks/index.js.map +1 -1
  94. package/lib/commonjs/hooks/useAudioPlayer.js +60 -69
  95. package/lib/commonjs/hooks/useAudioPlayer.js.map +1 -1
  96. package/lib/commonjs/hooks/useStableCallback.js +13 -0
  97. package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
  98. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  99. package/lib/commonjs/i18n/en.json +3 -0
  100. package/lib/commonjs/i18n/es.json +3 -0
  101. package/lib/commonjs/i18n/fr.json +3 -0
  102. package/lib/commonjs/i18n/he.json +3 -0
  103. package/lib/commonjs/i18n/hi.json +2 -0
  104. package/lib/commonjs/i18n/it.json +3 -0
  105. package/lib/commonjs/i18n/ja.json +1 -0
  106. package/lib/commonjs/i18n/ko.json +1 -0
  107. package/lib/commonjs/i18n/nl.json +2 -0
  108. package/lib/commonjs/i18n/pt-br.json +3 -0
  109. package/lib/commonjs/i18n/ru.json +4 -0
  110. package/lib/commonjs/i18n/tr.json +2 -0
  111. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  112. package/lib/commonjs/native.js.map +1 -1
  113. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  114. package/lib/commonjs/types/types.js.map +1 -1
  115. package/lib/commonjs/utils/compressImage.js +1 -1
  116. package/lib/commonjs/utils/compressImage.js.map +1 -1
  117. package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
  118. package/lib/commonjs/utils/utils.js +17 -4
  119. package/lib/commonjs/utils/utils.js.map +1 -1
  120. package/lib/commonjs/version.json +1 -1
  121. package/lib/module/components/Attachment/AudioAttachment.js +19 -9
  122. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  123. package/lib/module/components/Attachment/FileAttachmentGroup.js +3 -1
  124. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  125. package/lib/module/components/Attachment/Gallery.js +16 -3
  126. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  127. package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -1
  128. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
  129. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  130. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
  131. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  132. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
  133. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  134. package/lib/module/components/Channel/Channel.js +320 -310
  135. package/lib/module/components/Channel/Channel.js.map +1 -1
  136. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -1
  137. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  138. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  139. package/lib/module/components/Channel/hooks/useMessageListPagination.js +133 -147
  140. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  141. package/lib/module/components/Chat/Chat.js.map +1 -1
  142. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
  143. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  144. package/lib/module/components/Message/Message.js +14 -7
  145. package/lib/module/components/Message/Message.js.map +1 -1
  146. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  147. package/lib/module/components/Message/MessageSimple/MessageSimple.js +70 -54
  148. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  149. package/lib/module/components/Message/MessageSimple/MessageStatus.js +14 -6
  150. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  151. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  152. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  153. package/lib/module/components/Message/hooks/useCreateMessageContext.js +3 -1
  154. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  155. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  156. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  157. package/lib/module/components/MessageInput/FileUploadPreview.js +25 -39
  158. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  159. package/lib/module/components/MessageInput/InputButtons.js +18 -15
  160. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  161. package/lib/module/components/MessageInput/MessageInput.js +96 -74
  162. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  163. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  164. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  165. package/lib/module/components/MessageInput/hooks/useAudioController.js +4 -4
  166. package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -1
  167. package/lib/module/components/MessageList/MessageList.js +281 -223
  168. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  169. package/lib/module/components/MessageList/hooks/useMessageList.js +65 -48
  170. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  171. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  172. package/lib/module/components/MessageList/utils/getGroupStyles.js +1 -1
  173. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  174. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  175. package/lib/module/components/MessageList/utils/getReadState.js +20 -0
  176. package/lib/module/components/MessageList/utils/getReadState.js.map +1 -0
  177. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  178. package/lib/module/components/Poll/components/Button.js.map +1 -1
  179. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  180. package/lib/module/components/Reply/Reply.js +2 -2
  181. package/lib/module/components/Reply/Reply.js.map +1 -1
  182. package/lib/module/components/Thread/components/ThreadFooterComponent.js +24 -6
  183. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  184. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  185. package/lib/module/components/UIComponents/BottomSheetModal.js +10 -6
  186. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
  187. package/lib/module/components/index.js +15 -4
  188. package/lib/module/components/index.js.map +1 -1
  189. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  190. package/lib/module/contexts/channelsStateContext/useChannelState.js +5 -1
  191. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  192. package/lib/module/contexts/debugContext/DebugContext.js.map +1 -1
  193. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  194. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  195. package/lib/module/contexts/messageInputContext/MessageInputContext.js +535 -523
  196. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  197. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
  198. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  199. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
  200. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  201. package/lib/module/contexts/messageInputContext/utils/utils.js +4 -4
  202. package/lib/module/contexts/messageInputContext/utils/utils.js.map +1 -1
  203. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  204. package/lib/module/contexts/pollContext/pollContext.js.map +1 -1
  205. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +23 -14
  206. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  207. package/lib/module/contexts/themeContext/utils/theme.js +2 -1
  208. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  209. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  210. package/lib/module/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  211. package/lib/module/hooks/index.js +22 -0
  212. package/lib/module/hooks/index.js.map +1 -1
  213. package/lib/module/hooks/useAudioPlayer.js +60 -69
  214. package/lib/module/hooks/useAudioPlayer.js.map +1 -1
  215. package/lib/module/hooks/useStableCallback.js +13 -0
  216. package/lib/module/hooks/useStableCallback.js.map +1 -0
  217. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  218. package/lib/module/i18n/en.json +3 -0
  219. package/lib/module/i18n/es.json +3 -0
  220. package/lib/module/i18n/fr.json +3 -0
  221. package/lib/module/i18n/he.json +3 -0
  222. package/lib/module/i18n/hi.json +2 -0
  223. package/lib/module/i18n/it.json +3 -0
  224. package/lib/module/i18n/ja.json +1 -0
  225. package/lib/module/i18n/ko.json +1 -0
  226. package/lib/module/i18n/nl.json +2 -0
  227. package/lib/module/i18n/pt-br.json +3 -0
  228. package/lib/module/i18n/ru.json +4 -0
  229. package/lib/module/i18n/tr.json +2 -0
  230. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  231. package/lib/module/native.js.map +1 -1
  232. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  233. package/lib/module/types/types.js.map +1 -1
  234. package/lib/module/utils/compressImage.js +1 -1
  235. package/lib/module/utils/compressImage.js.map +1 -1
  236. package/lib/module/utils/removeReservedFields.js.map +1 -1
  237. package/lib/module/utils/utils.js +17 -4
  238. package/lib/module/utils/utils.js.map +1 -1
  239. package/lib/module/version.json +1 -1
  240. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +2 -2
  241. package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
  242. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
  243. package/lib/typescript/components/Attachment/Gallery.d.ts +3 -3
  244. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  245. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +4 -3
  246. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts.map +1 -1
  247. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  248. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts +2 -2
  249. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  250. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +2 -3
  251. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
  252. package/lib/typescript/components/Channel/Channel.d.ts +3 -4
  253. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  254. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +2 -3
  255. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -1
  256. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  257. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  258. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts +6 -6
  259. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts.map +1 -1
  260. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +3 -3
  261. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
  262. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +1 -1
  263. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +1 -1
  264. package/lib/typescript/components/Chat/Chat.d.ts +0 -9
  265. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  266. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +3 -0
  267. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
  268. package/lib/typescript/components/Message/Message.d.ts +4 -5
  269. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  270. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -3
  271. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  272. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
  273. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  274. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts.map +1 -1
  275. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
  276. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +2 -2
  277. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
  278. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  279. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  280. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts.map +1 -1
  281. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +2 -2
  282. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
  283. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -4
  284. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts.map +1 -1
  285. package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
  286. package/lib/typescript/components/MessageInput/InputButtons.d.ts.map +1 -1
  287. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  288. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  289. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -1
  290. package/lib/typescript/components/MessageList/MessageList.d.ts +4 -4
  291. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  292. package/lib/typescript/components/MessageList/MessageSystem.d.ts +2 -2
  293. package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
  294. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +14 -9
  295. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  296. package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts +2 -2
  297. package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts.map +1 -1
  298. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
  299. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
  300. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts.map +1 -1
  301. package/lib/typescript/components/MessageList/utils/getReadState.d.ts +9 -0
  302. package/lib/typescript/components/MessageList/utils/getReadState.d.ts.map +1 -0
  303. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +2 -3
  304. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  305. package/lib/typescript/components/Poll/components/Button.d.ts +2 -3
  306. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  307. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +2 -3
  308. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  309. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  310. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
  311. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  312. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
  313. package/lib/typescript/components/index.d.ts +2 -1
  314. package/lib/typescript/components/index.d.ts.map +1 -1
  315. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +3 -3
  316. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  317. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  318. package/lib/typescript/contexts/debugContext/DebugContext.d.ts +2 -3
  319. package/lib/typescript/contexts/debugContext/DebugContext.d.ts.map +1 -1
  320. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +3 -3
  321. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  322. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +6 -4
  323. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  324. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +13 -15
  325. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  326. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  327. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  328. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +3 -3
  329. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts.map +1 -1
  330. package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts +2 -2
  331. package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts.map +1 -1
  332. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +25 -21
  333. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  334. package/lib/typescript/contexts/pollContext/pollContext.d.ts +2 -3
  335. package/lib/typescript/contexts/pollContext/pollContext.d.ts.map +1 -1
  336. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts.map +1 -1
  337. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  338. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  339. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +4 -5
  340. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
  341. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts +3 -4
  342. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts.map +1 -1
  343. package/lib/typescript/hooks/index.d.ts +2 -0
  344. package/lib/typescript/hooks/index.d.ts.map +1 -1
  345. package/lib/typescript/hooks/useAudioPlayer.d.ts.map +1 -1
  346. package/lib/typescript/hooks/useStableCallback.d.ts +26 -0
  347. package/lib/typescript/hooks/useStableCallback.d.ts.map +1 -0
  348. package/lib/typescript/hooks/useTranslatedMessage.d.ts +59 -58
  349. package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
  350. package/lib/typescript/i18n/en.json +3 -0
  351. package/lib/typescript/i18n/es.json +3 -0
  352. package/lib/typescript/i18n/fr.json +3 -0
  353. package/lib/typescript/i18n/he.json +3 -0
  354. package/lib/typescript/i18n/hi.json +2 -0
  355. package/lib/typescript/i18n/it.json +3 -0
  356. package/lib/typescript/i18n/ja.json +1 -0
  357. package/lib/typescript/i18n/ko.json +1 -0
  358. package/lib/typescript/i18n/nl.json +2 -0
  359. package/lib/typescript/i18n/pt-br.json +3 -0
  360. package/lib/typescript/i18n/ru.json +4 -0
  361. package/lib/typescript/i18n/tr.json +2 -0
  362. package/lib/typescript/native.d.ts +8 -11
  363. package/lib/typescript/native.d.ts.map +1 -1
  364. package/lib/typescript/store/apis/insertReaction.d.ts +2 -2
  365. package/lib/typescript/store/apis/insertReaction.d.ts.map +1 -1
  366. package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
  367. package/lib/typescript/store/apis/updateMessage.d.ts.map +1 -1
  368. package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
  369. package/lib/typescript/store/apis/updateReaction.d.ts.map +1 -1
  370. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
  371. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts.map +1 -1
  372. package/lib/typescript/types/types.d.ts +28 -50
  373. package/lib/typescript/types/types.d.ts.map +1 -1
  374. package/lib/typescript/utils/compressImage.d.ts +2 -2
  375. package/lib/typescript/utils/compressImage.d.ts.map +1 -1
  376. package/lib/typescript/utils/i18n/Streami18n.d.ts +3 -0
  377. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  378. package/lib/typescript/utils/removeReservedFields.d.ts +2 -3
  379. package/lib/typescript/utils/removeReservedFields.d.ts.map +1 -1
  380. package/lib/typescript/utils/utils.d.ts +10 -10
  381. package/lib/typescript/utils/utils.d.ts.map +1 -1
  382. package/package.json +4 -3
  383. package/src/components/Attachment/AudioAttachment.tsx +12 -6
  384. package/src/components/Attachment/FileAttachmentGroup.tsx +3 -1
  385. package/src/components/Attachment/Gallery.tsx +22 -7
  386. package/src/components/Attachment/ImageReloadIndicator.tsx +4 -5
  387. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -10
  388. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +9 -37
  389. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +27 -23
  390. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +12 -12
  391. package/src/components/Channel/Channel.tsx +423 -361
  392. package/src/components/Channel/__tests__/Channel.test.js +10 -3
  393. package/src/components/Channel/hooks/useChannelDataState.ts +2 -4
  394. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  395. package/src/components/Channel/hooks/useMessageListPagination.tsx +150 -150
  396. package/src/components/Chat/Chat.tsx +0 -9
  397. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +8 -7
  398. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +5 -4
  399. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +5 -4
  400. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +3 -2
  401. package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +12 -5
  402. package/src/components/Message/Message.tsx +16 -15
  403. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -3
  404. package/src/components/Message/MessageSimple/MessageSimple.tsx +112 -70
  405. package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -17
  406. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +3 -3
  407. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +11 -5
  408. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +5 -4
  409. package/src/components/Message/MessageSimple/utils/renderText.tsx +2 -3
  410. package/src/components/Message/hooks/useCreateMessageContext.ts +3 -0
  411. package/src/components/Message/hooks/useMessageActionHandlers.ts +1 -3
  412. package/src/components/Message/hooks/useMessageActions.tsx +4 -3
  413. package/src/components/MessageInput/FileUploadPreview.tsx +41 -70
  414. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  415. package/src/components/MessageInput/InputButtons.tsx +14 -10
  416. package/src/components/MessageInput/MessageInput.tsx +28 -30
  417. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +1 -1
  418. package/src/components/MessageInput/__tests__/MessageInput.test.js +3 -1
  419. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +1 -0
  420. package/src/components/MessageInput/hooks/useAudioController.tsx +6 -5
  421. package/src/components/MessageList/MessageList.tsx +253 -137
  422. package/src/components/MessageList/MessageSystem.tsx +2 -2
  423. package/src/components/MessageList/hooks/useMessageList.ts +82 -64
  424. package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts +2 -2
  425. package/src/components/MessageList/utils/getGroupStyles.ts +7 -5
  426. package/src/components/MessageList/utils/getLastReceivedMessage.ts +3 -3
  427. package/src/components/MessageList/utils/getReadState.ts +27 -0
  428. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +2 -3
  429. package/src/components/MessageMenu/hooks/useFetchReactions.ts +2 -3
  430. package/src/components/Poll/components/Button.tsx +2 -4
  431. package/src/components/Poll/components/PollResults/PollResultItem.tsx +2 -3
  432. package/src/components/Reply/Reply.tsx +1 -2
  433. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +318 -847
  434. package/src/components/Thread/components/ThreadFooterComponent.tsx +31 -9
  435. package/src/components/ThreadList/ThreadListItem.tsx +6 -4
  436. package/src/components/UIComponents/BottomSheetModal.tsx +11 -7
  437. package/src/components/index.ts +2 -1
  438. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +5 -4
  439. package/src/contexts/channelsStateContext/useChannelState.ts +5 -1
  440. package/src/contexts/debugContext/DebugContext.tsx +2 -4
  441. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +5 -4
  442. package/src/contexts/messageContext/MessageContext.tsx +6 -4
  443. package/src/contexts/messageInputContext/MessageInputContext.tsx +295 -262
  444. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +10 -6
  445. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +6 -5
  446. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +3 -5
  447. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +14 -9
  448. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +7 -3
  449. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +37 -40
  450. package/src/contexts/messageInputContext/utils/utils.ts +6 -8
  451. package/src/contexts/messagesContext/MessagesContext.tsx +26 -20
  452. package/src/contexts/pollContext/pollContext.tsx +2 -4
  453. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +33 -14
  454. package/src/contexts/themeContext/utils/theme.ts +2 -0
  455. package/src/contexts/threadContext/ThreadContext.tsx +4 -6
  456. package/src/contexts/threadsContext/ThreadListItemContext.tsx +3 -5
  457. package/src/hooks/index.ts +2 -0
  458. package/src/hooks/useAudioPlayer.ts +37 -31
  459. package/src/hooks/useStableCallback.ts +37 -0
  460. package/src/hooks/useTranslatedMessage.ts +2 -2
  461. package/src/i18n/en.json +3 -0
  462. package/src/i18n/es.json +3 -0
  463. package/src/i18n/fr.json +3 -0
  464. package/src/i18n/he.json +3 -0
  465. package/src/i18n/hi.json +2 -0
  466. package/src/i18n/it.json +3 -0
  467. package/src/i18n/ja.json +1 -0
  468. package/src/i18n/ko.json +1 -0
  469. package/src/i18n/nl.json +2 -0
  470. package/src/i18n/pt-br.json +3 -0
  471. package/src/i18n/ru.json +4 -0
  472. package/src/i18n/tr.json +2 -0
  473. package/src/mock-builders/api/channelMocks.tsx +2 -8
  474. package/src/native.ts +13 -8
  475. package/src/store/apis/insertReaction.ts +2 -2
  476. package/src/store/apis/updateMessage.ts +2 -2
  477. package/src/store/apis/updateReaction.ts +2 -2
  478. package/src/store/mappers/mapMessageToStorable.ts +2 -2
  479. package/src/types/stream-chat-common-custom-data.d.ts +22 -22
  480. package/src/types/types.ts +35 -54
  481. package/src/utils/compressImage.ts +3 -4
  482. package/src/utils/removeReservedFields.ts +3 -5
  483. package/src/utils/utils.ts +25 -16
  484. package/src/version.json +1 -1
  485. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js +0 -20
  486. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js.map +0 -1
  487. package/lib/commonjs/components/MessageList/utils/getReadStates.js +0 -34
  488. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +0 -1
  489. package/lib/module/components/MessageList/hooks/useLastReadData.js +0 -20
  490. package/lib/module/components/MessageList/hooks/useLastReadData.js.map +0 -1
  491. package/lib/module/components/MessageList/utils/getReadStates.js +0 -34
  492. package/lib/module/components/MessageList/utils/getReadStates.js.map +0 -1
  493. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts +0 -12
  494. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts.map +0 -1
  495. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +0 -5
  496. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +0 -1
  497. package/src/components/MessageList/hooks/useLastReadData.ts +0 -29
  498. package/src/components/MessageList/utils/getReadStates.ts +0 -55
@@ -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"];
@@ -75,8 +76,27 @@ var keyExtractor = function keyExtractor(item) {
75
76
  var flatListViewabilityConfig = {
76
77
  viewAreaCoveragePercentThreshold: 1
77
78
  };
79
+ var hasReadLastMessage = function hasReadLastMessage(channel, userId) {
80
+ var _channel$state$latest, _channel$state$read$u;
81
+ var latestMessageIdInChannel = (_channel$state$latest = channel.state.latestMessages.slice(-1)[0]) == null ? void 0 : _channel$state$latest.id;
82
+ var lastReadMessageIdServer = (_channel$state$read$u = channel.state.read[userId]) == null ? void 0 : _channel$state$read$u.last_read_message_id;
83
+ return latestMessageIdInChannel === lastReadMessageIdServer;
84
+ };
85
+ var getPreviousLastMessage = function getPreviousLastMessage(messages, newMessage) {
86
+ if (!newMessage) return;
87
+ var previousLastMessage;
88
+ for (var i = messages.length - 1; i >= 0; i--) {
89
+ var msg = messages[i];
90
+ if (!(msg != null && msg.id)) break;
91
+ if (msg.id !== newMessage.id) {
92
+ previousLastMessage = msg;
93
+ break;
94
+ }
95
+ }
96
+ return previousLastMessage;
97
+ };
78
98
  var MessageListWithContext = function MessageListWithContext(props) {
79
- var _getLastReceivedMessa;
99
+ var _client$user3;
80
100
  var LoadingMoreRecentIndicator = props.threadList ? _InlineLoadingMoreRecentThreadIndicator.InlineLoadingMoreRecentThreadIndicator : _InlineLoadingMoreRecentIndicator.InlineLoadingMoreRecentIndicator;
81
101
  var additionalFlatListProps = props.additionalFlatListProps,
82
102
  channel = props.channel,
@@ -120,6 +140,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
120
140
  reloadChannel = props.reloadChannel,
121
141
  ScrollToBottomButton = props.ScrollToBottomButton,
122
142
  selectedPicker = props.selectedPicker,
143
+ setChannelUnreadState = props.setChannelUnreadState,
123
144
  setFlatListRef = props.setFlatListRef,
124
145
  setMessages = props.setMessages,
125
146
  setSelectedPicker = props.setSelectedPicker,
@@ -160,6 +181,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
160
181
  noGroupByUser: noGroupByUser,
161
182
  threadList: threadList
162
183
  }),
184
+ dateSeparatorsRef = _useMessageList.dateSeparatorsRef,
185
+ messageGroupStylesRef = _useMessageList.messageGroupStylesRef,
163
186
  processedMessageList = _useMessageList.processedMessageList,
164
187
  rawMessageList = _useMessageList.rawMessageList;
165
188
  var messageListLengthBeforeUpdate = (0, _react.useRef)(0);
@@ -172,6 +195,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
172
195
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
173
196
  autoscrollToRecent = _useState4[0],
174
197
  setAutoscrollToRecent = _useState4[1];
198
+ var maintainVisibleContentPosition = (0, _react.useMemo)(function () {
199
+ return {
200
+ autoscrollToTopThreshold: autoscrollToRecent ? 10 : undefined,
201
+ minIndexForVisible: 1
202
+ };
203
+ }, [autoscrollToRecent]);
175
204
  var onStartReachedTracker = (0, _react.useRef)({});
176
205
  var onEndReachedTracker = (0, _react.useRef)({});
177
206
  var onStartReachedInPromise = (0, _react.useRef)(null);
@@ -185,22 +214,22 @@ var MessageListWithContext = function MessageListWithContext(props) {
185
214
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
186
215
  hasMoved = _useState6[0],
187
216
  setHasMoved = _useState6[1];
188
- var _useState7 = (0, _react.useState)((_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList)) == null ? void 0 : _getLastReceivedMessa.id),
217
+ var lastReceivedId = (0, _react.useMemo)(function () {
218
+ var _getLastReceivedMessa;
219
+ return (_getLastReceivedMessa = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList)) == null ? void 0 : _getLastReceivedMessa.id;
220
+ }, [processedMessageList]);
221
+ var _useState7 = (0, _react.useState)(false),
189
222
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
190
- lastReceivedId = _useState8[0],
191
- setLastReceivedId = _useState8[1];
192
- var _useState9 = (0, _react.useState)(false),
223
+ scrollToBottomButtonVisible = _useState8[0],
224
+ setScrollToBottomButtonVisible = _useState8[1];
225
+ var _useState9 = (0, _react.useState)(),
193
226
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
194
- scrollToBottomButtonVisible = _useState10[0],
195
- setScrollToBottomButtonVisible = _useState10[1];
196
- var _useState11 = (0, _react.useState)(),
197
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
198
- stickyHeaderDate = _useState12[0],
199
- setStickyHeaderDate = _useState12[1];
227
+ stickyHeaderDate = _useState10[0],
228
+ setStickyHeaderDate = _useState10[1];
200
229
  var stickyHeaderDateRef = (0, _react.useRef)(undefined);
201
230
  var channelRef = (0, _react.useRef)(channel);
202
231
  channelRef.current = channel;
203
- var updateStickyHeaderDateIfNeeded = function updateStickyHeaderDateIfNeeded(viewableItems) {
232
+ var updateStickyHeaderDateIfNeeded = (0, _hooks.useStableCallback)(function (viewableItems) {
204
233
  if (!viewableItems.length) {
205
234
  return;
206
235
  }
@@ -217,8 +246,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
217
246
  setStickyHeaderDate(lastItem.item.created_at);
218
247
  }
219
248
  }
220
- };
221
- var updateStickyUnreadIndicator = function updateStickyUnreadIndicator(viewableItems) {
249
+ });
250
+ var updateStickyUnreadIndicator = (0, _hooks.useStableCallback)(function (viewableItems) {
222
251
  if (!viewableItems.length) {
223
252
  setIsUnreadNotificationOpen(false);
224
253
  return;
@@ -229,10 +258,15 @@ var MessageListWithContext = function MessageListWithContext(props) {
229
258
  }
230
259
  var lastItem = viewableItems[viewableItems.length - 1];
231
260
  if (lastItem) {
232
- var lastItemCreatedAt = lastItem.item.created_at;
261
+ var lastItemMessage = lastItem.item;
262
+ var lastItemCreatedAt = lastItemMessage.created_at;
233
263
  var unreadIndicatorDate = channelUnreadState == null ? void 0 : channelUnreadState.last_read.getTime();
234
264
  var lastItemDate = lastItemCreatedAt.getTime();
235
- if (!channel.state.messagePagination.hasPrev && processedMessageList[processedMessageList.length - 1].id === lastItem.item.id) {
265
+ if (!channel.state.messagePagination.hasPrev && processedMessageList[processedMessageList.length - 1].id === lastItemMessage.id) {
266
+ setIsUnreadNotificationOpen(false);
267
+ return;
268
+ }
269
+ if (viewableItems.length === 1 && channel.countUnread() === 0 && lastItemMessage.user.id === client.userID) {
236
270
  setIsUnreadNotificationOpen(false);
237
271
  return;
238
272
  }
@@ -242,7 +276,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
242
276
  setIsUnreadNotificationOpen(false);
243
277
  }
244
278
  }
245
- };
279
+ });
246
280
  var unstableOnViewableItemsChanged = function unstableOnViewableItemsChanged(_ref) {
247
281
  var viewableItems = _ref.viewableItems;
248
282
  if (!viewableItems) {
@@ -255,7 +289,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
255
289
  };
256
290
  var onViewableItemsChanged = (0, _react.useRef)(unstableOnViewableItemsChanged);
257
291
  onViewableItemsChanged.current = unstableOnViewableItemsChanged;
258
- var stableOnViwableItemsChanged = (0, _react.useCallback)(function (_ref2) {
292
+ var stableOnViewableItemsChanged = (0, _react.useCallback)(function (_ref2) {
259
293
  var viewableItems = _ref2.viewableItems;
260
294
  onViewableItemsChanged.current({
261
295
  viewableItems: viewableItems
@@ -271,21 +305,56 @@ var MessageListWithContext = function MessageListWithContext(props) {
271
305
  }
272
306
  }, [disabled]);
273
307
  (0, _react.useEffect)(function () {
274
- var listener = channel.on('message.new', function (event) {
275
- var _event$message, _event$message2;
276
- var newMessageToCurrentChannel = event.cid === channel.cid;
277
- var mainChannelUpdated = !((_event$message = event.message) != null && _event$message.parent_id) || ((_event$message2 = event.message) == null ? void 0 : _event$message2.show_in_channel);
278
- if (newMessageToCurrentChannel && mainChannelUpdated && !scrollToBottomButtonVisible) {
279
- markRead();
280
- }
281
- });
308
+ var shouldMarkRead = function shouldMarkRead() {
309
+ var _client$user, _client$user2;
310
+ 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);
311
+ };
312
+ var handleEvent = function () {
313
+ var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(event) {
314
+ var _event$message, _event$message2;
315
+ var mainChannelUpdated;
316
+ return _regenerator["default"].wrap(function _callee$(_context) {
317
+ while (1) switch (_context.prev = _context.next) {
318
+ case 0:
319
+ mainChannelUpdated = !((_event$message = event.message) != null && _event$message.parent_id) || ((_event$message2 = event.message) == null ? void 0 : _event$message2.show_in_channel);
320
+ if (!(scrollToBottomButtonVisible || channelUnreadState != null && channelUnreadState.first_unread_message_id)) {
321
+ _context.next = 5;
322
+ break;
323
+ }
324
+ setChannelUnreadState(function (prev) {
325
+ var _prev$unread_messages, _prev$last_read;
326
+ var previousUnreadCount = (_prev$unread_messages = prev == null ? void 0 : prev.unread_messages) != null ? _prev$unread_messages : 0;
327
+ var previousLastMessage = getPreviousLastMessage(channel.state.messages, event.message);
328
+ return Object.assign({}, prev || {}, {
329
+ 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),
330
+ unread_messages: previousUnreadCount + 1
331
+ });
332
+ });
333
+ _context.next = 8;
334
+ break;
335
+ case 5:
336
+ if (!(mainChannelUpdated && shouldMarkRead())) {
337
+ _context.next = 8;
338
+ break;
339
+ }
340
+ _context.next = 8;
341
+ return markRead();
342
+ case 8:
343
+ case "end":
344
+ return _context.stop();
345
+ }
346
+ }, _callee);
347
+ }));
348
+ return function handleEvent(_x) {
349
+ return _ref3.apply(this, arguments);
350
+ };
351
+ }();
352
+ var listener = channel.on('message.new', handleEvent);
282
353
  return function () {
283
354
  listener == null || listener.unsubscribe();
284
355
  };
285
- }, [channel, markRead, scrollToBottomButtonVisible]);
356
+ }, [channel, channelUnreadState == null ? void 0 : channelUnreadState.first_unread_message_id, (_client$user3 = client.user) == null ? void 0 : _client$user3.id, markRead, scrollToBottomButtonVisible, setChannelUnreadState, threadList]);
286
357
  (0, _react.useEffect)(function () {
287
- var lastReceivedMessage = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList);
288
- setLastReceivedId(lastReceivedMessage == null ? void 0 : lastReceivedMessage.id);
289
358
  var scrollToBottomIfNeeded = function scrollToBottomIfNeeded() {
290
359
  var _topMessageBeforeUpda;
291
360
  if (!client || !channel || rawMessageList.length === 0) {
@@ -353,32 +422,32 @@ var MessageListWithContext = function MessageListWithContext(props) {
353
422
  }
354
423
  }
355
424
  }, [channel, rawMessageList, threadList]);
356
- var goToMessage = function () {
357
- var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(messageId) {
425
+ var goToMessage = (0, _hooks.useStableCallback)(function () {
426
+ var _ref4 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(messageId) {
358
427
  var indexOfParentInMessageList;
359
- return _regenerator["default"].wrap(function _callee$(_context) {
360
- while (1) switch (_context.prev = _context.next) {
428
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
429
+ while (1) switch (_context2.prev = _context2.next) {
361
430
  case 0:
362
431
  indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
363
432
  return (message == null ? void 0 : message.id) === messageId;
364
433
  });
365
- _context.prev = 1;
434
+ _context2.prev = 1;
366
435
  if (!(indexOfParentInMessageList === -1)) {
367
- _context.next = 8;
436
+ _context2.next = 8;
368
437
  break;
369
438
  }
370
- _context.next = 5;
439
+ _context2.next = 5;
371
440
  return loadChannelAroundMessage({
372
441
  messageId: messageId
373
442
  });
374
443
  case 5:
375
- return _context.abrupt("return");
444
+ return _context2.abrupt("return");
376
445
  case 8:
377
446
  if (flatListRef.current) {
378
- _context.next = 10;
447
+ _context2.next = 10;
379
448
  break;
380
449
  }
381
- return _context.abrupt("return");
450
+ return _context2.abrupt("return");
382
451
  case 10:
383
452
  clearTimeout(failScrollTimeoutId.current);
384
453
  scrollToIndexFailedRetryCountRef.current = 0;
@@ -389,54 +458,54 @@ var MessageListWithContext = function MessageListWithContext(props) {
389
458
  index: indexOfParentInMessageList,
390
459
  viewPosition: 0.5
391
460
  });
392
- return _context.abrupt("return");
461
+ return _context2.abrupt("return");
393
462
  case 16:
394
- _context.next = 21;
463
+ _context2.next = 21;
395
464
  break;
396
465
  case 18:
397
- _context.prev = 18;
398
- _context.t0 = _context["catch"](1);
399
- console.warn('Error while scrolling to message', _context.t0);
466
+ _context2.prev = 18;
467
+ _context2.t0 = _context2["catch"](1);
468
+ console.warn('Error while scrolling to message', _context2.t0);
400
469
  case 21:
401
470
  case "end":
402
- return _context.stop();
471
+ return _context2.stop();
403
472
  }
404
- }, _callee, null, [[1, 18]]);
473
+ }, _callee2, null, [[1, 18]]);
405
474
  }));
406
- return function goToMessage(_x) {
407
- return _ref3.apply(this, arguments);
475
+ return function (_x2) {
476
+ return _ref4.apply(this, arguments);
408
477
  };
409
- }();
478
+ }());
410
479
  (0, _react.useEffect)(function () {
411
480
  if (!targetedMessage) {
412
481
  return;
413
482
  }
414
- scrollToDebounceTimeoutRef.current = setTimeout((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
483
+ scrollToDebounceTimeoutRef.current = setTimeout((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
415
484
  var indexOfParentInMessageList;
416
- return _regenerator["default"].wrap(function _callee2$(_context2) {
417
- while (1) switch (_context2.prev = _context2.next) {
485
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
486
+ while (1) switch (_context3.prev = _context3.next) {
418
487
  case 0:
419
488
  indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
420
489
  return (message == null ? void 0 : message.id) === targetedMessage;
421
490
  });
422
491
  if (!(indexOfParentInMessageList === -1)) {
423
- _context2.next = 6;
492
+ _context3.next = 6;
424
493
  break;
425
494
  }
426
- _context2.next = 4;
495
+ _context3.next = 4;
427
496
  return loadChannelAroundMessage({
428
497
  messageId: targetedMessage,
429
498
  setTargetedMessage: setTargetedMessage
430
499
  });
431
500
  case 4:
432
- _context2.next = 13;
501
+ _context3.next = 13;
433
502
  break;
434
503
  case 6:
435
504
  if (flatListRef.current) {
436
- _context2.next = 8;
505
+ _context3.next = 8;
437
506
  break;
438
507
  }
439
- return _context2.abrupt("return");
508
+ return _context3.abrupt("return");
440
509
  case 8:
441
510
  clearTimeout(scrollToDebounceTimeoutRef.current);
442
511
  clearTimeout(failScrollTimeoutId.current);
@@ -449,16 +518,16 @@ var MessageListWithContext = function MessageListWithContext(props) {
449
518
  setTargetedMessage(undefined);
450
519
  case 13:
451
520
  case "end":
452
- return _context2.stop();
521
+ return _context3.stop();
453
522
  }
454
- }, _callee2);
523
+ }, _callee3);
455
524
  })), WAIT_FOR_SCROLL_TIMEOUT);
456
525
  }, [targetedMessage]);
457
526
  var shouldApplyAndroidWorkaround = inverted && _reactNative.Platform.OS === 'android';
458
- var renderItem = function renderItem(_ref5) {
459
- var _message$user;
460
- var index = _ref5.index,
461
- message = _ref5.item;
527
+ var renderItem = (0, _react.useCallback)(function (_ref6) {
528
+ var _message$user, _messageGroupStylesRe;
529
+ var index = _ref6.index,
530
+ message = _ref6.item;
462
531
  if (!channel || channel.disconnected || !channel.initialized && !channel.offlineMode) {
463
532
  return null;
464
533
  }
@@ -469,12 +538,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
469
538
  var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (!!(channelUnreadState != null && channelUnreadState.first_unread_message_id) || !!(channelUnreadState != null && channelUnreadState.unread_messages));
470
539
  var showUnreadUnderlay = !!shouldShowUnreadUnderlay && showUnreadSeparator;
471
540
  var wrapMessageInTheme = client.userID === ((_message$user = message.user) == null ? void 0 : _message$user.id) && !!myMessageTheme;
472
- var renderDateSeperator = (0, _useMessageList2.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && (0, _jsxRuntime.jsx)(InlineDateSeparator, {
473
- date: message.dateSeparator
541
+ var renderDateSeperator = dateSeparatorsRef.current[message.id] && (0, _jsxRuntime.jsx)(InlineDateSeparator, {
542
+ date: dateSeparatorsRef.current[message.id]
474
543
  });
475
544
  var renderMessage = (0, _jsxRuntime.jsx)(Message, {
476
545
  goToMessage: goToMessage,
477
- groupStyles: (0, _useMessageList2.isMessageWithStylesReadByAndDateSeparator)(message) ? message.groupStyles : [],
546
+ groupStyles: (_messageGroupStylesRe = messageGroupStylesRef.current[message.id]) != null ? _messageGroupStylesRe : [],
478
547
  isTargetedMessage: highlightedMessageId === message.id,
479
548
  lastReceivedId: lastReceivedId === message.id || message.quoted_message_id ? lastReceivedId : undefined,
480
549
  message: message,
@@ -502,92 +571,82 @@ var MessageListWithContext = function MessageListWithContext(props) {
502
571
  children: [renderDateSeperator, renderMessage]
503
572
  }), showUnreadUnderlay && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})]
504
573
  });
505
- };
506
- var maybeCallOnStartReached = function () {
507
- var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
508
- var callback, onError;
509
- return _regenerator["default"].wrap(function _callee3$(_context3) {
510
- while (1) switch (_context3.prev = _context3.next) {
511
- case 0:
512
- if (!(processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length])) {
513
- _context3.next = 2;
514
- break;
515
- }
516
- return _context3.abrupt("return");
517
- case 2:
518
- if (processedMessageList != null && processedMessageList.length) {
519
- onStartReachedTracker.current[processedMessageList.length] = true;
520
- }
521
- callback = function callback() {
522
- onStartReachedInPromise.current = null;
523
- return Promise.resolve();
524
- };
525
- onError = function onError() {
526
- setTimeout(function () {
527
- onStartReachedTracker.current = {};
528
- }, 2000);
529
- };
530
- if (!onEndReachedInPromise.current) {
531
- _context3.next = 8;
532
- break;
533
- }
534
- _context3.next = 8;
535
- return onEndReachedInPromise.current;
536
- case 8:
537
- onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback)["catch"](onError);
538
- case 9:
539
- case "end":
540
- return _context3.stop();
541
- }
542
- }, _callee3);
543
- }));
544
- return function maybeCallOnStartReached() {
545
- return _ref6.apply(this, arguments);
546
- };
547
- }();
548
- var maybeCallOnEndReached = function () {
549
- var _ref7 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
550
- var callback, onError;
551
- return _regenerator["default"].wrap(function _callee4$(_context4) {
552
- while (1) switch (_context4.prev = _context4.next) {
553
- case 0:
554
- if (!(processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length])) {
555
- _context4.next = 2;
556
- break;
557
- }
558
- return _context4.abrupt("return");
559
- case 2:
560
- if (processedMessageList != null && processedMessageList.length) {
561
- onEndReachedTracker.current[processedMessageList.length] = true;
562
- }
563
- callback = function callback() {
564
- onEndReachedInPromise.current = null;
565
- return Promise.resolve();
566
- };
567
- onError = function onError() {
568
- setTimeout(function () {
569
- onEndReachedTracker.current = {};
570
- }, 2000);
571
- };
572
- if (!onStartReachedInPromise.current) {
573
- _context4.next = 8;
574
- break;
575
- }
574
+ }, [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, messageContainer, messageGroupStylesRef, modifiedTheme, myMessageTheme, onThreadSelect, screenPadding, shouldApplyAndroidWorkaround, shouldShowUnreadUnderlay, threadList]);
575
+ var maybeCallOnStartReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
576
+ var callback, onError;
577
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
578
+ while (1) switch (_context4.prev = _context4.next) {
579
+ case 0:
580
+ if (!(processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length])) {
581
+ _context4.next = 2;
582
+ break;
583
+ }
584
+ return _context4.abrupt("return");
585
+ case 2:
586
+ if (processedMessageList != null && processedMessageList.length) {
587
+ onStartReachedTracker.current[processedMessageList.length] = true;
588
+ }
589
+ callback = function callback() {
590
+ onStartReachedInPromise.current = null;
591
+ return Promise.resolve();
592
+ };
593
+ onError = function onError() {
594
+ setTimeout(function () {
595
+ onStartReachedTracker.current = {};
596
+ }, 2000);
597
+ };
598
+ if (!onEndReachedInPromise.current) {
576
599
  _context4.next = 8;
577
- return onStartReachedInPromise.current;
578
- case 8:
579
- onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback)["catch"](onError);
580
- case 9:
581
- case "end":
582
- return _context4.stop();
583
- }
584
- }, _callee4);
585
- }));
586
- return function maybeCallOnEndReached() {
587
- return _ref7.apply(this, arguments);
588
- };
589
- }();
590
- var onUserScrollEvent = function onUserScrollEvent(event) {
600
+ break;
601
+ }
602
+ _context4.next = 8;
603
+ return onEndReachedInPromise.current;
604
+ case 8:
605
+ onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback)["catch"](onError);
606
+ case 9:
607
+ case "end":
608
+ return _context4.stop();
609
+ }
610
+ }, _callee4);
611
+ })));
612
+ var maybeCallOnEndReached = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
613
+ var callback, onError;
614
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
615
+ while (1) switch (_context5.prev = _context5.next) {
616
+ case 0:
617
+ if (!(processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length])) {
618
+ _context5.next = 2;
619
+ break;
620
+ }
621
+ return _context5.abrupt("return");
622
+ case 2:
623
+ if (processedMessageList != null && processedMessageList.length) {
624
+ onEndReachedTracker.current[processedMessageList.length] = true;
625
+ }
626
+ callback = function callback() {
627
+ onEndReachedInPromise.current = null;
628
+ return Promise.resolve();
629
+ };
630
+ onError = function onError() {
631
+ setTimeout(function () {
632
+ onEndReachedTracker.current = {};
633
+ }, 2000);
634
+ };
635
+ if (!onStartReachedInPromise.current) {
636
+ _context5.next = 8;
637
+ break;
638
+ }
639
+ _context5.next = 8;
640
+ return onStartReachedInPromise.current;
641
+ case 8:
642
+ onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback)["catch"](onError);
643
+ case 9:
644
+ case "end":
645
+ return _context5.stop();
646
+ }
647
+ }, _callee5);
648
+ })));
649
+ var onUserScrollEvent = (0, _hooks.useStableCallback)(function (event) {
591
650
  var nativeEvent = event.nativeEvent;
592
651
  clearTimeout(onScrollEventTimeoutRef.current);
593
652
  var offset = nativeEvent.contentOffset.y;
@@ -604,8 +663,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
604
663
  if (isScrollAtEnd) {
605
664
  maybeCallOnEndReached();
606
665
  }
607
- };
608
- var handleScroll = function handleScroll(event) {
666
+ });
667
+ var handleScroll = (0, _hooks.useStableCallback)(function (event) {
609
668
  var messageListHasMessages = processedMessageList.length > 0;
610
669
  var offset = event.nativeEvent.contentOffset.y;
611
670
  var isScrollAtBottom = offset <= 150;
@@ -615,43 +674,42 @@ var MessageListWithContext = function MessageListWithContext(props) {
615
674
  if (onListScroll) {
616
675
  onListScroll(event);
617
676
  }
618
- };
619
- var goToNewMessages = function () {
620
- var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
621
- var isNotLatestSet;
622
- return _regenerator["default"].wrap(function _callee5$(_context5) {
623
- while (1) switch (_context5.prev = _context5.next) {
624
- case 0:
625
- isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
626
- if (!isNotLatestSet) {
627
- _context5.next = 7;
628
- break;
629
- }
630
- resetPaginationTrackersRef.current();
631
- _context5.next = 5;
632
- return reloadChannel();
633
- case 5:
634
- _context5.next = 8;
677
+ });
678
+ var goToNewMessages = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
679
+ var isNotLatestSet;
680
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
681
+ while (1) switch (_context6.prev = _context6.next) {
682
+ case 0:
683
+ isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
684
+ if (!isNotLatestSet) {
685
+ _context6.next = 7;
635
686
  break;
636
- case 7:
637
- if (flatListRef.current) {
638
- flatListRef.current.scrollToOffset({
639
- animated: true,
640
- offset: 0
641
- });
642
- }
643
- case 8:
644
- setScrollToBottomButtonVisible(false);
645
- case 9:
646
- case "end":
647
- return _context5.stop();
648
- }
649
- }, _callee5);
650
- }));
651
- return function goToNewMessages() {
652
- return _ref8.apply(this, arguments);
653
- };
654
- }();
687
+ }
688
+ resetPaginationTrackersRef.current();
689
+ _context6.next = 5;
690
+ return reloadChannel();
691
+ case 5:
692
+ _context6.next = 8;
693
+ break;
694
+ case 7:
695
+ if (flatListRef.current) {
696
+ flatListRef.current.scrollToOffset({
697
+ animated: true,
698
+ offset: 0
699
+ });
700
+ }
701
+ case 8:
702
+ setScrollToBottomButtonVisible(false);
703
+ _context6.next = 11;
704
+ return markRead({
705
+ updateChannelUnreadState: false
706
+ });
707
+ case 11:
708
+ case "end":
709
+ return _context6.stop();
710
+ }
711
+ }, _callee6);
712
+ })));
655
713
  var scrollToIndexFailedRetryCountRef = (0, _react.useRef)(0);
656
714
  var failScrollTimeoutId = (0, _react.useRef)(undefined);
657
715
  var onScrollToIndexFailedRef = (0, _react.useRef)(function (info) {
@@ -702,45 +760,40 @@ var MessageListWithContext = function MessageListWithContext(props) {
702
760
  setMessages(messagesWithImages);
703
761
  }
704
762
  }, [imageString, isListActive, legacyImageViewerSwipeBehaviour, numberOfMessagesWithImages, threadExists, threadList]);
705
- var dismissImagePicker = function dismissImagePicker() {
763
+ var dismissImagePicker = (0, _hooks.useStableCallback)(function () {
706
764
  if (selectedPicker) {
707
765
  setSelectedPicker(undefined);
708
766
  closePicker();
709
767
  }
710
- };
711
- var onScrollBeginDrag = function onScrollBeginDrag(event) {
768
+ });
769
+ var onScrollBeginDrag = (0, _hooks.useStableCallback)(function (event) {
712
770
  !hasMoved && selectedPicker && setHasMoved(true);
713
771
  onUserScrollEvent(event);
714
- };
715
- var onScrollEndDrag = function onScrollEndDrag(event) {
772
+ });
773
+ var onScrollEndDrag = (0, _hooks.useStableCallback)(function (event) {
716
774
  hasMoved && selectedPicker && setHasMoved(false);
717
775
  onUserScrollEvent(event);
718
- };
719
- var refCallback = function refCallback(ref) {
776
+ });
777
+ var refCallback = (0, _hooks.useStableCallback)(function (ref) {
720
778
  flatListRef.current = ref;
721
779
  if (setFlatListRef) {
722
780
  setFlatListRef(ref);
723
781
  }
724
- };
725
- var onUnreadNotificationClose = function () {
726
- var _ref9 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
727
- return _regenerator["default"].wrap(function _callee6$(_context6) {
728
- while (1) switch (_context6.prev = _context6.next) {
729
- case 0:
730
- _context6.next = 2;
731
- return markRead();
732
- case 2:
733
- setIsUnreadNotificationOpen(false);
734
- case 3:
735
- case "end":
736
- return _context6.stop();
737
- }
738
- }, _callee6);
739
- }));
740
- return function onUnreadNotificationClose() {
741
- return _ref9.apply(this, arguments);
742
- };
743
- }();
782
+ });
783
+ var onUnreadNotificationClose = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7() {
784
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
785
+ while (1) switch (_context7.prev = _context7.next) {
786
+ case 0:
787
+ _context7.next = 2;
788
+ return markRead();
789
+ case 2:
790
+ setIsUnreadNotificationOpen(false);
791
+ case 3:
792
+ case "end":
793
+ return _context7.stop();
794
+ }
795
+ }, _callee7);
796
+ })));
744
797
  var debugRef = (0, _DebugContext.useDebugContext)();
745
798
  var isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;
746
799
  if (isDebugModeEnabled) {
@@ -781,6 +834,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
781
834
  rest = (0, _objectWithoutProperties2["default"])(additionalFlatListProps, _excluded);
782
835
  additionalFlatListPropsExcludingStyle = rest;
783
836
  }
837
+ var flatListStyle = (0, _react.useMemo)(function () {
838
+ return [styles.listContainer, listContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined];
839
+ }, [additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, listContainer, shouldApplyAndroidWorkaround]);
840
+ var flatListContentContainerStyle = (0, _react.useMemo)(function () {
841
+ return [styles.contentContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer];
842
+ }, [additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer]);
784
843
  if (!FlatList) {
785
844
  return null;
786
845
  }
@@ -808,7 +867,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
808
867
  listType: "message"
809
868
  }) : null
810
869
  }) : (0, _jsxRuntime.jsx)(FlatList, Object.assign({
811
- contentContainerStyle: [styles.contentContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.contentContainerStyle, contentContainer],
870
+ contentContainerStyle: flatListContentContainerStyle,
812
871
  data: processedMessageList,
813
872
  extraData: disabled,
814
873
  inverted: shouldApplyAndroidWorkaround ? false : inverted,
@@ -817,10 +876,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
817
876
  keyExtractor: keyExtractor,
818
877
  ListFooterComponent: ListFooterComponent,
819
878
  ListHeaderComponent: ListHeaderComponent,
820
- maintainVisibleContentPosition: {
821
- autoscrollToTopThreshold: autoscrollToRecent ? 10 : undefined,
822
- minIndexForVisible: 1
823
- },
879
+ maintainVisibleContentPosition: maintainVisibleContentPosition,
824
880
  maxToRenderPerBatch: 30,
825
881
  onMomentumScrollEnd: onUserScrollEvent,
826
882
  onScroll: handleScroll,
@@ -828,12 +884,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
828
884
  onScrollEndDrag: onScrollEndDrag,
829
885
  onScrollToIndexFailed: onScrollToIndexFailedRef.current,
830
886
  onTouchEnd: dismissImagePicker,
831
- onViewableItemsChanged: stableOnViwableItemsChanged,
887
+ onViewableItemsChanged: stableOnViewableItemsChanged,
832
888
  ref: refCallback,
833
889
  renderItem: renderItem,
834
890
  scrollEnabled: overlay === 'none',
835
891
  showsVerticalScrollIndicator: !shouldApplyAndroidWorkaround,
836
- style: [styles.listContainer, listContainer, additionalFlatListProps == null ? void 0 : additionalFlatListProps.style, shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
892
+ style: flatListStyle,
837
893
  testID: "message-flat-list",
838
894
  viewabilityConfig: flatListViewabilityConfig
839
895
  }, additionalFlatListPropsExcludingStyle)), (0, _jsxRuntime.jsx)(_reactNative.View, {
@@ -875,6 +931,7 @@ var MessageList = exports.MessageList = function MessageList(props) {
875
931
  NetworkDownIndicator = _useChannelContext.NetworkDownIndicator,
876
932
  reloadChannel = _useChannelContext.reloadChannel,
877
933
  scrollToFirstUnreadThreshold = _useChannelContext.scrollToFirstUnreadThreshold,
934
+ setChannelUnreadState = _useChannelContext.setChannelUnreadState,
878
935
  setTargetedMessage = _useChannelContext.setTargetedMessage,
879
936
  StickyHeader = _useChannelContext.StickyHeader,
880
937
  targetedMessage = _useChannelContext.targetedMessage,
@@ -943,6 +1000,7 @@ var MessageList = exports.MessageList = function MessageList(props) {
943
1000
  ScrollToBottomButton: ScrollToBottomButton,
944
1001
  scrollToFirstUnreadThreshold: scrollToFirstUnreadThreshold,
945
1002
  selectedPicker: selectedPicker,
1003
+ setChannelUnreadState: setChannelUnreadState,
946
1004
  setMessages: setMessages,
947
1005
  setSelectedPicker: setSelectedPicker,
948
1006
  setTargetedMessage: setTargetedMessage,