stream-chat-react-native-core 4.15.0-beta.3 → 5.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1033) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +1 -1
  2. package/lib/commonjs/components/Attachment/AttachmentActions.js +1 -1
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js +1 -1
  4. package/lib/commonjs/components/Attachment/Card.js +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachment.js +1 -1
  6. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +1 -1
  7. package/lib/commonjs/components/Attachment/FileIcon.js +1 -1
  8. package/lib/commonjs/components/Attachment/Gallery.js +19 -19
  9. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/GalleryImage.js +1 -1
  11. package/lib/commonjs/components/Attachment/Giphy.js +40 -40
  12. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  13. package/lib/commonjs/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  14. package/lib/commonjs/components/Attachment/ImageLoadingIndicator.js +1 -1
  15. package/lib/commonjs/components/Attachment/VideoThumbnail.js +1 -1
  16. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  17. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  18. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  19. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  20. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  21. package/lib/commonjs/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  22. package/lib/commonjs/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  23. package/lib/commonjs/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  24. package/lib/commonjs/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  25. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  26. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  27. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  28. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  29. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  30. package/lib/commonjs/components/Avatar/Avatar.js +31 -18
  31. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  32. package/lib/commonjs/components/Avatar/GroupAvatar.js +28 -21
  33. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  34. package/lib/commonjs/components/Channel/Channel.js +227 -257
  35. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  36. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -0
  37. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  38. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +2 -0
  39. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  40. package/lib/commonjs/components/ChannelList/ChannelList.js +41 -10
  41. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  42. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  43. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  44. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  45. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  46. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +20 -8
  47. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  48. package/lib/commonjs/components/ChannelList/Skeleton.js +1 -1
  49. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  50. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  51. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js +2 -2
  52. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  53. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js +2 -2
  54. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  55. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js +2 -2
  56. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  57. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js +2 -2
  58. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  59. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  60. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  61. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  62. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  63. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +2 -2
  64. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  65. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js +2 -2
  66. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  67. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js +4 -4
  68. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  69. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +57 -22
  70. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  71. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +1 -1
  72. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +3 -3
  73. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  74. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +8 -6
  75. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  76. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  77. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  78. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  79. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  80. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  81. package/lib/commonjs/components/Chat/Chat.js +45 -9
  82. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  83. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +144 -0
  84. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -0
  85. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js +171 -0
  86. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js.map +1 -0
  87. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +7 -3
  88. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  89. package/lib/commonjs/components/Chat/hooks/useMutedUsers.js +3 -3
  90. package/lib/commonjs/components/Chat/hooks/useMutedUsers.js.map +1 -1
  91. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js +29 -0
  92. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js.map +1 -0
  93. package/lib/commonjs/components/ImageGallery/ImageGallery.js +36 -30
  94. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  95. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  96. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  97. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  98. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  99. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  100. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  101. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -3
  102. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  103. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +1 -1
  104. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js +6 -0
  105. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  106. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +1 -1
  107. package/lib/commonjs/components/Indicators/LoadingDot.js +1 -1
  108. package/lib/commonjs/components/Indicators/LoadingDots.js +1 -1
  109. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +1 -1
  110. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  111. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  112. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  113. package/lib/commonjs/components/Message/Message.js +1 -1
  114. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +1 -1
  115. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  116. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  117. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +1 -1
  118. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  119. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +1 -1
  120. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  121. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -1
  122. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +1 -1
  123. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  124. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +1 -1
  125. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +2 -2
  126. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  127. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  128. package/lib/commonjs/components/Message/hooks/useMessageActions.js +1 -1
  129. package/lib/commonjs/components/MessageInput/AttachButton.js +1 -1
  130. package/lib/commonjs/components/MessageInput/CommandsButton.js +1 -1
  131. package/lib/commonjs/components/MessageInput/CooldownTimer.js +1 -1
  132. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
  133. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +1 -1
  134. package/lib/commonjs/components/MessageInput/InputButtons.js +1 -1
  135. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -1
  136. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +1 -1
  137. package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
  138. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  139. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  140. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +1 -1
  141. package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  142. package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +1 -1
  143. package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  144. package/lib/commonjs/components/MessageList/DateHeader.js +1 -1
  145. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +1 -1
  146. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  147. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  148. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  149. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +1 -1
  150. package/lib/commonjs/components/MessageList/MessageList.js +140 -112
  151. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  152. package/lib/commonjs/components/MessageList/MessageSystem.js +1 -1
  153. package/lib/commonjs/components/MessageList/NetworkDownIndicator.js +1 -1
  154. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  155. package/lib/commonjs/components/MessageList/TypingIndicator.js +1 -1
  156. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +1 -1
  157. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +1 -1
  158. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +1 -1
  159. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +1 -1
  160. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +1 -1
  161. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +1 -1
  162. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +1 -1
  163. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  164. package/lib/commonjs/components/ProgressControl/ProgressControl.js +1 -1
  165. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  166. package/lib/commonjs/components/Reply/Reply.js +1 -1
  167. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  168. package/lib/commonjs/components/Thread/Thread.js +1 -1
  169. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -1
  170. package/lib/commonjs/components/index.js +26 -13
  171. package/lib/commonjs/components/index.js.map +1 -1
  172. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  173. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  174. package/lib/commonjs/contexts/channelContext/ChannelContext.js +3 -3
  175. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  176. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +1 -1
  177. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  178. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +5 -5
  179. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  180. package/lib/commonjs/contexts/chatContext/ChatContext.js +3 -3
  181. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  182. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +14 -15
  183. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  184. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  185. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -1
  186. package/lib/commonjs/contexts/messageContext/MessageContext.js +1 -1
  187. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +1 -1
  188. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  189. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  190. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +1 -1
  191. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  192. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +13 -26
  193. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  194. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  195. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +3 -3
  196. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  197. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  198. package/lib/commonjs/contexts/themeContext/ThemeContext.js +1 -1
  199. package/lib/commonjs/contexts/threadContext/ThreadContext.js +1 -1
  200. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  201. package/lib/commonjs/contexts/typingContext/TypingContext.js +1 -1
  202. package/lib/commonjs/{components/Attachment/hooks → hooks}/useLoadingImage.js +10 -0
  203. package/lib/commonjs/hooks/useLoadingImage.js.map +1 -0
  204. package/lib/commonjs/icons/ArrowRight.js +1 -1
  205. package/lib/commonjs/icons/AtMentions.js +1 -1
  206. package/lib/commonjs/icons/Attach.js +1 -1
  207. package/lib/commonjs/icons/Audio.js +1 -1
  208. package/lib/commonjs/icons/CSV.js +1 -1
  209. package/lib/commonjs/icons/Camera.js +1 -1
  210. package/lib/commonjs/icons/Check.js +1 -1
  211. package/lib/commonjs/icons/CheckAll.js +1 -1
  212. package/lib/commonjs/icons/CheckSend.js +1 -1
  213. package/lib/commonjs/icons/CircleClose.js +1 -1
  214. package/lib/commonjs/icons/CirclePlus.js +1 -1
  215. package/lib/commonjs/icons/CircleRight.js +1 -1
  216. package/lib/commonjs/icons/Close.js +1 -1
  217. package/lib/commonjs/icons/Copy.js +1 -1
  218. package/lib/commonjs/icons/CurveLineLeftUp.js +1 -1
  219. package/lib/commonjs/icons/DOC.js +1 -1
  220. package/lib/commonjs/icons/DOCX.js +1 -1
  221. package/lib/commonjs/icons/Delete.js +1 -1
  222. package/lib/commonjs/icons/Down.js +1 -1
  223. package/lib/commonjs/icons/DownloadArrow.js +1 -1
  224. package/lib/commonjs/icons/DownloadCloud.js +1 -1
  225. package/lib/commonjs/icons/Edit.js +1 -1
  226. package/lib/commonjs/icons/Error.js +1 -1
  227. package/lib/commonjs/icons/Eye.js +1 -1
  228. package/lib/commonjs/icons/Flag.js +1 -1
  229. package/lib/commonjs/icons/Folder.js +1 -1
  230. package/lib/commonjs/icons/GenericFile.js +1 -1
  231. package/lib/commonjs/icons/GiphyIcon.js +1 -1
  232. package/lib/commonjs/icons/Grid.js +1 -1
  233. package/lib/commonjs/icons/Group.js +1 -1
  234. package/lib/commonjs/icons/HTML.js +1 -1
  235. package/lib/commonjs/icons/Imgur.js +1 -1
  236. package/lib/commonjs/icons/LOLReaction.js +1 -1
  237. package/lib/commonjs/icons/Lightning.js +1 -1
  238. package/lib/commonjs/icons/Link.js +1 -1
  239. package/lib/commonjs/icons/Loading.js +1 -1
  240. package/lib/commonjs/icons/Logo.js +1 -1
  241. package/lib/commonjs/icons/LoveReaction.js +1 -1
  242. package/lib/commonjs/icons/MD.js +1 -1
  243. package/lib/commonjs/icons/MailOpen.js +1 -1
  244. package/lib/commonjs/icons/MenuPointHorizontal.js +1 -1
  245. package/lib/commonjs/icons/MenuPointVertical.js +1 -1
  246. package/lib/commonjs/icons/MessageFlag.js +1 -1
  247. package/lib/commonjs/icons/MessageIcon.js +1 -1
  248. package/lib/commonjs/icons/Mute.js +1 -1
  249. package/lib/commonjs/icons/Notification.js +1 -1
  250. package/lib/commonjs/icons/ODT.js +1 -1
  251. package/lib/commonjs/icons/PDF.js +1 -1
  252. package/lib/commonjs/icons/PPT.js +1 -1
  253. package/lib/commonjs/icons/PPTX.js +1 -1
  254. package/lib/commonjs/icons/Pause.js +1 -1
  255. package/lib/commonjs/icons/Picture.js +1 -1
  256. package/lib/commonjs/icons/Pin.js +1 -1
  257. package/lib/commonjs/icons/PinHeader.js +1 -1
  258. package/lib/commonjs/icons/Play.js +1 -1
  259. package/lib/commonjs/icons/RAR.js +1 -1
  260. package/lib/commonjs/icons/RTF.js +1 -1
  261. package/lib/commonjs/icons/Recorder.js +1 -1
  262. package/lib/commonjs/icons/Refresh.js +1 -1
  263. package/lib/commonjs/icons/SEVEN_Z.js +1 -1
  264. package/lib/commonjs/icons/Search.js +1 -1
  265. package/lib/commonjs/icons/SendRight.js +1 -1
  266. package/lib/commonjs/icons/SendUp.js +1 -1
  267. package/lib/commonjs/icons/Share.js +1 -1
  268. package/lib/commonjs/icons/ShareRightArrow.js +1 -1
  269. package/lib/commonjs/icons/Smile.js +1 -1
  270. package/lib/commonjs/icons/Sound.js +1 -1
  271. package/lib/commonjs/icons/TAR.js +1 -1
  272. package/lib/commonjs/icons/TXT.js +1 -1
  273. package/lib/commonjs/icons/ThreadReply.js +1 -1
  274. package/lib/commonjs/icons/ThumbsDownReaction.js +1 -1
  275. package/lib/commonjs/icons/ThumbsUpReaction.js +1 -1
  276. package/lib/commonjs/icons/Time.js +1 -1
  277. package/lib/commonjs/icons/Unknown.js +1 -1
  278. package/lib/commonjs/icons/Unpin.js +1 -1
  279. package/lib/commonjs/icons/User.js +1 -1
  280. package/lib/commonjs/icons/UserAdd.js +1 -1
  281. package/lib/commonjs/icons/UserAdmin.js +1 -1
  282. package/lib/commonjs/icons/UserDelete.js +1 -1
  283. package/lib/commonjs/icons/UserMinus.js +1 -1
  284. package/lib/commonjs/icons/Video.js +1 -1
  285. package/lib/commonjs/icons/Warning.js +1 -1
  286. package/lib/commonjs/icons/WutReaction.js +1 -1
  287. package/lib/commonjs/icons/XLS.js +1 -1
  288. package/lib/commonjs/icons/XLSX.js +1 -1
  289. package/lib/commonjs/icons/ZIP.js +1 -1
  290. package/lib/commonjs/icons/utils/base.js +1 -1
  291. package/lib/commonjs/index.js +22 -1
  292. package/lib/commonjs/index.js.map +1 -1
  293. package/lib/commonjs/mock-builders/DB/consts.js +15 -0
  294. package/lib/commonjs/mock-builders/DB/consts.js.map +1 -0
  295. package/lib/commonjs/mock-builders/DB/mock.js +113 -0
  296. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -0
  297. package/lib/commonjs/mock-builders/event/memberAdded.js +17 -0
  298. package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -0
  299. package/lib/commonjs/mock-builders/event/memberRemoved.js +17 -0
  300. package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -0
  301. package/lib/commonjs/mock-builders/event/memberUpdated.js +17 -0
  302. package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -0
  303. package/lib/commonjs/mock-builders/event/reactionDeleted.js +18 -0
  304. package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -0
  305. package/lib/commonjs/mock-builders/event/reactionNew.js +18 -0
  306. package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -0
  307. package/lib/commonjs/mock-builders/event/reactionUpdated.js +18 -0
  308. package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -0
  309. package/lib/commonjs/mock-builders/generator/reaction.js +1 -1
  310. package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
  311. package/lib/commonjs/store/QuickSqliteClient.js +160 -0
  312. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -0
  313. package/lib/commonjs/store/apis/deleteChannel.js +26 -0
  314. package/lib/commonjs/store/apis/deleteChannel.js.map +1 -0
  315. package/lib/commonjs/store/apis/deleteMember.js +28 -0
  316. package/lib/commonjs/store/apis/deleteMember.js.map +1 -0
  317. package/lib/commonjs/store/apis/deleteMessagesForChannel.js +26 -0
  318. package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -0
  319. package/lib/commonjs/store/apis/deleteReactions.js +28 -0
  320. package/lib/commonjs/store/apis/deleteReactions.js.map +1 -0
  321. package/lib/commonjs/store/apis/getAllChannelIds.js +16 -0
  322. package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -0
  323. package/lib/commonjs/store/apis/getChannelMessages.js +45 -0
  324. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -0
  325. package/lib/commonjs/store/apis/getChannels.js +47 -0
  326. package/lib/commonjs/store/apis/getChannels.js.map +1 -0
  327. package/lib/commonjs/store/apis/getChannelsForFilterSort.js +37 -0
  328. package/lib/commonjs/store/apis/getChannelsForFilterSort.js.map +1 -0
  329. package/lib/commonjs/store/apis/getLastSyncedAt.js +23 -0
  330. package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -0
  331. package/lib/commonjs/store/apis/getMembers.js +25 -0
  332. package/lib/commonjs/store/apis/getMembers.js.map +1 -0
  333. package/lib/commonjs/store/apis/getReads.js +25 -0
  334. package/lib/commonjs/store/apis/getReads.js.map +1 -0
  335. package/lib/commonjs/store/apis/index.js +264 -0
  336. package/lib/commonjs/store/apis/index.js.map +1 -0
  337. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js +31 -0
  338. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -0
  339. package/lib/commonjs/store/apis/queries/selectChannels.js +30 -0
  340. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -0
  341. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js +27 -0
  342. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -0
  343. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js +27 -0
  344. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -0
  345. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js +27 -0
  346. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -0
  347. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js +27 -0
  348. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -0
  349. package/lib/commonjs/store/apis/updateMessage.js +69 -0
  350. package/lib/commonjs/store/apis/updateMessage.js.map +1 -0
  351. package/lib/commonjs/store/apis/updateReaction.js +53 -0
  352. package/lib/commonjs/store/apis/updateReaction.js.map +1 -0
  353. package/lib/commonjs/store/apis/upsertChannelData.js +26 -0
  354. package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -0
  355. package/lib/commonjs/store/apis/upsertChannels.js +83 -0
  356. package/lib/commonjs/store/apis/upsertChannels.js.map +1 -0
  357. package/lib/commonjs/store/apis/upsertCidsForQuery.js +34 -0
  358. package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -0
  359. package/lib/commonjs/store/apis/upsertLastSyncedAt.js +22 -0
  360. package/lib/commonjs/store/apis/upsertLastSyncedAt.js.map +1 -0
  361. package/lib/commonjs/store/apis/upsertMembers.js +39 -0
  362. package/lib/commonjs/store/apis/upsertMembers.js.map +1 -0
  363. package/lib/commonjs/store/apis/upsertMessages.js +52 -0
  364. package/lib/commonjs/store/apis/upsertMessages.js.map +1 -0
  365. package/lib/commonjs/store/apis/upsertReads.js +39 -0
  366. package/lib/commonjs/store/apis/upsertReads.js.map +1 -0
  367. package/lib/commonjs/store/apis/utils/convertFilterSortToQuery.js +13 -0
  368. package/lib/commonjs/store/apis/utils/convertFilterSortToQuery.js.map +1 -0
  369. package/lib/commonjs/store/constants.js +11 -0
  370. package/lib/commonjs/store/constants.js.map +1 -0
  371. package/lib/commonjs/store/mappers/mapChannelDataToStorable.js +67 -0
  372. package/lib/commonjs/store/mappers/mapChannelDataToStorable.js.map +1 -0
  373. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js +12 -0
  374. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -0
  375. package/lib/commonjs/store/mappers/mapMemberToStorable.js +39 -0
  376. package/lib/commonjs/store/mappers/mapMemberToStorable.js.map +1 -0
  377. package/lib/commonjs/store/mappers/mapMessageToStorable.js +42 -0
  378. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -0
  379. package/lib/commonjs/store/mappers/mapReactionToStorable.js +34 -0
  380. package/lib/commonjs/store/mappers/mapReactionToStorable.js.map +1 -0
  381. package/lib/commonjs/store/mappers/mapReadToStorable.js +23 -0
  382. package/lib/commonjs/store/mappers/mapReadToStorable.js.map +1 -0
  383. package/lib/commonjs/store/mappers/mapStorableToChannel.js +65 -0
  384. package/lib/commonjs/store/mappers/mapStorableToChannel.js.map +1 -0
  385. package/lib/commonjs/store/mappers/mapStorableToMember.js +38 -0
  386. package/lib/commonjs/store/mappers/mapStorableToMember.js.map +1 -0
  387. package/lib/commonjs/store/mappers/mapStorableToMessage.js +50 -0
  388. package/lib/commonjs/store/mappers/mapStorableToMessage.js.map +1 -0
  389. package/lib/commonjs/store/mappers/mapStorableToReaction.js +31 -0
  390. package/lib/commonjs/store/mappers/mapStorableToReaction.js.map +1 -0
  391. package/lib/commonjs/store/mappers/mapStorableToRead.js +20 -0
  392. package/lib/commonjs/store/mappers/mapStorableToRead.js.map +1 -0
  393. package/lib/commonjs/store/mappers/mapStorableToUser.js +31 -0
  394. package/lib/commonjs/store/mappers/mapStorableToUser.js.map +1 -0
  395. package/lib/commonjs/store/mappers/mapUserToStorable.js +34 -0
  396. package/lib/commonjs/store/mappers/mapUserToStorable.js.map +1 -0
  397. package/lib/commonjs/store/schema.js +161 -0
  398. package/lib/commonjs/store/schema.js.map +1 -0
  399. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js +37 -0
  400. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -0
  401. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +35 -0
  402. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -0
  403. package/lib/commonjs/store/sqlite-utils/createDeleteQuery.js +14 -0
  404. package/lib/commonjs/store/sqlite-utils/createDeleteQuery.js.map +1 -0
  405. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +26 -0
  406. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -0
  407. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +29 -0
  408. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -0
  409. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +30 -0
  410. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -0
  411. package/lib/commonjs/store/sqlite-utils/printRow.js +23 -0
  412. package/lib/commonjs/store/sqlite-utils/printRow.js.map +1 -0
  413. package/lib/commonjs/store/types.js +4 -0
  414. package/lib/commonjs/store/types.js.map +1 -0
  415. package/lib/commonjs/test-utils/BetterSqlite.js +54 -0
  416. package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -0
  417. package/lib/commonjs/version.json +1 -1
  418. package/lib/module/components/Attachment/Attachment.js +1 -1
  419. package/lib/module/components/Attachment/AttachmentActions.js +1 -1
  420. package/lib/module/components/Attachment/AudioAttachment.js +1 -1
  421. package/lib/module/components/Attachment/Card.js +1 -1
  422. package/lib/module/components/Attachment/FileAttachment.js +1 -1
  423. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  424. package/lib/module/components/Attachment/FileIcon.js +1 -1
  425. package/lib/module/components/Attachment/Gallery.js +19 -19
  426. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  427. package/lib/module/components/Attachment/GalleryImage.js +1 -1
  428. package/lib/module/components/Attachment/Giphy.js +40 -40
  429. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  430. package/lib/module/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  431. package/lib/module/components/Attachment/ImageLoadingIndicator.js +1 -1
  432. package/lib/module/components/Attachment/VideoThumbnail.js +1 -1
  433. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  434. package/lib/module/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  435. package/lib/module/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  436. package/lib/module/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  437. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  438. package/lib/module/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  439. package/lib/module/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  440. package/lib/module/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  441. package/lib/module/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  442. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  443. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  444. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  445. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  446. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  447. package/lib/module/components/Avatar/Avatar.js +31 -18
  448. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  449. package/lib/module/components/Avatar/GroupAvatar.js +28 -21
  450. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  451. package/lib/module/components/Channel/Channel.js +227 -257
  452. package/lib/module/components/Channel/Channel.js.map +1 -1
  453. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -0
  454. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  455. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +2 -0
  456. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  457. package/lib/module/components/ChannelList/ChannelList.js +41 -10
  458. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  459. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  460. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  461. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  462. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  463. package/lib/module/components/ChannelList/ChannelListMessenger.js +20 -8
  464. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  465. package/lib/module/components/ChannelList/Skeleton.js +1 -1
  466. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  467. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  468. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js +2 -2
  469. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  470. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js +2 -2
  471. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  472. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js +2 -2
  473. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  474. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js +2 -2
  475. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  476. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  477. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  478. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  479. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  480. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +2 -2
  481. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  482. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js +2 -2
  483. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  484. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js +4 -4
  485. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  486. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +57 -22
  487. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  488. package/lib/module/components/ChannelPreview/ChannelAvatar.js +1 -1
  489. package/lib/module/components/ChannelPreview/ChannelPreview.js +3 -3
  490. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  491. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +8 -6
  492. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  493. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  494. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  495. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  496. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  497. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  498. package/lib/module/components/Chat/Chat.js +45 -9
  499. package/lib/module/components/Chat/Chat.js.map +1 -1
  500. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +144 -0
  501. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -0
  502. package/lib/module/components/Chat/hooks/useConnectionRecovered.js +171 -0
  503. package/lib/module/components/Chat/hooks/useConnectionRecovered.js.map +1 -0
  504. package/lib/module/components/Chat/hooks/useCreateChatContext.js +7 -3
  505. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  506. package/lib/module/components/Chat/hooks/useMutedUsers.js +3 -3
  507. package/lib/module/components/Chat/hooks/useMutedUsers.js.map +1 -1
  508. package/lib/module/components/Chat/hooks/useSyncDatabase.js +29 -0
  509. package/lib/module/components/Chat/hooks/useSyncDatabase.js.map +1 -0
  510. package/lib/module/components/ImageGallery/ImageGallery.js +36 -30
  511. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  512. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  513. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  514. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  515. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  516. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  517. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  518. package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -3
  519. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  520. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +1 -1
  521. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js +6 -0
  522. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  523. package/lib/module/components/Indicators/EmptyStateIndicator.js +1 -1
  524. package/lib/module/components/Indicators/LoadingDot.js +1 -1
  525. package/lib/module/components/Indicators/LoadingDots.js +1 -1
  526. package/lib/module/components/Indicators/LoadingErrorIndicator.js +1 -1
  527. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  528. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  529. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  530. package/lib/module/components/Message/Message.js +1 -1
  531. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +1 -1
  532. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  533. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  534. package/lib/module/components/Message/MessageSimple/MessageFooter.js +1 -1
  535. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  536. package/lib/module/components/Message/MessageSimple/MessageReplies.js +1 -1
  537. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  538. package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -1
  539. package/lib/module/components/Message/MessageSimple/MessageStatus.js +1 -1
  540. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  541. package/lib/module/components/Message/MessageSimple/ReactionList.js +1 -1
  542. package/lib/module/components/Message/MessageSimple/utils/renderText.js +2 -2
  543. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  544. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  545. package/lib/module/components/Message/hooks/useMessageActions.js +1 -1
  546. package/lib/module/components/MessageInput/AttachButton.js +1 -1
  547. package/lib/module/components/MessageInput/CommandsButton.js +1 -1
  548. package/lib/module/components/MessageInput/CooldownTimer.js +1 -1
  549. package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
  550. package/lib/module/components/MessageInput/ImageUploadPreview.js +1 -1
  551. package/lib/module/components/MessageInput/InputButtons.js +1 -1
  552. package/lib/module/components/MessageInput/MessageInput.js +1 -1
  553. package/lib/module/components/MessageInput/MoreOptionsButton.js +1 -1
  554. package/lib/module/components/MessageInput/SendButton.js +1 -1
  555. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  556. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  557. package/lib/module/components/MessageInput/UploadProgressIndicator.js +1 -1
  558. package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  559. package/lib/module/components/MessageInput/components/InputGiphySearch.js +1 -1
  560. package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  561. package/lib/module/components/MessageList/DateHeader.js +1 -1
  562. package/lib/module/components/MessageList/InlineDateSeparator.js +1 -1
  563. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  564. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  565. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  566. package/lib/module/components/MessageList/InlineUnreadIndicator.js +1 -1
  567. package/lib/module/components/MessageList/MessageList.js +140 -112
  568. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  569. package/lib/module/components/MessageList/MessageSystem.js +1 -1
  570. package/lib/module/components/MessageList/NetworkDownIndicator.js +1 -1
  571. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  572. package/lib/module/components/MessageList/TypingIndicator.js +1 -1
  573. package/lib/module/components/MessageList/TypingIndicatorContainer.js +1 -1
  574. package/lib/module/components/MessageOverlay/MessageActionList.js +1 -1
  575. package/lib/module/components/MessageOverlay/MessageActionListItem.js +1 -1
  576. package/lib/module/components/MessageOverlay/MessageOverlay.js +1 -1
  577. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +1 -1
  578. package/lib/module/components/MessageOverlay/OverlayReactionList.js +1 -1
  579. package/lib/module/components/MessageOverlay/OverlayReactions.js +1 -1
  580. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  581. package/lib/module/components/ProgressControl/ProgressControl.js +1 -1
  582. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  583. package/lib/module/components/Reply/Reply.js +1 -1
  584. package/lib/module/components/Spinner/Spinner.js +1 -1
  585. package/lib/module/components/Thread/Thread.js +1 -1
  586. package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -1
  587. package/lib/module/components/index.js +26 -13
  588. package/lib/module/components/index.js.map +1 -1
  589. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  590. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  591. package/lib/module/contexts/channelContext/ChannelContext.js +3 -3
  592. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  593. package/lib/module/contexts/channelsContext/ChannelsContext.js +1 -1
  594. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  595. package/lib/module/contexts/channelsStateContext/useChannelState.js +5 -5
  596. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  597. package/lib/module/contexts/chatContext/ChatContext.js +3 -3
  598. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  599. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +14 -15
  600. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  601. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  602. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -1
  603. package/lib/module/contexts/messageContext/MessageContext.js +1 -1
  604. package/lib/module/contexts/messageInputContext/MessageInputContext.js +1 -1
  605. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  606. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  607. package/lib/module/contexts/messagesContext/MessagesContext.js +1 -1
  608. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  609. package/lib/module/contexts/overlayContext/OverlayProvider.js +13 -26
  610. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  611. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  612. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +3 -3
  613. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  614. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  615. package/lib/module/contexts/themeContext/ThemeContext.js +1 -1
  616. package/lib/module/contexts/threadContext/ThreadContext.js +1 -1
  617. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  618. package/lib/module/contexts/typingContext/TypingContext.js +1 -1
  619. package/lib/module/{components/Attachment/hooks → hooks}/useLoadingImage.js +10 -0
  620. package/lib/module/hooks/useLoadingImage.js.map +1 -0
  621. package/lib/module/icons/ArrowRight.js +1 -1
  622. package/lib/module/icons/AtMentions.js +1 -1
  623. package/lib/module/icons/Attach.js +1 -1
  624. package/lib/module/icons/Audio.js +1 -1
  625. package/lib/module/icons/CSV.js +1 -1
  626. package/lib/module/icons/Camera.js +1 -1
  627. package/lib/module/icons/Check.js +1 -1
  628. package/lib/module/icons/CheckAll.js +1 -1
  629. package/lib/module/icons/CheckSend.js +1 -1
  630. package/lib/module/icons/CircleClose.js +1 -1
  631. package/lib/module/icons/CirclePlus.js +1 -1
  632. package/lib/module/icons/CircleRight.js +1 -1
  633. package/lib/module/icons/Close.js +1 -1
  634. package/lib/module/icons/Copy.js +1 -1
  635. package/lib/module/icons/CurveLineLeftUp.js +1 -1
  636. package/lib/module/icons/DOC.js +1 -1
  637. package/lib/module/icons/DOCX.js +1 -1
  638. package/lib/module/icons/Delete.js +1 -1
  639. package/lib/module/icons/Down.js +1 -1
  640. package/lib/module/icons/DownloadArrow.js +1 -1
  641. package/lib/module/icons/DownloadCloud.js +1 -1
  642. package/lib/module/icons/Edit.js +1 -1
  643. package/lib/module/icons/Error.js +1 -1
  644. package/lib/module/icons/Eye.js +1 -1
  645. package/lib/module/icons/Flag.js +1 -1
  646. package/lib/module/icons/Folder.js +1 -1
  647. package/lib/module/icons/GenericFile.js +1 -1
  648. package/lib/module/icons/GiphyIcon.js +1 -1
  649. package/lib/module/icons/Grid.js +1 -1
  650. package/lib/module/icons/Group.js +1 -1
  651. package/lib/module/icons/HTML.js +1 -1
  652. package/lib/module/icons/Imgur.js +1 -1
  653. package/lib/module/icons/LOLReaction.js +1 -1
  654. package/lib/module/icons/Lightning.js +1 -1
  655. package/lib/module/icons/Link.js +1 -1
  656. package/lib/module/icons/Loading.js +1 -1
  657. package/lib/module/icons/Logo.js +1 -1
  658. package/lib/module/icons/LoveReaction.js +1 -1
  659. package/lib/module/icons/MD.js +1 -1
  660. package/lib/module/icons/MailOpen.js +1 -1
  661. package/lib/module/icons/MenuPointHorizontal.js +1 -1
  662. package/lib/module/icons/MenuPointVertical.js +1 -1
  663. package/lib/module/icons/MessageFlag.js +1 -1
  664. package/lib/module/icons/MessageIcon.js +1 -1
  665. package/lib/module/icons/Mute.js +1 -1
  666. package/lib/module/icons/Notification.js +1 -1
  667. package/lib/module/icons/ODT.js +1 -1
  668. package/lib/module/icons/PDF.js +1 -1
  669. package/lib/module/icons/PPT.js +1 -1
  670. package/lib/module/icons/PPTX.js +1 -1
  671. package/lib/module/icons/Pause.js +1 -1
  672. package/lib/module/icons/Picture.js +1 -1
  673. package/lib/module/icons/Pin.js +1 -1
  674. package/lib/module/icons/PinHeader.js +1 -1
  675. package/lib/module/icons/Play.js +1 -1
  676. package/lib/module/icons/RAR.js +1 -1
  677. package/lib/module/icons/RTF.js +1 -1
  678. package/lib/module/icons/Recorder.js +1 -1
  679. package/lib/module/icons/Refresh.js +1 -1
  680. package/lib/module/icons/SEVEN_Z.js +1 -1
  681. package/lib/module/icons/Search.js +1 -1
  682. package/lib/module/icons/SendRight.js +1 -1
  683. package/lib/module/icons/SendUp.js +1 -1
  684. package/lib/module/icons/Share.js +1 -1
  685. package/lib/module/icons/ShareRightArrow.js +1 -1
  686. package/lib/module/icons/Smile.js +1 -1
  687. package/lib/module/icons/Sound.js +1 -1
  688. package/lib/module/icons/TAR.js +1 -1
  689. package/lib/module/icons/TXT.js +1 -1
  690. package/lib/module/icons/ThreadReply.js +1 -1
  691. package/lib/module/icons/ThumbsDownReaction.js +1 -1
  692. package/lib/module/icons/ThumbsUpReaction.js +1 -1
  693. package/lib/module/icons/Time.js +1 -1
  694. package/lib/module/icons/Unknown.js +1 -1
  695. package/lib/module/icons/Unpin.js +1 -1
  696. package/lib/module/icons/User.js +1 -1
  697. package/lib/module/icons/UserAdd.js +1 -1
  698. package/lib/module/icons/UserAdmin.js +1 -1
  699. package/lib/module/icons/UserDelete.js +1 -1
  700. package/lib/module/icons/UserMinus.js +1 -1
  701. package/lib/module/icons/Video.js +1 -1
  702. package/lib/module/icons/Warning.js +1 -1
  703. package/lib/module/icons/WutReaction.js +1 -1
  704. package/lib/module/icons/XLS.js +1 -1
  705. package/lib/module/icons/XLSX.js +1 -1
  706. package/lib/module/icons/ZIP.js +1 -1
  707. package/lib/module/icons/utils/base.js +1 -1
  708. package/lib/module/index.js +22 -1
  709. package/lib/module/index.js.map +1 -1
  710. package/lib/module/mock-builders/DB/consts.js +15 -0
  711. package/lib/module/mock-builders/DB/consts.js.map +1 -0
  712. package/lib/module/mock-builders/DB/mock.js +113 -0
  713. package/lib/module/mock-builders/DB/mock.js.map +1 -0
  714. package/lib/module/mock-builders/event/memberAdded.js +17 -0
  715. package/lib/module/mock-builders/event/memberAdded.js.map +1 -0
  716. package/lib/module/mock-builders/event/memberRemoved.js +17 -0
  717. package/lib/module/mock-builders/event/memberRemoved.js.map +1 -0
  718. package/lib/module/mock-builders/event/memberUpdated.js +17 -0
  719. package/lib/module/mock-builders/event/memberUpdated.js.map +1 -0
  720. package/lib/module/mock-builders/event/reactionDeleted.js +18 -0
  721. package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -0
  722. package/lib/module/mock-builders/event/reactionNew.js +18 -0
  723. package/lib/module/mock-builders/event/reactionNew.js.map +1 -0
  724. package/lib/module/mock-builders/event/reactionUpdated.js +18 -0
  725. package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -0
  726. package/lib/module/mock-builders/generator/reaction.js +1 -1
  727. package/lib/module/mock-builders/generator/reaction.js.map +1 -1
  728. package/lib/module/store/QuickSqliteClient.js +160 -0
  729. package/lib/module/store/QuickSqliteClient.js.map +1 -0
  730. package/lib/module/store/apis/deleteChannel.js +26 -0
  731. package/lib/module/store/apis/deleteChannel.js.map +1 -0
  732. package/lib/module/store/apis/deleteMember.js +28 -0
  733. package/lib/module/store/apis/deleteMember.js.map +1 -0
  734. package/lib/module/store/apis/deleteMessagesForChannel.js +26 -0
  735. package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -0
  736. package/lib/module/store/apis/deleteReactions.js +28 -0
  737. package/lib/module/store/apis/deleteReactions.js.map +1 -0
  738. package/lib/module/store/apis/getAllChannelIds.js +16 -0
  739. package/lib/module/store/apis/getAllChannelIds.js.map +1 -0
  740. package/lib/module/store/apis/getChannelMessages.js +45 -0
  741. package/lib/module/store/apis/getChannelMessages.js.map +1 -0
  742. package/lib/module/store/apis/getChannels.js +47 -0
  743. package/lib/module/store/apis/getChannels.js.map +1 -0
  744. package/lib/module/store/apis/getChannelsForFilterSort.js +37 -0
  745. package/lib/module/store/apis/getChannelsForFilterSort.js.map +1 -0
  746. package/lib/module/store/apis/getLastSyncedAt.js +23 -0
  747. package/lib/module/store/apis/getLastSyncedAt.js.map +1 -0
  748. package/lib/module/store/apis/getMembers.js +25 -0
  749. package/lib/module/store/apis/getMembers.js.map +1 -0
  750. package/lib/module/store/apis/getReads.js +25 -0
  751. package/lib/module/store/apis/getReads.js.map +1 -0
  752. package/lib/module/store/apis/index.js +264 -0
  753. package/lib/module/store/apis/index.js.map +1 -0
  754. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js +31 -0
  755. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -0
  756. package/lib/module/store/apis/queries/selectChannels.js +30 -0
  757. package/lib/module/store/apis/queries/selectChannels.js.map +1 -0
  758. package/lib/module/store/apis/queries/selectMembersForChannels.js +27 -0
  759. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -0
  760. package/lib/module/store/apis/queries/selectMessagesForChannels.js +27 -0
  761. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -0
  762. package/lib/module/store/apis/queries/selectReactionsForMessages.js +27 -0
  763. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -0
  764. package/lib/module/store/apis/queries/selectReadsForChannels.js +27 -0
  765. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -0
  766. package/lib/module/store/apis/updateMessage.js +69 -0
  767. package/lib/module/store/apis/updateMessage.js.map +1 -0
  768. package/lib/module/store/apis/updateReaction.js +53 -0
  769. package/lib/module/store/apis/updateReaction.js.map +1 -0
  770. package/lib/module/store/apis/upsertChannelData.js +26 -0
  771. package/lib/module/store/apis/upsertChannelData.js.map +1 -0
  772. package/lib/module/store/apis/upsertChannels.js +83 -0
  773. package/lib/module/store/apis/upsertChannels.js.map +1 -0
  774. package/lib/module/store/apis/upsertCidsForQuery.js +34 -0
  775. package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -0
  776. package/lib/module/store/apis/upsertLastSyncedAt.js +22 -0
  777. package/lib/module/store/apis/upsertLastSyncedAt.js.map +1 -0
  778. package/lib/module/store/apis/upsertMembers.js +39 -0
  779. package/lib/module/store/apis/upsertMembers.js.map +1 -0
  780. package/lib/module/store/apis/upsertMessages.js +52 -0
  781. package/lib/module/store/apis/upsertMessages.js.map +1 -0
  782. package/lib/module/store/apis/upsertReads.js +39 -0
  783. package/lib/module/store/apis/upsertReads.js.map +1 -0
  784. package/lib/module/store/apis/utils/convertFilterSortToQuery.js +13 -0
  785. package/lib/module/store/apis/utils/convertFilterSortToQuery.js.map +1 -0
  786. package/lib/module/store/constants.js +11 -0
  787. package/lib/module/store/constants.js.map +1 -0
  788. package/lib/module/store/mappers/mapChannelDataToStorable.js +67 -0
  789. package/lib/module/store/mappers/mapChannelDataToStorable.js.map +1 -0
  790. package/lib/module/store/mappers/mapDateTimeToStorable.js +12 -0
  791. package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -0
  792. package/lib/module/store/mappers/mapMemberToStorable.js +39 -0
  793. package/lib/module/store/mappers/mapMemberToStorable.js.map +1 -0
  794. package/lib/module/store/mappers/mapMessageToStorable.js +42 -0
  795. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -0
  796. package/lib/module/store/mappers/mapReactionToStorable.js +34 -0
  797. package/lib/module/store/mappers/mapReactionToStorable.js.map +1 -0
  798. package/lib/module/store/mappers/mapReadToStorable.js +23 -0
  799. package/lib/module/store/mappers/mapReadToStorable.js.map +1 -0
  800. package/lib/module/store/mappers/mapStorableToChannel.js +65 -0
  801. package/lib/module/store/mappers/mapStorableToChannel.js.map +1 -0
  802. package/lib/module/store/mappers/mapStorableToMember.js +38 -0
  803. package/lib/module/store/mappers/mapStorableToMember.js.map +1 -0
  804. package/lib/module/store/mappers/mapStorableToMessage.js +50 -0
  805. package/lib/module/store/mappers/mapStorableToMessage.js.map +1 -0
  806. package/lib/module/store/mappers/mapStorableToReaction.js +31 -0
  807. package/lib/module/store/mappers/mapStorableToReaction.js.map +1 -0
  808. package/lib/module/store/mappers/mapStorableToRead.js +20 -0
  809. package/lib/module/store/mappers/mapStorableToRead.js.map +1 -0
  810. package/lib/module/store/mappers/mapStorableToUser.js +31 -0
  811. package/lib/module/store/mappers/mapStorableToUser.js.map +1 -0
  812. package/lib/module/store/mappers/mapUserToStorable.js +34 -0
  813. package/lib/module/store/mappers/mapUserToStorable.js.map +1 -0
  814. package/lib/module/store/schema.js +161 -0
  815. package/lib/module/store/schema.js.map +1 -0
  816. package/lib/module/store/sqlite-utils/appendWhereCluase.js +37 -0
  817. package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -0
  818. package/lib/module/store/sqlite-utils/createCreateTableQuery.js +35 -0
  819. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -0
  820. package/lib/module/store/sqlite-utils/createDeleteQuery.js +14 -0
  821. package/lib/module/store/sqlite-utils/createDeleteQuery.js.map +1 -0
  822. package/lib/module/store/sqlite-utils/createSelectQuery.js +26 -0
  823. package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -0
  824. package/lib/module/store/sqlite-utils/createUpdateQuery.js +29 -0
  825. package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -0
  826. package/lib/module/store/sqlite-utils/createUpsertQuery.js +30 -0
  827. package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -0
  828. package/lib/module/store/sqlite-utils/printRow.js +23 -0
  829. package/lib/module/store/sqlite-utils/printRow.js.map +1 -0
  830. package/lib/module/store/types.js +4 -0
  831. package/lib/module/store/types.js.map +1 -0
  832. package/lib/module/test-utils/BetterSqlite.js +54 -0
  833. package/lib/module/test-utils/BetterSqlite.js.map +1 -0
  834. package/lib/module/version.json +1 -1
  835. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  836. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  837. package/lib/typescript/components/Channel/Channel.d.ts +3 -5
  838. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  839. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +1 -1
  840. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -2
  841. package/lib/typescript/components/Chat/Chat.d.ts +4 -0
  842. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts +2 -0
  843. package/lib/typescript/components/Chat/hooks/useConnectionRecovered.d.ts +10 -0
  844. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  845. package/lib/typescript/components/Chat/hooks/useSyncDatabase.d.ts +8 -0
  846. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +1 -1
  847. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts +2 -1
  848. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  849. package/lib/typescript/components/index.d.ts +2 -1
  850. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +17 -0
  851. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +3 -1
  852. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +9 -10
  853. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +4 -0
  854. package/lib/typescript/{components/Attachment/hooks → hooks}/useLoadingImage.d.ts +0 -0
  855. package/lib/typescript/index.d.ts +3 -0
  856. package/lib/typescript/store/QuickSqliteClient.d.ts +22 -0
  857. package/lib/typescript/store/apis/deleteChannel.d.ts +4 -0
  858. package/lib/typescript/store/apis/deleteMember.d.ts +6 -0
  859. package/lib/typescript/store/apis/deleteMessagesForChannel.d.ts +4 -0
  860. package/lib/typescript/store/apis/deleteReactions.d.ts +4 -0
  861. package/lib/typescript/store/apis/getAllChannelIds.d.ts +1 -0
  862. package/lib/typescript/store/apis/getChannelMessages.d.ts +6 -0
  863. package/lib/typescript/store/apis/getChannels.d.ts +15 -0
  864. package/lib/typescript/store/apis/getChannelsForFilterSort.d.ts +17 -0
  865. package/lib/typescript/store/apis/getLastSyncedAt.d.ts +3 -0
  866. package/lib/typescript/store/apis/getMembers.d.ts +5 -0
  867. package/lib/typescript/store/apis/getReads.d.ts +5 -0
  868. package/lib/typescript/store/apis/index.d.ts +20 -0
  869. package/lib/typescript/store/apis/queries/selectChannelIdsForFilterSort.d.ts +15 -0
  870. package/lib/typescript/store/apis/queries/selectChannels.d.ts +4 -0
  871. package/lib/typescript/store/apis/queries/selectMembersForChannels.d.ts +2 -0
  872. package/lib/typescript/store/apis/queries/selectMessagesForChannels.d.ts +2 -0
  873. package/lib/typescript/store/apis/queries/selectReactionsForMessages.d.ts +2 -0
  874. package/lib/typescript/store/apis/queries/selectReadsForChannels.d.ts +2 -0
  875. package/lib/typescript/store/apis/updateMessage.d.ts +6 -0
  876. package/lib/typescript/store/apis/updateReaction.d.ts +7 -0
  877. package/lib/typescript/store/apis/upsertChannelData.d.ts +5 -0
  878. package/lib/typescript/store/apis/upsertChannels.d.ts +9 -0
  879. package/lib/typescript/store/apis/upsertCidsForQuery.d.ts +7 -0
  880. package/lib/typescript/store/apis/upsertLastSyncedAt.d.ts +4 -0
  881. package/lib/typescript/store/apis/upsertMembers.d.ts +7 -0
  882. package/lib/typescript/store/apis/upsertMessages.d.ts +6 -0
  883. package/lib/typescript/store/apis/upsertReads.d.ts +7 -0
  884. package/lib/typescript/store/apis/utils/convertFilterSortToQuery.d.ts +6 -0
  885. package/lib/typescript/store/constants.d.ts +3 -0
  886. package/lib/typescript/store/mappers/mapChannelDataToStorable.d.ts +4 -0
  887. package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -0
  888. package/lib/typescript/store/mappers/mapMemberToStorable.d.ts +7 -0
  889. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +3 -0
  890. package/lib/typescript/store/mappers/mapReactionToStorable.d.ts +3 -0
  891. package/lib/typescript/store/mappers/mapReadToStorable.d.ts +7 -0
  892. package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +4 -0
  893. package/lib/typescript/store/mappers/mapStorableToMember.d.ts +4 -0
  894. package/lib/typescript/store/mappers/mapStorableToMessage.d.ts +8 -0
  895. package/lib/typescript/store/mappers/mapStorableToReaction.d.ts +4 -0
  896. package/lib/typescript/store/mappers/mapStorableToRead.d.ts +4 -0
  897. package/lib/typescript/store/mappers/mapStorableToUser.d.ts +4 -0
  898. package/lib/typescript/store/mappers/mapUserToStorable.d.ts +3 -0
  899. package/lib/typescript/store/schema.d.ts +110 -0
  900. package/lib/typescript/store/sqlite-utils/__tests__/createSelectQuery.test.d.ts +1 -0
  901. package/lib/typescript/store/sqlite-utils/appendWhereCluase.d.ts +3 -0
  902. package/lib/typescript/store/sqlite-utils/createCreateTableQuery.d.ts +2 -0
  903. package/lib/typescript/store/sqlite-utils/createDeleteQuery.d.ts +12 -0
  904. package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +13 -0
  905. package/lib/typescript/store/sqlite-utils/createUpdateQuery.d.ts +13 -0
  906. package/lib/typescript/store/sqlite-utils/createUpsertQuery.d.ts +11 -0
  907. package/lib/typescript/store/sqlite-utils/printRow.d.ts +2 -0
  908. package/lib/typescript/store/types.d.ts +9 -0
  909. package/lib/typescript/test-utils/BetterSqlite.d.ts +8 -0
  910. package/package.json +5 -2
  911. package/src/__tests__/offline-feature.test.js +656 -0
  912. package/src/components/Attachment/Gallery.tsx +18 -17
  913. package/src/components/Attachment/Giphy.tsx +9 -10
  914. package/src/components/Avatar/Avatar.tsx +45 -31
  915. package/src/components/Avatar/GroupAvatar.tsx +46 -35
  916. package/src/components/Channel/Channel.tsx +101 -136
  917. package/src/components/Channel/hooks/useCreateChannelContext.ts +2 -0
  918. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +2 -0
  919. package/src/components/ChannelList/ChannelList.tsx +28 -8
  920. package/src/components/ChannelList/ChannelListMessenger.tsx +4 -0
  921. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +2 -0
  922. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +2 -2
  923. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +2 -2
  924. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +2 -2
  925. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +2 -2
  926. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +2 -2
  927. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +2 -2
  928. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +2 -2
  929. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +2 -2
  930. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +2 -2
  931. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +5 -4
  932. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +46 -10
  933. package/src/components/ChannelPreview/ChannelPreview.tsx +2 -2
  934. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +10 -9
  935. package/src/components/Chat/Chat.tsx +41 -4
  936. package/src/components/Chat/hooks/handleEventToSyncDB.ts +142 -0
  937. package/src/components/Chat/hooks/useConnectionRecovered.ts +92 -0
  938. package/src/components/Chat/hooks/useCreateChatContext.ts +9 -3
  939. package/src/components/Chat/hooks/useMutedUsers.ts +5 -3
  940. package/src/components/Chat/hooks/useSyncDatabase.ts +30 -0
  941. package/src/components/ImageGallery/ImageGallery.tsx +30 -18
  942. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +6 -6
  943. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -3
  944. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +3 -3
  945. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +3 -3
  946. package/src/components/ImageGallery/components/ImageGrid.tsx +3 -3
  947. package/src/components/ImageGallery/hooks/useImageGalleryGestures.tsx +16 -0
  948. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -0
  949. package/src/components/Message/MessageSimple/utils/renderText.tsx +1 -1
  950. package/src/components/MessageList/MessageList.tsx +162 -106
  951. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +6 -0
  952. package/src/components/index.ts +2 -1
  953. package/src/contexts/channelContext/ChannelContext.tsx +15 -0
  954. package/src/contexts/channelsStateContext/useChannelState.ts +2 -2
  955. package/src/contexts/chatContext/ChatContext.tsx +3 -1
  956. package/src/contexts/imageGalleryContext/ImageGalleryContext.md +1 -1
  957. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +19 -14
  958. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -5
  959. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +4 -0
  960. package/src/{components/Attachment/hooks → hooks}/useLoadingImage.tsx +9 -1
  961. package/src/index.ts +4 -0
  962. package/src/mock-builders/DB/consts.ts +2 -0
  963. package/src/mock-builders/DB/mock.ts +107 -0
  964. package/src/mock-builders/event/memberAdded.js +8 -0
  965. package/src/mock-builders/event/memberRemoved.js +8 -0
  966. package/src/mock-builders/event/memberUpdated.js +8 -0
  967. package/src/mock-builders/event/reactionDeleted.js +9 -0
  968. package/src/mock-builders/event/reactionNew.js +9 -0
  969. package/src/mock-builders/event/reactionUpdated.js +9 -0
  970. package/src/mock-builders/generator/reaction.js +1 -1
  971. package/src/store/QuickSqliteClient.ts +144 -0
  972. package/src/store/apis/deleteChannel.ts +14 -0
  973. package/src/store/apis/deleteMember.ts +25 -0
  974. package/src/store/apis/deleteMessagesForChannel.ts +19 -0
  975. package/src/store/apis/deleteReactions.ts +24 -0
  976. package/src/store/apis/getAllChannelIds.ts +7 -0
  977. package/src/store/apis/getChannelMessages.ts +50 -0
  978. package/src/store/apis/getChannels.ts +46 -0
  979. package/src/store/apis/getChannelsForFilterSort.ts +45 -0
  980. package/src/store/apis/getLastSyncedAt.ts +17 -0
  981. package/src/store/apis/getMembers.ts +26 -0
  982. package/src/store/apis/getReads.ts +26 -0
  983. package/src/store/apis/index.ts +20 -0
  984. package/src/store/apis/queries/selectChannelIdsForFilterSort.ts +38 -0
  985. package/src/store/apis/queries/selectChannels.ts +25 -0
  986. package/src/store/apis/queries/selectMembersForChannels.ts +32 -0
  987. package/src/store/apis/queries/selectMessagesForChannels.ts +40 -0
  988. package/src/store/apis/queries/selectReactionsForMessages.ts +33 -0
  989. package/src/store/apis/queries/selectReadsForChannels.ts +30 -0
  990. package/src/store/apis/updateMessage.ts +65 -0
  991. package/src/store/apis/updateReaction.ts +54 -0
  992. package/src/store/apis/upsertChannelData.ts +20 -0
  993. package/src/store/apis/upsertChannels.ts +79 -0
  994. package/src/store/apis/upsertCidsForQuery.ts +30 -0
  995. package/src/store/apis/upsertLastSyncedAt.ts +17 -0
  996. package/src/store/apis/upsertMembers.ts +41 -0
  997. package/src/store/apis/upsertMessages.ts +43 -0
  998. package/src/store/apis/upsertReads.ts +41 -0
  999. package/src/store/apis/utils/convertFilterSortToQuery.ts +14 -0
  1000. package/src/store/constants.ts +3 -0
  1001. package/src/store/mappers/mapChannelDataToStorable.ts +67 -0
  1002. package/src/store/mappers/mapDateTimeToStorable.ts +5 -0
  1003. package/src/store/mappers/mapMemberToStorable.ts +45 -0
  1004. package/src/store/mappers/mapMessageToStorable.ts +35 -0
  1005. package/src/store/mappers/mapReactionToStorable.ts +19 -0
  1006. package/src/store/mappers/mapReadToStorable.ts +25 -0
  1007. package/src/store/mappers/mapStorableToChannel.ts +69 -0
  1008. package/src/store/mappers/mapStorableToMember.ts +42 -0
  1009. package/src/store/mappers/mapStorableToMessage.ts +40 -0
  1010. package/src/store/mappers/mapStorableToReaction.ts +25 -0
  1011. package/src/store/mappers/mapStorableToRead.ts +21 -0
  1012. package/src/store/mappers/mapStorableToUser.ts +23 -0
  1013. package/src/store/mappers/mapUserToStorable.ts +18 -0
  1014. package/src/store/schema.ts +284 -0
  1015. package/src/store/sqlite-utils/__tests__/createSelectQuery.test.ts +21 -0
  1016. package/src/store/sqlite-utils/appendWhereCluase.ts +32 -0
  1017. package/src/store/sqlite-utils/createCreateTableQuery.ts +39 -0
  1018. package/src/store/sqlite-utils/createDeleteQuery.ts +23 -0
  1019. package/src/store/sqlite-utils/createSelectQuery.ts +25 -0
  1020. package/src/store/sqlite-utils/createUpdateQuery.ts +27 -0
  1021. package/src/store/sqlite-utils/createUpsertQuery.ts +48 -0
  1022. package/src/store/sqlite-utils/printRow.ts +19 -0
  1023. package/src/store/types.ts +12 -0
  1024. package/src/test-utils/BetterSqlite.js +44 -0
  1025. package/src/version.json +1 -1
  1026. package/lib/commonjs/components/Attachment/hooks/useLoadingImage.js.map +0 -1
  1027. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js +0 -45
  1028. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +0 -1
  1029. package/lib/module/components/Attachment/hooks/useLoadingImage.js.map +0 -1
  1030. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js +0 -45
  1031. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +0 -1
  1032. package/lib/typescript/components/ChannelList/hooks/listeners/useConnectionRecovered.d.ts +0 -8
  1033. package/src/components/ChannelList/hooks/listeners/useConnectionRecovered.ts +0 -41
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageList.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","props","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","deletedMessagesVisibilityType","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAtMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setImages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","TypingIndicator","TypingIndicatorContainer","theme","white_snow","colors","messageList","modifiedTheme","style","messageListLengthBeforeUpdate","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","hasMoved","setHasMoved","lastReceivedId","setLastReceivedId","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","getLastReadSafely","initialized","lastRead","undefined","channelLastRead","isUnreadMessage","message","setInitialScrollIfNeeded","current","scrollToEnd","setTimeout","updateStickyHeaderDateIfNeeded","viewableItems","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","Platform","OS","resetPaginationTrackers","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","scrollToOffset","offset","state","isUpToDate","maybeCallOnStartReached","renderItem","index","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","wrapMessageInTheme","goToMessage","groupStyles","dateSeparator","quoted_message_id","limit","callback","Promise","resolve","onError","then","maybeCallOnEndReached","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","messageId","indexOfParentInMessageList","findIndex","scrollToIndex","viewPosition","_","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateToRender","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","renderListEmptyComponent","backgroundColor","autoscrollToTopThreshold","minIndexForVisible","MessageList","enableMessageGroupingByUser","error","isChannelActive","t"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n Platform,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: MessageType<StreamChatGenerics>,\n) =>\n item.id ||\n (item.created_at\n ? typeof item.created_at === 'string'\n ? item.created_at\n : item.created_at.toISOString()\n : Date.now().toString());\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAtMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImages'> &\n Pick<PaginatedMessageListContextValue<StreamChatGenerics>, 'loadMore' | 'loadMoreRecent'> &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'deletedMessagesVisibilityType'\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<StreamChatGenerics>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<StreamChatGenerics>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<StreamChatGenerics>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/)\n * [ChatContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/)\n * [MessagesContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/messages-context/)\n * [ThreadContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/thread-context/)\n * [TranslationContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nconst MessageListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListPropsWithContext<StreamChatGenerics>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<StreamChatGenerics>({\n deletedMessagesVisibilityType,\n inverted,\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<StreamChatGenerics>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);\n\n const initialScrollSet = useRef<boolean>(false);\n const channelResyncScrollSet = useRef<boolean>(true);\n\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n /**\n * channel.lastRead throws error if the channel is not initialized.\n */\n const getLastReadSafely = () => (channel?.initialized ? channel.lastRead() : undefined);\n\n const channelLastRead = useRef(getLastReadSafely());\n\n const isUnreadMessage = (\n message: MessageType<StreamChatGenerics> | undefined,\n lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at;\n\n /**\n * If the top message in the list is unread, then we should scroll to top of the list.\n * This is to handle the case when entire message list is unread.\n * This scroll get set only on load, and never again.\n */\n const setInitialScrollIfNeeded = () => {\n // If the feature is disabled or initial scroll position is already set.\n if (!initialScrollToFirstUnreadMessage || initialScrollSet.current) {\n initialScrollSet.current = true;\n return;\n }\n if (isUnreadMessage(topMessageBeforeUpdate.current, channelLastRead.current)) {\n if (flatListRef.current) {\n flatListRef.current.scrollToEnd();\n }\n setTimeout(() => {\n initialScrollSet.current = true;\n }, 500);\n } else if (!initialScrollSet.current) {\n initialScrollSet.current = true;\n }\n };\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<StreamChatGenerics>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n /**\n * When a new message comes in, list scrolls down to the bottom automatically (using prop `maintainVisibleContentPosition`)\n * and we mark the channel as read from handleScroll function.\n * Although this logic is dependent on the fact that `onScroll` event gets triggered during this process.\n * But for Android, this event is not triggered when messages length is lesser than visible screen height.\n *\n * And thus we need to check if the message list length is lesser than visible screen height and mark the channel as read.\n */\n if (\n Platform.OS === 'android' &&\n viewableItems?.length &&\n viewableItems?.length >= messageListLengthBeforeUpdate.current\n ) {\n channel.markRead();\n }\n\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n setInitialScrollIfNeeded();\n },\n );\n\n const resetPaginationTrackers = () => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n };\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackers();\n\n setTimeout(\n () =>\n flatListRef.current?.scrollToOffset({\n offset: 0,\n }),\n 50,\n );\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || channel?.state.isUpToDate) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !channel?.state.isUpToDate &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n /**\n * channelLastRead and topMessage are only used for setting initial scroll.\n * So lets not set it if `initialScrollToFirstUnreadMessage` prop is false.\n * OR if the scroll is already set.\n */\n if (initialScrollToFirstUnreadMessage && !initialScrollSet.current) {\n channelLastRead.current = getLastReadSafely();\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n if (!channel?.state.isUpToDate && autoscrollToTop) {\n setAutoscrollToTop(false);\n } else if (channel?.state.isUpToDate && !autoscrollToTop) {\n setAutoscrollToTop(true);\n }\n }, [messageListLengthAfterUpdate]);\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<StreamChatGenerics>;\n }) => {\n if (!channel || !channel.initialized) return null;\n\n const lastRead = getLastReadSafely();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay = !!isUnreadMessage(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessage(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = async (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n await onEndReachedInPromise.current;\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = async () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n await onStartReachedInPromise.current;\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !initialScrollSet.current || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !channel?.state.isUpToDate;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && channel?.state.isUpToDate && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n if (showScrollToBottomButton && !scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n } else if (!showScrollToBottomButton && scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(false);\n }\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!channel?.state.isUpToDate) {\n resetPaginationTrackers();\n\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n\n if (indexOfParentInMessageList > -1) {\n try {\n if (flatListRef.current) {\n flatListRef.current.scrollToIndex({\n index: indexOfParentInMessageList,\n viewPosition: 0.5,\n });\n setTargetedMessage(messageId);\n\n return;\n }\n } catch (_) {\n // do nothing;\n }\n }\n\n loadChannelAtMessage({ messageId });\n resetPaginationTrackers();\n },\n [messageListLengthAfterUpdate],\n );\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setImages(messagesWithImages as MessageType<StreamChatGenerics>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n const stickyHeaderDateToRender =\n tStickyHeaderDate === null || hideStickyDateHeader\n ? null\n : isDayOrMoment(tStickyHeaderDate)\n ? tStickyHeaderDate.format(stickyHeaderFormatDate)\n : new Date(tStickyHeaderDate).toDateString();\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<StreamChatGenerics>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n const renderListEmptyComponent = () => (\n <View style={[styles.flex, styles.invert]} testID='empty-state'>\n <EmptyStateIndicator listType='message' />\n </View>\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !channel?.state.isUpToDate}\n inverted={inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={FooterComponent}\n ListHeaderComponent={HeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n style={[styles.listContainer, listContainer]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n {stickyHeaderDateToRender &&\n (StickyHeader ? (\n <StickyHeader dateString={stickyHeaderDateToRender} />\n ) : messageListLengthAfterUpdate ? (\n <DateHeader dateString={stickyHeaderDateToRender} />\n ) : null)}\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageListPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListProps<StreamChatGenerics>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { setImages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<StreamChatGenerics>();\n const { loadMore, loadMoreRecent } = usePaginatedMessageListContext<StreamChatGenerics>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setImages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageList.tsx"],"names":["styles","StyleSheet","create","container","alignItems","flex","width","contentContainer","flexGrow","paddingBottom","invert","transform","scaleY","listContainer","messagePadding","paddingHorizontal","stickyHeader","position","top","keyExtractor","item","id","created_at","toISOString","Date","now","toString","flatListViewabilityConfig","viewAreaCoveragePercentThreshold","MessageListWithContext","props","LoadingMoreIndicator","threadList","InlineLoadingMoreThreadIndicator","InlineLoadingMoreIndicator","additionalFlatListProps","channel","client","closePicker","DateHeader","deletedMessagesVisibilityType","disabled","disableTypingIndicator","EmptyStateIndicator","FlatList","FooterComponent","hasNoMoreRecentMessagesToLoad","HeaderComponent","InlineLoadingMoreRecentIndicator","hideStickyDateHeader","initialScrollToFirstUnreadMessage","InlineDateSeparator","InlineUnreadIndicator","inverted","isListActive","legacyImageViewerSwipeBehaviour","loadChannelAroundMessage","loading","LoadingIndicator","loadMore","loadMoreRecent","loadMoreThread","markRead","Message","MessageSystem","myMessageTheme","NetworkDownIndicator","noGroupByUser","onListScroll","onThreadSelect","overlay","reloadChannel","ScrollToBottomButton","scrollToFirstUnreadThreshold","selectedPicker","setFlatListRef","setMessages","setSelectedPicker","setTargetedMessage","StickyHeader","targetedMessage","tDateTimeParser","thread","TypingIndicator","TypingIndicatorContainer","theme","white_snow","colors","messageList","modifiedTheme","style","messageListLengthBeforeUpdate","messageListLengthAfterUpdate","length","topMessageBeforeUpdate","topMessageAfterUpdate","autoscrollToTop","setAutoscrollToTop","onStartReachedTracker","onEndReachedTracker","onStartReachedInPromise","onEndReachedInPromise","flatListRef","initialScrollSet","channelResyncScrollSet","scrollToDebounceTimeoutRef","messageIdToScrollToRef","messageIdLastScrolledToRef","hasMoved","setHasMoved","lastReceivedId","setLastReceivedId","scrollToBottomButtonVisible","setScrollToBottomButtonVisible","stickyHeaderDate","setStickyHeaderDate","stickyHeaderDateRef","isUnreadMessageRef","message","lastRead","channelLastReadRef","initialized","undefined","current","updateStickyHeaderDateIfNeeded","viewableItems","lastItem","pop","isMessageTypeDeleted","type","toDateString","onViewableItemsChanged","Platform","OS","resetPaginationTrackersRef","shouldMarkReadOnFirstLoad","countUnread","lastReceivedMessage","hasNewMessage","isMyMessage","user","userID","scrollToBottomIfNeeded","setTimeout","scrollToOffset","offset","maybeCallOnStartReached","renderItem","index","offlineMode","lastMessage","showUnreadUnderlay","insertInlineUnreadIndicator","wrapMessageInTheme","goToMessage","groupStyles","dateSeparator","quoted_message_id","limit","callback","Promise","resolve","onError","then","maybeCallOnEndReached","handleScroll","event","nativeEvent","contentOffset","y","visibleLength","layoutMeasurement","height","contentLength","contentSize","isScrollAtStart","isScrollAtEnd","isScrollAtBottom","showScrollToBottomButton","shouldMarkRead","goToNewMessages","onScrollToIndexFailedRef","info","animated","averageItemLength","scrollToIndex","viewPosition","messageId","indexOfParentInMessageList","findIndex","clearTimeout","messageIdToScroll","messagesWithImages","filter","attachments","some","attachment","title_link","og_scrape_url","image_url","thumb_url","imageString","map","join","numberOfMessagesWithImages","threadExists","stickyHeaderFormatDate","getFullYear","tStickyHeaderDate","stickyHeaderDateToRender","format","dismissImagePicker","onScrollBeginDrag","onScrollEndDrag","refCallback","ref","renderListEmptyComponent","backgroundColor","autoscrollToTopThreshold","minIndexForVisible","MessageList","enableMessageGroupingByUser","error","isChannelActive","t"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatListProps,\n FlatList as FlatListType,\n Platform,\n ScrollViewProps,\n StyleSheet,\n View,\n ViewToken,\n} from 'react-native';\n\nimport type { Channel as StreamChannel } from 'stream-chat';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n useMessageList,\n} from './hooks/useMessageList';\nimport { InlineLoadingMoreIndicator } from './InlineLoadingMoreIndicator';\nimport { InlineLoadingMoreRecentIndicator } from './InlineLoadingMoreRecentIndicator';\nimport { InlineLoadingMoreThreadIndicator } from './InlineLoadingMoreThreadIndicator';\nimport { getLastReceivedMessage } from './utils/getLastReceivedMessage';\n\nimport {\n AttachmentPickerContextValue,\n useAttachmentPickerContext,\n} from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport {\n PaginatedMessageListContextValue,\n usePaginatedMessageListContext,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n isDayOrMoment,\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flex: 1,\n width: '100%',\n },\n contentContainer: {\n flexGrow: 1,\n /**\n * paddingBottom is set to 4 to account for the default date\n * header and inline indicator alignment. The top margin is 8\n * on the header but 4 on the inline date, this adjusts the spacing\n * to allow the \"first\" inline date to align with the date header.\n */\n paddingBottom: 4,\n },\n flex: { flex: 1 },\n invert: { transform: [{ scaleY: -1 }] },\n listContainer: {\n flex: 1,\n width: '100%',\n },\n messagePadding: {\n paddingHorizontal: 8,\n },\n stickyHeader: {\n position: 'absolute',\n top: 0,\n },\n});\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: MessageType<StreamChatGenerics>,\n) =>\n item.id ||\n (item.created_at\n ? typeof item.created_at === 'string'\n ? item.created_at\n : item.created_at.toISOString()\n : Date.now().toString());\n\nconst flatListViewabilityConfig = {\n viewAreaCoveragePercentThreshold: 1,\n};\n\ntype MessageListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<AttachmentPickerContextValue, 'closePicker' | 'selectedPicker' | 'setSelectedPicker'> &\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'channel'\n | 'disabled'\n | 'EmptyStateIndicator'\n | 'hideStickyDateHeader'\n | 'loadChannelAroundMessage'\n | 'loading'\n | 'LoadingIndicator'\n | 'markRead'\n | 'NetworkDownIndicator'\n | 'reloadChannel'\n | 'scrollToFirstUnreadThreshold'\n | 'setTargetedMessage'\n | 'StickyHeader'\n | 'targetedMessage'\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setMessages'> &\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'hasNoMoreRecentMessagesToLoad' | 'loadMore' | 'loadMoreRecent'\n > &\n Pick<OverlayContextValue, 'overlay'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'deletedMessagesVisibilityType'\n | 'DateHeader'\n | 'disableTypingIndicator'\n | 'FlatList'\n | 'initialScrollToFirstUnreadMessage'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'legacyImageViewerSwipeBehaviour'\n | 'Message'\n | 'ScrollToBottomButton'\n | 'MessageSystem'\n | 'myMessageTheme'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'loadMoreThread' | 'thread'> &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n /**\n * Besides existing (default) UX behavior of underlying FlatList of MessageList component, if you want\n * to attach some additional props to underlying FlatList, you can add it to following prop.\n *\n * You can find list of all the available FlatList props here - https://facebook.github.io/react-native/docs/flatlist#props\n *\n * **NOTE** Don't use `additionalFlatListProps` to get access to ref of flatlist. Use `setFlatListRef` instead.\n *\n * e.g.\n * ```js\n * <MessageList\n * additionalFlatListProps={{ bounces: true, keyboardDismissMode: true }} />\n * ```\n */\n additionalFlatListProps?: Partial<FlatListProps<MessageType<StreamChatGenerics>>>;\n /**\n * UI component for footer of message list. By default message list will use `InlineLoadingMoreIndicator`\n * as FooterComponent. If you want to implement your own inline loading indicator, you can access `loadingMore`\n * from context.\n *\n * This is a [ListHeaderComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header by default if inverted is true or defaulted\n */\n FooterComponent?: React.ComponentType;\n /**\n * UI component for header of message list. By default message list will use `InlineLoadingMoreRecentIndicator`\n * as HeaderComponent. If you want to implement your own inline loading indicator, you can access `loadingMoreRecent`\n * from context.\n *\n * This is a [ListFooterComponent](https://facebook.github.io/react-native/docs/flatlist#listheadercomponent) of FlatList\n * used in MessageList. Should be used for header if inverted is false\n */\n HeaderComponent?: React.ComponentType;\n /** Whether or not the FlatList is inverted. Defaults to true */\n inverted?: boolean;\n isListActive?: boolean;\n /** Turn off grouping of messages by user */\n noGroupByUser?: boolean;\n onListScroll?: ScrollViewProps['onScroll'];\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: ThreadContextValue<StreamChatGenerics>['thread']) => void;\n /**\n * Use `setFlatListRef` to get access to ref to inner FlatList.\n *\n * e.g.\n * ```js\n * <MessageList\n * setFlatListRef={(ref) => {\n * // Use ref for your own good\n * }}\n * ```\n */\n setFlatListRef?: (ref: FlatListType<MessageType<StreamChatGenerics>> | null) => void;\n /**\n * Boolean whether or not the Messages in the MessageList are part of a Thread\n **/\n threadList?: boolean;\n };\n\n/**\n * The message list component renders a list of messages. It consumes the following contexts:\n *\n * [ChannelContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/)\n * [ChatContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/)\n * [MessagesContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/messages-context/)\n * [ThreadContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/thread-context/)\n * [TranslationContext](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nconst MessageListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListPropsWithContext<StreamChatGenerics>,\n) => {\n const LoadingMoreIndicator = props.threadList\n ? InlineLoadingMoreThreadIndicator\n : InlineLoadingMoreIndicator;\n const {\n additionalFlatListProps,\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n FlatList,\n FooterComponent = LoadingMoreIndicator,\n hasNoMoreRecentMessagesToLoad,\n HeaderComponent = InlineLoadingMoreRecentIndicator,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n inverted = true,\n isListActive = false,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n noGroupByUser,\n onListScroll,\n onThreadSelect,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setFlatListRef,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n tDateTimeParser,\n thread,\n threadList = false,\n TypingIndicator,\n TypingIndicatorContainer,\n } = props;\n\n const { theme } = useTheme();\n\n const {\n colors: { white_snow },\n messageList: { container, contentContainer, listContainer },\n } = theme;\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageTheme, theme],\n );\n\n const messageList = useMessageList<StreamChatGenerics>({\n deletedMessagesVisibilityType,\n inverted,\n noGroupByUser,\n threadList,\n });\n const messageListLengthBeforeUpdate = useRef(0);\n const messageListLengthAfterUpdate = messageList.length;\n\n /**\n * We need topMessage and channelLastRead values to set the initial scroll position.\n * So these values only get used if `initialScrollToFirstUnreadMessage` prop is true.\n */\n const topMessageBeforeUpdate = useRef<MessageType<StreamChatGenerics>>();\n const topMessageAfterUpdate = messageList[messageList.length - 1];\n\n const [autoscrollToTop, setAutoscrollToTop] = useState(false);\n\n /**\n * We want to call onEndReached and onStartReached only once, per content length.\n * We keep track of calls to these functions per content length, with following trackers.\n */\n const onStartReachedTracker = useRef<Record<number, boolean>>({});\n const onEndReachedTracker = useRef<Record<number, boolean>>({});\n\n const onStartReachedInPromise = useRef<Promise<void> | null>(null);\n const onEndReachedInPromise = useRef<Promise<void> | null>(null);\n\n const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);\n\n /**\n * Flag to track if the initial scroll has been set\n * If the prop `initialScrollToFirstUnreadMessage` was enabled, then we scroll to the unread msg and set it to true\n * If not, the default offset of 0 for flatList means that it has been set already\n */\n const initialScrollSet = useRef<boolean>(!initialScrollToFirstUnreadMessage);\n\n const channelResyncScrollSet = useRef<boolean>(true);\n\n /**\n * The timeout id used to debounce our scrollToIndex calls on messageList updates\n */\n const scrollToDebounceTimeoutRef = useRef<NodeJS.Timeout>();\n\n /**\n * If a messageId was requested to scroll to but was unloaded,\n * this flag keeps track of it to scroll to it after loading the message\n */\n const messageIdToScrollToRef = useRef<string>();\n /**\n * Last messageID that was scrolled to after loading a new message list,\n * this flag keeps track of it so that we dont scroll to it again on target message set\n */\n const messageIdLastScrolledToRef = useRef<string>();\n const [hasMoved, setHasMoved] = useState(false);\n const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);\n const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);\n\n const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();\n const stickyHeaderDateRef = useRef<Date | undefined>();\n\n const isUnreadMessageRef = useRef(\n (\n message: MessageType<StreamChatGenerics> | undefined,\n lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,\n ) => message && lastRead && message.created_at && lastRead < message.created_at,\n );\n\n const channelLastReadRef = useRef(channel?.initialized ? channel.lastRead() : undefined);\n\n useEffect(() => {\n channelLastReadRef.current = channel?.initialized ? channel.lastRead() : undefined;\n }, [channel]);\n\n const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {\n if (viewableItems.length) {\n const lastItem = viewableItems.pop() as {\n item: MessageType<StreamChatGenerics>;\n };\n\n const isMessageTypeDeleted = lastItem.item.type === 'deleted';\n\n if (\n lastItem?.item?.created_at &&\n !isMessageTypeDeleted &&\n typeof lastItem.item.created_at !== 'string' &&\n lastItem.item.created_at.toDateString() !== stickyHeaderDateRef.current?.toDateString()\n ) {\n stickyHeaderDateRef.current = lastItem.item.created_at;\n setStickyHeaderDate(lastItem.item.created_at);\n }\n }\n };\n\n /**\n * FlatList doesn't accept changeable function for onViewableItemsChanged prop.\n * Thus useRef.\n */\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] | undefined }) => {\n /**\n * When a new message comes in, list scrolls down to the bottom automatically (using prop `maintainVisibleContentPosition`)\n * and we mark the channel as read from handleScroll function.\n * Although this logic is dependent on the fact that `onScroll` event gets triggered during this process.\n * But for Android, this event is not triggered when messages length is lesser than visible screen height.\n *\n * And thus we need to check if the message list length is lesser than visible screen height and mark the channel as read.\n */\n if (\n Platform.OS === 'android' &&\n viewableItems?.length &&\n viewableItems?.length >= messageListLengthBeforeUpdate.current\n ) {\n channel.markRead();\n }\n\n if (viewableItems && !hideStickyDateHeader) {\n updateStickyHeaderDateIfNeeded(viewableItems);\n }\n },\n );\n\n /**\n * Resets the pagination trackers, doing so cancels currently scheduled loading more calls\n */\n const resetPaginationTrackersRef = useRef(() => {\n onStartReachedTracker.current = {};\n onEndReachedTracker.current = {};\n });\n\n useEffect(() => {\n setScrollToBottomButtonVisible(false);\n }, [disabled]);\n\n useEffect(() => {\n /**\n * 1. !initialScrollToFirstUnreadMessage && channel.countUnread() > 0\n *\n * In this case MessageList won't scroll to first unread message when opened, so we can mark\n * the channel as read right after opening.\n *\n * 2. initialScrollToFirstUnreadMessage && channel.countUnread() <= scrollToFirstUnreadThreshold\n *\n * In this case MessageList will be opened to first unread message.\n * But if there are not enough (scrollToFirstUnreadThreshold) unread messages, then MessageList\n * won't need to scroll up. So we can safely mark the channel as read right after opening.\n */\n const shouldMarkReadOnFirstLoad =\n !loading &&\n channel &&\n ((!initialScrollToFirstUnreadMessage && channel.countUnread() > 0) ||\n (initialScrollToFirstUnreadMessage &&\n channel.countUnread() <= scrollToFirstUnreadThreshold));\n\n if (shouldMarkReadOnFirstLoad) {\n markRead();\n }\n }, [loading]);\n\n useEffect(() => {\n const lastReceivedMessage = getLastReceivedMessage(messageList);\n\n const hasNewMessage = lastReceivedId !== lastReceivedMessage?.id;\n const isMyMessage = lastReceivedMessage?.user?.id === client.userID;\n\n setLastReceivedId(lastReceivedMessage?.id);\n\n /**\n * Scroll down when\n * 1. you send a new message to channel\n * 2. new message list is small than the one before update - channel has resynced\n * 3. created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced\n */\n const scrollToBottomIfNeeded = () => {\n if (!client || !channel || messageList.length === 0) {\n return;\n }\n if (\n (hasNewMessage && isMyMessage) ||\n messageListLengthAfterUpdate < messageListLengthBeforeUpdate.current ||\n (topMessageBeforeUpdate.current?.created_at &&\n topMessageAfterUpdate?.created_at &&\n topMessageBeforeUpdate.current.created_at < topMessageAfterUpdate.created_at)\n ) {\n channelResyncScrollSet.current = false;\n setScrollToBottomButtonVisible(false);\n resetPaginationTrackersRef.current();\n\n setTimeout(() => {\n flatListRef.current?.scrollToOffset({\n offset: 0,\n });\n }, 50);\n setTimeout(() => {\n channelResyncScrollSet.current = true;\n if (channel.countUnread() > 0) {\n markRead();\n }\n }, 500);\n }\n };\n\n if (threadList || hasNoMoreRecentMessagesToLoad) {\n scrollToBottomIfNeeded();\n } else if (!scrollToBottomButtonVisible) {\n setScrollToBottomButtonVisible(true);\n }\n\n if (\n !hasNoMoreRecentMessagesToLoad &&\n flatListRef.current &&\n messageListLengthBeforeUpdate.current === 0 &&\n messageListLengthAfterUpdate < 10\n ) {\n /**\n * Trigger onStartReached on first load, if messages are not enough to fill the screen.\n * This is important especially for android, where you can't overscroll.\n */\n maybeCallOnStartReached(10);\n }\n\n messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;\n topMessageBeforeUpdate.current = topMessageAfterUpdate;\n }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);\n\n useEffect(() => {\n setAutoscrollToTop(hasNoMoreRecentMessagesToLoad);\n }, [messageList, hasNoMoreRecentMessagesToLoad]);\n\n const renderItem = ({\n index,\n item: message,\n }: {\n index: number;\n item: MessageType<StreamChatGenerics>;\n }) => {\n if (!channel || (!channel.initialized && !channel.offlineMode)) return null;\n\n const lastRead = channel.lastRead();\n\n const lastMessage = messageList?.[index + 1];\n\n const showUnreadUnderlay =\n !!isUnreadMessageRef.current(message, lastRead) && scrollToBottomButtonVisible;\n const insertInlineUnreadIndicator =\n showUnreadUnderlay && !isUnreadMessageRef.current(lastMessage, lastRead);\n\n if (message.type === 'system') {\n return (\n <>\n <View testID={`message-list-item-${index}`}>\n <MessageSystem message={message} style={styles.messagePadding} />\n </View>\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n }\n\n const wrapMessageInTheme = client.userID === message.user?.id && !!myMessageTheme;\n return wrapMessageInTheme ? (\n <>\n <ThemeProvider mergedStyle={modifiedTheme}>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={lastReceivedId === message.id ? lastReceivedId : undefined}\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n </ThemeProvider>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n ) : (\n <>\n <View testID={`message-list-item-${index}`}>\n <Message\n goToMessage={goToMessage}\n groupStyles={\n isMessageWithStylesReadByAndDateSeparator(message) ? message.groupStyles : []\n }\n isTargetedMessage={targetedMessage === message.id}\n lastReceivedId={\n lastReceivedId === message.id || message.quoted_message_id\n ? lastReceivedId\n : undefined\n }\n message={message}\n onThreadSelect={onThreadSelect}\n showUnreadUnderlay={showUnreadUnderlay}\n style={styles.messagePadding}\n threadList={threadList}\n />\n </View>\n {isMessageWithStylesReadByAndDateSeparator(message) && message.dateSeparator && (\n <InlineDateSeparator date={message.dateSeparator} />\n )}\n {/* Adding indicator below the messages, since the list is inverted */}\n {insertInlineUnreadIndicator && <InlineUnreadIndicator />}\n </>\n );\n };\n\n /**\n * We are keeping full control on message pagination, and not relying on react-native for it.\n * The reasons being,\n * 1. FlatList doesn't support onStartReached prop\n * 2. `onEndReached` function prop available on react-native, gets executed\n * once per content length (and thats actually a nice optimization strategy).\n * But it also means, we always need to prioritize onEndReached above our\n * logic for `onStartReached`.\n * 3. `onEndReachedThreshold` prop decides - at which scroll position to call `onEndReached`.\n * Its a factor of content length (which is necessary for \"real\" infinite scroll). But on\n * the other hand, it also makes calls to `onEndReached` (and this `channel.query`) way\n * too early during scroll, which we don't really need. So we are going to instead\n * keep some fixed offset distance, to decide when to call `loadMore` or `loadMoreRecent`.\n *\n * We are still gonna keep the optimization, which react-native does - only call onEndReached\n * once per content length.\n */\n\n /**\n * 1. Makes a call to `loadMoreRecent` function, which queries more recent messages.\n * 2. Ensures that we call `loadMoreRecent`, once per content length\n * 3. If the call to `loadMore` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnStartReached = async (limit?: number) => {\n // If onStartReached has already been called for given data length, then ignore.\n if (messageList?.length && onStartReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onStartReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onStartReachedInPromise.current = null;\n\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onStartReached trigger after 2 seconds, to try again */\n setTimeout(() => {\n onStartReachedTracker.current = {};\n }, 2000);\n };\n\n // If onEndReached is in progress, better to wait for it to finish for smooth UX\n if (onEndReachedInPromise.current) {\n await onEndReachedInPromise.current;\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n } else {\n onStartReachedInPromise.current = loadMoreRecent(limit).then(callback).catch(onError);\n }\n };\n\n /**\n * 1. Makes a call to `loadMore` function, which queries more older messages.\n * 2. Ensures that we call `loadMore`, once per content length\n * 3. If the call to `loadMoreRecent` is in progress, we wait for it to finish to make sure scroll doesn't jump.\n */\n const maybeCallOnEndReached = async () => {\n // If onEndReached has already been called for given messageList length, then ignore.\n if (messageList?.length && onEndReachedTracker.current[messageList.length]) {\n return;\n }\n\n if (messageList?.length) {\n onEndReachedTracker.current[messageList.length] = true;\n }\n\n const callback = () => {\n onEndReachedInPromise.current = null;\n return Promise.resolve();\n };\n\n const onError = () => {\n /** Release the onEndReachedTracker trigger after 2 seconds, to try again */\n setTimeout(() => {\n onEndReachedTracker.current = {};\n }, 2000);\n };\n\n // If onStartReached is in progress, better to wait for it to finish for smooth UX\n if (onStartReachedInPromise.current) {\n await onStartReachedInPromise.current;\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n } else {\n onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore())\n .then(callback)\n .catch(onError);\n }\n };\n\n /**\n * Following if condition covers following cases:\n * 1. If I scroll up -> show scrollToBottom button.\n * 2. If I scroll to bottom of screen\n * |-> hide scrollToBottom button.\n * |-> if channel is unread, call markRead().\n */\n const handleScroll: ScrollViewProps['onScroll'] = (event) => {\n if (!channel || !channelResyncScrollSet.current) {\n return;\n }\n\n const offset = event.nativeEvent.contentOffset.y;\n const visibleLength = event.nativeEvent.layoutMeasurement.height;\n const contentLength = event.nativeEvent.contentSize.height;\n // Check if scroll has reached either start of end of list.\n const isScrollAtStart = offset < 100;\n const isScrollAtEnd = contentLength - visibleLength - offset < 100;\n\n if (isScrollAtStart) {\n maybeCallOnStartReached();\n }\n\n if (isScrollAtEnd) {\n maybeCallOnEndReached();\n }\n\n // Show scrollToBottom button once scroll position goes beyond 300.\n const isScrollAtBottom = offset <= 300;\n const showScrollToBottomButton = !isScrollAtBottom || !hasNoMoreRecentMessagesToLoad;\n\n const shouldMarkRead =\n !threadList && offset <= 0 && hasNoMoreRecentMessagesToLoad && channel.countUnread() > 0;\n\n if (shouldMarkRead) {\n markRead();\n }\n\n setScrollToBottomButtonVisible(showScrollToBottomButton);\n\n if (onListScroll) {\n onListScroll(event);\n }\n };\n\n const goToNewMessages = async () => {\n if (!hasNoMoreRecentMessagesToLoad) {\n resetPaginationTrackersRef.current();\n await reloadChannel();\n } else if (flatListRef.current) {\n flatListRef.current.scrollToOffset({\n offset: 0,\n });\n }\n\n setScrollToBottomButtonVisible(false);\n if (!threadList) {\n markRead();\n }\n };\n\n const onScrollToIndexFailedRef = useRef<\n FlatListProps<MessageType<StreamChatGenerics>>['onScrollToIndexFailed']\n >((info) => {\n // We got a failure as we tried to scroll to an item that was outside the render length\n if (flatListRef.current) {\n // we dont know the actual size of all items but we can see the average, so scroll to the closest offset\n flatListRef.current.scrollToOffset({\n animated: false,\n offset: info.averageItemLength * info.index,\n });\n // since we used only an average offset.. we wont go to the center of the item yet\n // with a little delay to wait for scroll to offset to complete, we can then scroll to the index\n setTimeout(() => {\n flatListRef.current?.scrollToIndex({\n animated: false,\n index: info.index,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n if (messageIdLastScrolledToRef.current) {\n setTargetedMessage(messageIdLastScrolledToRef.current);\n }\n }, 150);\n }\n });\n\n const goToMessage = useCallback(\n (messageId: string) => {\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageId,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: true,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // keep track of this messageId, so that we dont scroll to again in useEffect for targeted message change\n messageIdLastScrolledToRef.current = messageId;\n setTargetedMessage(messageId);\n return;\n }\n messageIdToScrollToRef.current = messageId; // keep track of the id to scroll afterwards\n loadChannelAroundMessage({ messageId }); // now try to load the message and whats around it\n resetPaginationTrackersRef.current();\n },\n [messageList],\n );\n\n /**\n * Check if a messageId needs to be scrolled to after list loads, and scroll to it\n * Note: This effect fires on every list change with a small debounce so that scrolling isnt abrupted by an immediate rerender\n */\n useEffect(() => {\n if (scrollToDebounceTimeoutRef.current) clearTimeout(scrollToDebounceTimeoutRef.current);\n scrollToDebounceTimeoutRef.current = setTimeout(() => {\n // goToMessage method might have requested to scroll to a message\n let messageIdToScroll: string | undefined = messageIdToScrollToRef.current;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n // find the first unread message, if we have to initially scroll to an unread message\n for (let index = messageList.length - 1; index >= 0; index--) {\n if (isUnreadMessageRef.current(messageList[index], channelLastReadRef.current)) {\n messageIdToScroll = messageList[index].id;\n break;\n }\n }\n } else if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {\n // if some messageId was targeted but not scrolledTo yet\n // we have scroll to there after loading completes\n messageIdToScroll = targetedMessage;\n }\n if (!messageIdToScroll) return;\n const indexOfParentInMessageList = messageList.findIndex(\n (message) => message?.id === messageIdToScroll,\n );\n if (indexOfParentInMessageList !== -1 && flatListRef.current) {\n flatListRef.current.scrollToIndex({\n animated: false,\n index: indexOfParentInMessageList,\n viewPosition: 0.5, // try to place message in the center of the screen\n });\n // reset the messageId tracker to not scroll to that again\n messageIdToScrollToRef.current = undefined;\n // keep track of this messageId, so that we dont scroll to again for targeted message change\n messageIdLastScrolledToRef.current = messageIdToScroll;\n if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {\n initialScrollSet.current = true;\n } else {\n setTargetedMessage(messageIdToScroll);\n }\n }\n }, 150);\n }, [messageList, targetedMessage, initialScrollToFirstUnreadMessage]);\n\n const messagesWithImages =\n legacyImageViewerSwipeBehaviour &&\n messageList.filter((message) => {\n const isMessageTypeDeleted = message.type === 'deleted';\n if (!isMessageTypeDeleted && message.attachments) {\n return message.attachments.some(\n (attachment) =>\n attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n (attachment.image_url || attachment.thumb_url),\n );\n }\n return false;\n });\n\n /**\n * This is for the useEffect to run again in the case that a message\n * gets edited with more or the same number of images\n */\n const imageString =\n legacyImageViewerSwipeBehaviour &&\n messagesWithImages &&\n messagesWithImages\n .map((message) =>\n message.attachments\n ?.map((attachment) => attachment.image_url || attachment.thumb_url || '')\n .join(),\n )\n .join();\n\n const numberOfMessagesWithImages =\n legacyImageViewerSwipeBehaviour && messagesWithImages && messagesWithImages.length;\n const threadExists = !!thread;\n\n useEffect(() => {\n if (\n legacyImageViewerSwipeBehaviour &&\n isListActive &&\n ((threadList && thread) || (!threadList && !thread))\n ) {\n setMessages(messagesWithImages as MessageType<StreamChatGenerics>[]);\n }\n }, [\n imageString,\n isListActive,\n legacyImageViewerSwipeBehaviour,\n numberOfMessagesWithImages,\n threadExists,\n threadList,\n ]);\n\n const stickyHeaderFormatDate =\n stickyHeaderDate?.getFullYear() === new Date().getFullYear() ? 'MMM D' : 'MMM D, YYYY';\n const tStickyHeaderDate =\n stickyHeaderDate && !hideStickyDateHeader ? tDateTimeParser(stickyHeaderDate) : null;\n const stickyHeaderDateToRender =\n tStickyHeaderDate === null || hideStickyDateHeader\n ? null\n : isDayOrMoment(tStickyHeaderDate)\n ? tStickyHeaderDate.format(stickyHeaderFormatDate)\n : new Date(tStickyHeaderDate).toDateString();\n\n const dismissImagePicker = () => {\n if (!hasMoved && selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n }\n };\n const onScrollBeginDrag = () => !hasMoved && selectedPicker && setHasMoved(true);\n const onScrollEndDrag = () => hasMoved && selectedPicker && setHasMoved(false);\n\n const refCallback = (ref: FlatListType<MessageType<StreamChatGenerics>>) => {\n flatListRef.current = ref;\n\n if (setFlatListRef) {\n setFlatListRef(ref);\n }\n };\n const renderListEmptyComponent = () => (\n <View style={[styles.flex, styles.invert]} testID='empty-state'>\n <EmptyStateIndicator listType='message' />\n </View>\n );\n\n if (!FlatList) return null;\n\n if (loading) {\n return (\n <View style={styles.flex}>\n <LoadingIndicator listType='message' />\n </View>\n );\n }\n\n return (\n <View\n style={[styles.container, { backgroundColor: white_snow }, container]}\n testID='message-flat-list-wrapper'\n >\n <FlatList\n contentContainerStyle={[styles.contentContainer, contentContainer]}\n data={messageList}\n /** Disables the MessageList UI. Which means, message actions, reactions won't work. */\n extraData={disabled || !hasNoMoreRecentMessagesToLoad}\n inverted={inverted}\n keyboardShouldPersistTaps='handled'\n keyExtractor={keyExtractor}\n ListEmptyComponent={renderListEmptyComponent}\n ListFooterComponent={FooterComponent}\n ListHeaderComponent={HeaderComponent}\n maintainVisibleContentPosition={{\n autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,\n minIndexForVisible: 1,\n }}\n maxToRenderPerBatch={30}\n onScroll={handleScroll}\n onScrollBeginDrag={onScrollBeginDrag}\n onScrollEndDrag={onScrollEndDrag}\n onScrollToIndexFailed={onScrollToIndexFailedRef.current}\n onTouchEnd={dismissImagePicker}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={refCallback}\n renderItem={renderItem}\n scrollEnabled={overlay === 'none'}\n style={[styles.listContainer, listContainer]}\n testID='message-flat-list'\n viewabilityConfig={flatListViewabilityConfig}\n {...additionalFlatListProps}\n />\n {!loading && (\n <>\n <View style={styles.stickyHeader}>\n {stickyHeaderDateToRender &&\n (StickyHeader ? (\n <StickyHeader dateString={stickyHeaderDateToRender} />\n ) : messageListLengthAfterUpdate ? (\n <DateHeader dateString={stickyHeaderDateToRender} />\n ) : null)}\n </View>\n {!disableTypingIndicator && TypingIndicator && (\n <TypingIndicatorContainer>\n <TypingIndicator />\n </TypingIndicatorContainer>\n )}\n <ScrollToBottomButton\n onPress={goToNewMessages}\n showNotification={scrollToBottomButtonVisible}\n unreadCount={threadList ? 0 : channel?.countUnread()}\n />\n </>\n )}\n <NetworkDownIndicator />\n </View>\n );\n};\n\nexport type MessageListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageListPropsWithContext<StreamChatGenerics>>;\n\nexport const MessageList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageListProps<StreamChatGenerics>,\n) => {\n const { closePicker, selectedPicker, setSelectedPicker } = useAttachmentPickerContext();\n const {\n channel,\n disabled,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n hideStickyDateHeader,\n isChannelActive,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n markRead,\n NetworkDownIndicator,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n } = useChannelContext<StreamChatGenerics>();\n const { client } = useChatContext<StreamChatGenerics>();\n const { setMessages } = useImageGalleryContext<StreamChatGenerics>();\n const {\n DateHeader,\n deletedMessagesVisibilityType,\n disableTypingIndicator,\n FlatList,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n legacyImageViewerSwipeBehaviour,\n Message,\n MessageSystem,\n myMessageTheme,\n ScrollToBottomButton,\n TypingIndicator,\n TypingIndicatorContainer,\n } = useMessagesContext<StreamChatGenerics>();\n const { hasNoMoreRecentMessagesToLoad, loadMore, loadMoreRecent } =\n usePaginatedMessageListContext<StreamChatGenerics>();\n const { overlay } = useOverlayContext();\n const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MessageListWithContext\n {...{\n channel,\n client,\n closePicker,\n DateHeader,\n deletedMessagesVisibilityType,\n disabled,\n disableTypingIndicator,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n error,\n FlatList,\n hasNoMoreRecentMessagesToLoad,\n hideStickyDateHeader,\n initialScrollToFirstUnreadMessage,\n InlineDateSeparator,\n InlineUnreadIndicator,\n isListActive: isChannelActive,\n legacyImageViewerSwipeBehaviour,\n loadChannelAroundMessage,\n loading,\n LoadingIndicator,\n loadMore,\n loadMoreRecent,\n loadMoreThread,\n markRead,\n Message,\n MessageSystem,\n myMessageTheme,\n NetworkDownIndicator,\n overlay,\n reloadChannel,\n ScrollToBottomButton,\n scrollToFirstUnreadThreshold,\n selectedPicker,\n setMessages,\n setSelectedPicker,\n setTargetedMessage,\n StickyHeader,\n t,\n targetedMessage,\n tDateTimeParser,\n thread,\n TypingIndicator,\n TypingIndicatorContainer,\n }}\n {...props}\n noGroupByUser={!enableMessageGroupingByUser || props.noGroupByUser}\n />\n );\n};\n"]}
@@ -14,7 +14,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
14
14
  var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
15
15
 
16
16
  var _this = this,
17
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/MessageSystem.tsx";
17
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageList/MessageSystem.tsx";
18
18
 
19
19
  var styles = _reactNative.StyleSheet.create({
20
20
  container: {
@@ -18,7 +18,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
18
18
  var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
19
19
 
20
20
  var _this = this,
21
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/NetworkDownIndicator.tsx";
21
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageList/NetworkDownIndicator.tsx";
22
22
 
23
23
  var styles = _reactNative.StyleSheet.create({
24
24
  errorNotification: {
@@ -14,7 +14,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
14
14
  var _icons = require("../../icons");
15
15
 
16
16
  var _this = this,
17
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/ScrollToBottomButton.tsx";
17
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageList/ScrollToBottomButton.tsx";
18
18
 
19
19
  var styles = _reactNative.StyleSheet.create({
20
20
  container: {
@@ -16,7 +16,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
16
16
  var _LoadingDots = require("../Indicators/LoadingDots");
17
17
 
18
18
  var _this = this,
19
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/TypingIndicator.tsx";
19
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageList/TypingIndicator.tsx";
20
20
 
21
21
  var styles = _reactNative.StyleSheet.create({
22
22
  container: {
@@ -22,7 +22,7 @@ var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
22
22
  var _TypingContext = require("../../contexts/typingContext/TypingContext");
23
23
 
24
24
  var _this = this,
25
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/TypingIndicatorContainer.tsx";
25
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageList/TypingIndicatorContainer.tsx";
26
26
 
27
27
  var styles = _reactNative.StyleSheet.create({
28
28
  container: {
@@ -24,7 +24,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
24
24
  var _utils = require("../../utils/utils");
25
25
 
26
26
  var _this = this,
27
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/MessageActionList.tsx";
27
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/MessageActionList.tsx";
28
28
 
29
29
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
30
 
@@ -22,7 +22,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
22
22
  var _utils = require("../../utils/utils");
23
23
 
24
24
  var _this = this,
25
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/MessageActionListItem.tsx";
25
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/MessageActionListItem.tsx";
26
26
 
27
27
  var styles = _reactNative.StyleSheet.create({
28
28
  bottomBorder: {
@@ -42,7 +42,7 @@ var _MessageTextContainer = require("../Message/MessageSimple/MessageTextContain
42
42
  var _OverlayReactions = require("../MessageOverlay/OverlayReactions");
43
43
 
44
44
  var _this = this,
45
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/MessageOverlay.tsx";
45
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/MessageOverlay.tsx";
46
46
 
47
47
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
48
48
 
@@ -12,7 +12,7 @@ var _reactNative = require("react-native");
12
12
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
13
13
 
14
14
  var _this = this,
15
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/OverlayBackdrop.tsx";
15
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/OverlayBackdrop.tsx";
16
16
 
17
17
  var OverlayBackdrop = function OverlayBackdrop(props) {
18
18
  var _props$style = props.style,
@@ -32,7 +32,7 @@ var _icons = require("../../icons");
32
32
  var _native = require("../../native");
33
33
 
34
34
  var _this = this,
35
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactionList.tsx";
35
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactionList.tsx";
36
36
 
37
37
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
38
38
 
@@ -22,7 +22,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
22
22
  var _icons = require("../../icons");
23
23
 
24
24
  var _this = this,
25
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactions.tsx";
25
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactions.tsx";
26
26
 
27
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
28
 
@@ -12,7 +12,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
12
12
  var _Avatar = require("../Avatar/Avatar");
13
13
 
14
14
  var _this = this,
15
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx";
15
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/MessageOverlay/OverlayReactionsAvatar.tsx";
16
16
 
17
17
  var OverlayReactionsAvatar = function OverlayReactionsAvatar(props) {
18
18
  var _props$reaction = props.reaction,
@@ -16,7 +16,7 @@ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reani
16
16
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
17
17
 
18
18
  var _this = this,
19
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ProgressControl/ProgressControl.tsx";
19
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/ProgressControl/ProgressControl.tsx";
20
20
 
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
 
@@ -16,7 +16,7 @@ var _reactNative = require("react-native");
16
16
  var _excluded = ["children", "style"];
17
17
 
18
18
  var _this = this,
19
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/RTLComponents/WritingDirectionAwareText.tsx";
19
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/RTLComponents/WritingDirectionAwareText.tsx";
20
20
 
21
21
  var styles = _reactNative.StyleSheet.create({
22
22
  defaultStyle: {
@@ -40,7 +40,7 @@ var _MessageAvatar = require("../Message/MessageSimple/MessageAvatar");
40
40
  var _MessageTextContainer = require("../Message/MessageSimple/MessageTextContainer");
41
41
 
42
42
  var _this = this,
43
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Reply/Reply.tsx";
43
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Reply/Reply.tsx";
44
44
 
45
45
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
46
46
 
@@ -16,7 +16,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
16
16
  var _Loading = require("../../icons/Loading");
17
17
 
18
18
  var _this = this,
19
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Spinner/Spinner.tsx";
19
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Spinner/Spinner.tsx";
20
20
 
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
 
@@ -28,7 +28,7 @@ var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
28
28
  var _MessageInput = require("../MessageInput/MessageInput");
29
29
 
30
30
  var _this = this,
31
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Thread/Thread.tsx";
31
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Thread/Thread.tsx";
32
32
 
33
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
34
34
 
@@ -28,7 +28,7 @@ var _utils = require("../../../utils/utils");
28
28
  var _excluded = ["backgroundGradientStart", "backgroundGradientStop", "text"];
29
29
 
30
30
  var _this = this,
31
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Thread/components/ThreadFooterComponent.tsx";
31
+ _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Thread/components/ThreadFooterComponent.tsx";
32
32
 
33
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
34
34
 
@@ -587,19 +587,6 @@ Object.keys(_useChannelUpdated).forEach(function (key) {
587
587
  });
588
588
  });
589
589
 
590
- var _useConnectionRecovered = require("./ChannelList/hooks/listeners/useConnectionRecovered");
591
-
592
- Object.keys(_useConnectionRecovered).forEach(function (key) {
593
- if (key === "default" || key === "__esModule") return;
594
- if (key in exports && exports[key] === _useConnectionRecovered[key]) return;
595
- Object.defineProperty(exports, key, {
596
- enumerable: true,
597
- get: function get() {
598
- return _useConnectionRecovered[key];
599
- }
600
- });
601
- });
602
-
603
590
  var _useNewMessage = require("./ChannelList/hooks/listeners/useNewMessage");
604
591
 
605
592
  Object.keys(_useNewMessage).forEach(function (key) {
@@ -886,6 +873,32 @@ Object.keys(_useMutedUsers).forEach(function (key) {
886
873
  });
887
874
  });
888
875
 
876
+ var _useConnectionRecovered = require("./Chat/hooks/useConnectionRecovered");
877
+
878
+ Object.keys(_useConnectionRecovered).forEach(function (key) {
879
+ if (key === "default" || key === "__esModule") return;
880
+ if (key in exports && exports[key] === _useConnectionRecovered[key]) return;
881
+ Object.defineProperty(exports, key, {
882
+ enumerable: true,
883
+ get: function get() {
884
+ return _useConnectionRecovered[key];
885
+ }
886
+ });
887
+ });
888
+
889
+ var _useSyncDatabase = require("./Chat/hooks/useSyncDatabase");
890
+
891
+ Object.keys(_useSyncDatabase).forEach(function (key) {
892
+ if (key === "default" || key === "__esModule") return;
893
+ if (key in exports && exports[key] === _useSyncDatabase[key]) return;
894
+ Object.defineProperty(exports, key, {
895
+ enumerable: true,
896
+ get: function get() {
897
+ return _useSyncDatabase[key];
898
+ }
899
+ });
900
+ });
901
+
889
902
  var _ImageGallery = require("./ImageGallery/ImageGallery");
890
903
 
891
904
  Object.keys(_ImageGallery).forEach(function (key) {