stream-chat-react-native-core 4.10.0 → 5.0.0-offline-support.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (965) 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/Card.js +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachment.js +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +1 -1
  6. package/lib/commonjs/components/Attachment/FileIcon.js +1 -1
  7. package/lib/commonjs/components/Attachment/GallaryImage.js +1 -1
  8. package/lib/commonjs/components/Attachment/Gallery.js +1 -1
  9. package/lib/commonjs/components/Attachment/Giphy.js +1 -1
  10. package/lib/commonjs/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  11. package/lib/commonjs/components/Attachment/ImageLoadingIndicator.js +1 -1
  12. package/lib/commonjs/components/Attachment/VideoThumbnail.js +1 -1
  13. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  14. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  15. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  16. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  17. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  18. package/lib/commonjs/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  19. package/lib/commonjs/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  20. package/lib/commonjs/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  21. package/lib/commonjs/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  22. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  23. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  24. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  25. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  26. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  27. package/lib/commonjs/components/Avatar/Avatar.js +29 -16
  28. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  29. package/lib/commonjs/components/Avatar/GroupAvatar.js +26 -19
  30. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  31. package/lib/commonjs/components/Channel/Channel.js +227 -257
  32. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  33. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -0
  34. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  35. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +2 -0
  36. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  37. package/lib/commonjs/components/ChannelList/ChannelList.js +33 -3
  38. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  39. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  40. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  41. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  42. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  43. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +20 -8
  44. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  45. package/lib/commonjs/components/ChannelList/Skeleton.js +1 -1
  46. package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +187 -0
  47. package/lib/commonjs/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -0
  48. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  49. package/lib/commonjs/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  50. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js +2 -2
  51. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  52. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js +2 -2
  53. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  54. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js +2 -2
  55. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  56. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js +2 -2
  57. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  58. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  59. package/lib/commonjs/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  60. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js +128 -18
  61. package/lib/commonjs/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  62. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  63. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  64. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +2 -2
  65. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  66. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js +2 -2
  67. package/lib/commonjs/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  68. package/lib/commonjs/components/ChannelList/hooks/listeners/useSyncDatabase.js +34 -0
  69. package/lib/commonjs/components/ChannelList/hooks/listeners/useSyncDatabase.js.map +1 -0
  70. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js +4 -4
  71. package/lib/commonjs/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  72. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +47 -21
  73. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  74. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +1 -1
  75. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  76. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +7 -9
  77. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  78. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +8 -6
  79. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  80. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  81. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  82. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  83. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  84. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  85. package/lib/commonjs/components/Chat/Chat.js +18 -7
  86. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  87. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +3 -1
  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/ImageGallery/ImageGallery.js +1 -1
  92. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  93. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  94. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  95. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  96. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  97. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  98. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +1 -1
  99. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +1 -1
  100. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js +1 -1
  101. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +1 -1
  102. package/lib/commonjs/components/Indicators/LoadingDot.js +1 -1
  103. package/lib/commonjs/components/Indicators/LoadingDots.js +1 -1
  104. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +1 -1
  105. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  106. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  107. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  108. package/lib/commonjs/components/Message/Message.js +1 -1
  109. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +1 -1
  110. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  111. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  112. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +1 -1
  113. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  114. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +1 -1
  115. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  116. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -1
  117. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +1 -1
  118. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  119. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +1 -1
  120. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +1 -1
  121. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  122. package/lib/commonjs/components/Message/hooks/useMessageActions.js +1 -1
  123. package/lib/commonjs/components/MessageInput/AttachButton.js +1 -1
  124. package/lib/commonjs/components/MessageInput/CommandsButton.js +1 -1
  125. package/lib/commonjs/components/MessageInput/CooldownTimer.js +1 -1
  126. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
  127. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +1 -1
  128. package/lib/commonjs/components/MessageInput/InputButtons.js +1 -1
  129. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -1
  130. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +1 -1
  131. package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
  132. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  133. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  134. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +1 -1
  135. package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  136. package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +1 -1
  137. package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  138. package/lib/commonjs/components/MessageList/DateHeader.js +1 -1
  139. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +1 -1
  140. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  141. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  142. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  143. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +1 -1
  144. package/lib/commonjs/components/MessageList/MessageList.js +135 -107
  145. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  146. package/lib/commonjs/components/MessageList/MessageSystem.js +1 -1
  147. package/lib/commonjs/components/MessageList/NetworkDownIndicator.js +1 -1
  148. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  149. package/lib/commonjs/components/MessageList/TypingIndicator.js +1 -1
  150. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +1 -1
  151. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +1 -1
  152. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +1 -1
  153. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +1 -1
  154. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +1 -1
  155. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +1 -1
  156. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +1 -1
  157. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  158. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  159. package/lib/commonjs/components/Reply/Reply.js +1 -1
  160. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  161. package/lib/commonjs/components/Thread/Thread.js +1 -1
  162. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -1
  163. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  164. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  165. package/lib/commonjs/contexts/channelContext/ChannelContext.js +3 -3
  166. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  167. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +1 -1
  168. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  169. package/lib/commonjs/contexts/chatContext/ChatContext.js +3 -3
  170. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  171. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -1
  172. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -1
  173. package/lib/commonjs/contexts/messageContext/MessageContext.js +1 -1
  174. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +1 -1
  175. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  176. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  177. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +1 -1
  178. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  179. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -1
  180. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  181. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +3 -3
  182. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  183. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  184. package/lib/commonjs/contexts/themeContext/ThemeContext.js +1 -1
  185. package/lib/commonjs/contexts/threadContext/ThreadContext.js +1 -1
  186. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  187. package/lib/commonjs/contexts/typingContext/TypingContext.js +1 -1
  188. package/lib/commonjs/hooks/useImageErrorHandler.js +35 -0
  189. package/lib/commonjs/hooks/useImageErrorHandler.js.map +1 -0
  190. package/lib/commonjs/icons/ArrowRight.js +1 -1
  191. package/lib/commonjs/icons/AtMentions.js +1 -1
  192. package/lib/commonjs/icons/Attach.js +1 -1
  193. package/lib/commonjs/icons/Audio.js +1 -1
  194. package/lib/commonjs/icons/CSV.js +1 -1
  195. package/lib/commonjs/icons/Camera.js +1 -1
  196. package/lib/commonjs/icons/Check.js +1 -1
  197. package/lib/commonjs/icons/CheckAll.js +1 -1
  198. package/lib/commonjs/icons/CheckSend.js +1 -1
  199. package/lib/commonjs/icons/CircleClose.js +1 -1
  200. package/lib/commonjs/icons/CirclePlus.js +1 -1
  201. package/lib/commonjs/icons/CircleRight.js +1 -1
  202. package/lib/commonjs/icons/Close.js +1 -1
  203. package/lib/commonjs/icons/Copy.js +1 -1
  204. package/lib/commonjs/icons/CurveLineLeftUp.js +1 -1
  205. package/lib/commonjs/icons/DOC.js +1 -1
  206. package/lib/commonjs/icons/DOCX.js +1 -1
  207. package/lib/commonjs/icons/Delete.js +1 -1
  208. package/lib/commonjs/icons/Down.js +1 -1
  209. package/lib/commonjs/icons/DownloadArrow.js +1 -1
  210. package/lib/commonjs/icons/DownloadCloud.js +1 -1
  211. package/lib/commonjs/icons/Edit.js +1 -1
  212. package/lib/commonjs/icons/Error.js +1 -1
  213. package/lib/commonjs/icons/Eye.js +1 -1
  214. package/lib/commonjs/icons/Flag.js +1 -1
  215. package/lib/commonjs/icons/Folder.js +1 -1
  216. package/lib/commonjs/icons/GenericFile.js +1 -1
  217. package/lib/commonjs/icons/GiphyIcon.js +1 -1
  218. package/lib/commonjs/icons/Grid.js +1 -1
  219. package/lib/commonjs/icons/Group.js +1 -1
  220. package/lib/commonjs/icons/HTML.js +1 -1
  221. package/lib/commonjs/icons/Imgur.js +1 -1
  222. package/lib/commonjs/icons/LOLReaction.js +1 -1
  223. package/lib/commonjs/icons/Lightning.js +1 -1
  224. package/lib/commonjs/icons/Link.js +1 -1
  225. package/lib/commonjs/icons/Loading.js +1 -1
  226. package/lib/commonjs/icons/Logo.js +1 -1
  227. package/lib/commonjs/icons/LoveReaction.js +1 -1
  228. package/lib/commonjs/icons/MD.js +1 -1
  229. package/lib/commonjs/icons/MailOpen.js +1 -1
  230. package/lib/commonjs/icons/MenuPointHorizontal.js +1 -1
  231. package/lib/commonjs/icons/MenuPointVertical.js +1 -1
  232. package/lib/commonjs/icons/MessageFlag.js +1 -1
  233. package/lib/commonjs/icons/MessageIcon.js +1 -1
  234. package/lib/commonjs/icons/Mute.js +1 -1
  235. package/lib/commonjs/icons/Notification.js +1 -1
  236. package/lib/commonjs/icons/ODT.js +1 -1
  237. package/lib/commonjs/icons/PDF.js +1 -1
  238. package/lib/commonjs/icons/PPT.js +1 -1
  239. package/lib/commonjs/icons/PPTX.js +1 -1
  240. package/lib/commonjs/icons/Pause.js +1 -1
  241. package/lib/commonjs/icons/Picture.js +1 -1
  242. package/lib/commonjs/icons/Pin.js +1 -1
  243. package/lib/commonjs/icons/PinHeader.js +1 -1
  244. package/lib/commonjs/icons/Play.js +1 -1
  245. package/lib/commonjs/icons/RAR.js +1 -1
  246. package/lib/commonjs/icons/RTF.js +1 -1
  247. package/lib/commonjs/icons/Recorder.js +1 -1
  248. package/lib/commonjs/icons/Refresh.js +1 -1
  249. package/lib/commonjs/icons/SEVEN_Z.js +1 -1
  250. package/lib/commonjs/icons/Search.js +1 -1
  251. package/lib/commonjs/icons/SendRight.js +1 -1
  252. package/lib/commonjs/icons/SendUp.js +1 -1
  253. package/lib/commonjs/icons/Share.js +1 -1
  254. package/lib/commonjs/icons/ShareRightArrow.js +1 -1
  255. package/lib/commonjs/icons/Smile.js +1 -1
  256. package/lib/commonjs/icons/Sound.js +1 -1
  257. package/lib/commonjs/icons/TAR.js +1 -1
  258. package/lib/commonjs/icons/TXT.js +1 -1
  259. package/lib/commonjs/icons/ThreadReply.js +1 -1
  260. package/lib/commonjs/icons/ThumbsDownReaction.js +1 -1
  261. package/lib/commonjs/icons/ThumbsUpReaction.js +1 -1
  262. package/lib/commonjs/icons/Time.js +1 -1
  263. package/lib/commonjs/icons/Unknown.js +1 -1
  264. package/lib/commonjs/icons/Unpin.js +1 -1
  265. package/lib/commonjs/icons/User.js +1 -1
  266. package/lib/commonjs/icons/UserAdd.js +1 -1
  267. package/lib/commonjs/icons/UserAdmin.js +1 -1
  268. package/lib/commonjs/icons/UserDelete.js +1 -1
  269. package/lib/commonjs/icons/UserMinus.js +1 -1
  270. package/lib/commonjs/icons/Video.js +1 -1
  271. package/lib/commonjs/icons/Warning.js +1 -1
  272. package/lib/commonjs/icons/WutReaction.js +1 -1
  273. package/lib/commonjs/icons/XLS.js +1 -1
  274. package/lib/commonjs/icons/XLSX.js +1 -1
  275. package/lib/commonjs/icons/ZIP.js +1 -1
  276. package/lib/commonjs/icons/utils/base.js +1 -1
  277. package/lib/commonjs/index.js +11 -0
  278. package/lib/commonjs/index.js.map +1 -1
  279. package/lib/commonjs/mock-builders/DB/consts.js +15 -0
  280. package/lib/commonjs/mock-builders/DB/consts.js.map +1 -0
  281. package/lib/commonjs/mock-builders/DB/mock.js +125 -0
  282. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -0
  283. package/lib/commonjs/mock-builders/api/channelMocks.js +1 -0
  284. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  285. package/lib/commonjs/mock-builders/event/memberAdded.js +17 -0
  286. package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -0
  287. package/lib/commonjs/mock-builders/event/memberRemoved.js +17 -0
  288. package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -0
  289. package/lib/commonjs/mock-builders/event/memberUpdated.js +17 -0
  290. package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -0
  291. package/lib/commonjs/mock-builders/event/reactionDeleted.js +18 -0
  292. package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -0
  293. package/lib/commonjs/mock-builders/event/reactionNew.js +18 -0
  294. package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -0
  295. package/lib/commonjs/mock-builders/event/reactionUpdated.js +18 -0
  296. package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -0
  297. package/lib/commonjs/mock-builders/generator/reaction.js +1 -1
  298. package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
  299. package/lib/commonjs/store/QuickSqliteClient.js +148 -0
  300. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -0
  301. package/lib/commonjs/store/apis/deleteChannel.js +26 -0
  302. package/lib/commonjs/store/apis/deleteChannel.js.map +1 -0
  303. package/lib/commonjs/store/apis/deleteMember.js +28 -0
  304. package/lib/commonjs/store/apis/deleteMember.js.map +1 -0
  305. package/lib/commonjs/store/apis/deleteMessagesForChannel.js +26 -0
  306. package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -0
  307. package/lib/commonjs/store/apis/deleteReactions.js +28 -0
  308. package/lib/commonjs/store/apis/deleteReactions.js.map +1 -0
  309. package/lib/commonjs/store/apis/getAllChannelIds.js +16 -0
  310. package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -0
  311. package/lib/commonjs/store/apis/getChannelMessages.js +45 -0
  312. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -0
  313. package/lib/commonjs/store/apis/getChannels.js +60 -0
  314. package/lib/commonjs/store/apis/getChannels.js.map +1 -0
  315. package/lib/commonjs/store/apis/getLastSyncedAt.js +23 -0
  316. package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -0
  317. package/lib/commonjs/store/apis/getMembers.js +25 -0
  318. package/lib/commonjs/store/apis/getMembers.js.map +1 -0
  319. package/lib/commonjs/store/apis/getReads.js +25 -0
  320. package/lib/commonjs/store/apis/getReads.js.map +1 -0
  321. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js +31 -0
  322. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -0
  323. package/lib/commonjs/store/apis/queries/selectChannels.js +30 -0
  324. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -0
  325. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js +27 -0
  326. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -0
  327. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js +27 -0
  328. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -0
  329. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js +27 -0
  330. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -0
  331. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js +27 -0
  332. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -0
  333. package/lib/commonjs/store/apis/updateMessage.js +69 -0
  334. package/lib/commonjs/store/apis/updateMessage.js.map +1 -0
  335. package/lib/commonjs/store/apis/updateReaction.js +53 -0
  336. package/lib/commonjs/store/apis/updateReaction.js.map +1 -0
  337. package/lib/commonjs/store/apis/upsertChannelData.js +26 -0
  338. package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -0
  339. package/lib/commonjs/store/apis/upsertChannels.js +83 -0
  340. package/lib/commonjs/store/apis/upsertChannels.js.map +1 -0
  341. package/lib/commonjs/store/apis/upsertCidsForQuery.js +34 -0
  342. package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -0
  343. package/lib/commonjs/store/apis/upsertLastSyncedAt.js +22 -0
  344. package/lib/commonjs/store/apis/upsertLastSyncedAt.js.map +1 -0
  345. package/lib/commonjs/store/apis/upsertMembers.js +39 -0
  346. package/lib/commonjs/store/apis/upsertMembers.js.map +1 -0
  347. package/lib/commonjs/store/apis/upsertMessages.js +52 -0
  348. package/lib/commonjs/store/apis/upsertMessages.js.map +1 -0
  349. package/lib/commonjs/store/apis/upsertReads.js +39 -0
  350. package/lib/commonjs/store/apis/upsertReads.js.map +1 -0
  351. package/lib/commonjs/store/apis/utils/convertFilterSortToQuery.js +13 -0
  352. package/lib/commonjs/store/apis/utils/convertFilterSortToQuery.js.map +1 -0
  353. package/lib/commonjs/store/constants.js +11 -0
  354. package/lib/commonjs/store/constants.js.map +1 -0
  355. package/lib/commonjs/store/mappers/mapChannelDataToStorable.js +67 -0
  356. package/lib/commonjs/store/mappers/mapChannelDataToStorable.js.map +1 -0
  357. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js +12 -0
  358. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -0
  359. package/lib/commonjs/store/mappers/mapMemberToStorable.js +39 -0
  360. package/lib/commonjs/store/mappers/mapMemberToStorable.js.map +1 -0
  361. package/lib/commonjs/store/mappers/mapMessageToStorable.js +42 -0
  362. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -0
  363. package/lib/commonjs/store/mappers/mapReactionToStorable.js +34 -0
  364. package/lib/commonjs/store/mappers/mapReactionToStorable.js.map +1 -0
  365. package/lib/commonjs/store/mappers/mapReadToStorable.js +23 -0
  366. package/lib/commonjs/store/mappers/mapReadToStorable.js.map +1 -0
  367. package/lib/commonjs/store/mappers/mapStorableToChannel.js +65 -0
  368. package/lib/commonjs/store/mappers/mapStorableToChannel.js.map +1 -0
  369. package/lib/commonjs/store/mappers/mapStorableToMember.js +38 -0
  370. package/lib/commonjs/store/mappers/mapStorableToMember.js.map +1 -0
  371. package/lib/commonjs/store/mappers/mapStorableToMessage.js +50 -0
  372. package/lib/commonjs/store/mappers/mapStorableToMessage.js.map +1 -0
  373. package/lib/commonjs/store/mappers/mapStorableToReaction.js +31 -0
  374. package/lib/commonjs/store/mappers/mapStorableToReaction.js.map +1 -0
  375. package/lib/commonjs/store/mappers/mapStorableToRead.js +20 -0
  376. package/lib/commonjs/store/mappers/mapStorableToRead.js.map +1 -0
  377. package/lib/commonjs/store/mappers/mapStorableToUser.js +31 -0
  378. package/lib/commonjs/store/mappers/mapStorableToUser.js.map +1 -0
  379. package/lib/commonjs/store/mappers/mapUserToStorable.js +34 -0
  380. package/lib/commonjs/store/mappers/mapUserToStorable.js.map +1 -0
  381. package/lib/commonjs/store/schema.js +161 -0
  382. package/lib/commonjs/store/schema.js.map +1 -0
  383. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js +37 -0
  384. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -0
  385. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +35 -0
  386. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -0
  387. package/lib/commonjs/store/sqlite-utils/createDeleteQuery.js +14 -0
  388. package/lib/commonjs/store/sqlite-utils/createDeleteQuery.js.map +1 -0
  389. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +26 -0
  390. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -0
  391. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +29 -0
  392. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -0
  393. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +30 -0
  394. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -0
  395. package/lib/commonjs/store/sqlite-utils/printRow.js +33 -0
  396. package/lib/commonjs/store/sqlite-utils/printRow.js.map +1 -0
  397. package/lib/commonjs/store/types.js +4 -0
  398. package/lib/commonjs/store/types.js.map +1 -0
  399. package/lib/commonjs/version.json +1 -1
  400. package/lib/module/components/Attachment/Attachment.js +1 -1
  401. package/lib/module/components/Attachment/AttachmentActions.js +1 -1
  402. package/lib/module/components/Attachment/Card.js +1 -1
  403. package/lib/module/components/Attachment/FileAttachment.js +1 -1
  404. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  405. package/lib/module/components/Attachment/FileIcon.js +1 -1
  406. package/lib/module/components/Attachment/GallaryImage.js +1 -1
  407. package/lib/module/components/Attachment/Gallery.js +1 -1
  408. package/lib/module/components/Attachment/Giphy.js +1 -1
  409. package/lib/module/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  410. package/lib/module/components/Attachment/ImageLoadingIndicator.js +1 -1
  411. package/lib/module/components/Attachment/VideoThumbnail.js +1 -1
  412. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  413. package/lib/module/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  414. package/lib/module/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  415. package/lib/module/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  416. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  417. package/lib/module/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  418. package/lib/module/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  419. package/lib/module/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  420. package/lib/module/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  421. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  422. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  423. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  424. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  425. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  426. package/lib/module/components/Avatar/Avatar.js +29 -16
  427. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  428. package/lib/module/components/Avatar/GroupAvatar.js +26 -19
  429. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  430. package/lib/module/components/Channel/Channel.js +227 -257
  431. package/lib/module/components/Channel/Channel.js.map +1 -1
  432. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -0
  433. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  434. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +2 -0
  435. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  436. package/lib/module/components/ChannelList/ChannelList.js +33 -3
  437. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  438. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  439. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  440. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  441. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  442. package/lib/module/components/ChannelList/ChannelListMessenger.js +20 -8
  443. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  444. package/lib/module/components/ChannelList/Skeleton.js +1 -1
  445. package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js +187 -0
  446. package/lib/module/components/ChannelList/hooks/listeners/handleEventToSyncDB.js.map +1 -0
  447. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js +2 -2
  448. package/lib/module/components/ChannelList/hooks/listeners/useAddedToChannelNotification.js.map +1 -1
  449. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js +2 -2
  450. package/lib/module/components/ChannelList/hooks/listeners/useChannelDeleted.js.map +1 -1
  451. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js +2 -2
  452. package/lib/module/components/ChannelList/hooks/listeners/useChannelHidden.js.map +1 -1
  453. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js +2 -2
  454. package/lib/module/components/ChannelList/hooks/listeners/useChannelTruncated.js.map +1 -1
  455. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js +2 -2
  456. package/lib/module/components/ChannelList/hooks/listeners/useChannelUpdated.js.map +1 -1
  457. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js +2 -2
  458. package/lib/module/components/ChannelList/hooks/listeners/useChannelVisible.js.map +1 -1
  459. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js +128 -18
  460. package/lib/module/components/ChannelList/hooks/listeners/useConnectionRecovered.js.map +1 -1
  461. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js +2 -2
  462. package/lib/module/components/ChannelList/hooks/listeners/useNewMessage.js.map +1 -1
  463. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +2 -2
  464. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  465. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js +2 -2
  466. package/lib/module/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.js.map +1 -1
  467. package/lib/module/components/ChannelList/hooks/listeners/useSyncDatabase.js +34 -0
  468. package/lib/module/components/ChannelList/hooks/listeners/useSyncDatabase.js.map +1 -0
  469. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js +4 -4
  470. package/lib/module/components/ChannelList/hooks/listeners/useUserPresence.js.map +1 -1
  471. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +47 -21
  472. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  473. package/lib/module/components/ChannelPreview/ChannelAvatar.js +1 -1
  474. package/lib/module/components/ChannelPreview/ChannelAvatar.js.map +1 -1
  475. package/lib/module/components/ChannelPreview/ChannelPreview.js +7 -9
  476. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  477. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +8 -6
  478. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  479. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  480. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  481. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  482. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  483. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  484. package/lib/module/components/Chat/Chat.js +18 -7
  485. package/lib/module/components/Chat/Chat.js.map +1 -1
  486. package/lib/module/components/Chat/hooks/useCreateChatContext.js +3 -1
  487. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  488. package/lib/module/components/Chat/hooks/useMutedUsers.js +3 -3
  489. package/lib/module/components/Chat/hooks/useMutedUsers.js.map +1 -1
  490. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  491. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  492. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  493. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  494. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  495. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  496. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  497. package/lib/module/components/ImageGallery/components/ImageGrid.js +1 -1
  498. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +1 -1
  499. package/lib/module/components/ImageGallery/components/ProgressControl.js +1 -1
  500. package/lib/module/components/Indicators/EmptyStateIndicator.js +1 -1
  501. package/lib/module/components/Indicators/LoadingDot.js +1 -1
  502. package/lib/module/components/Indicators/LoadingDots.js +1 -1
  503. package/lib/module/components/Indicators/LoadingErrorIndicator.js +1 -1
  504. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  505. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  506. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  507. package/lib/module/components/Message/Message.js +1 -1
  508. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +1 -1
  509. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  510. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  511. package/lib/module/components/Message/MessageSimple/MessageFooter.js +1 -1
  512. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  513. package/lib/module/components/Message/MessageSimple/MessageReplies.js +1 -1
  514. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  515. package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -1
  516. package/lib/module/components/Message/MessageSimple/MessageStatus.js +1 -1
  517. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  518. package/lib/module/components/Message/MessageSimple/ReactionList.js +1 -1
  519. package/lib/module/components/Message/MessageSimple/utils/renderText.js +1 -1
  520. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  521. package/lib/module/components/Message/hooks/useMessageActions.js +1 -1
  522. package/lib/module/components/MessageInput/AttachButton.js +1 -1
  523. package/lib/module/components/MessageInput/CommandsButton.js +1 -1
  524. package/lib/module/components/MessageInput/CooldownTimer.js +1 -1
  525. package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
  526. package/lib/module/components/MessageInput/ImageUploadPreview.js +1 -1
  527. package/lib/module/components/MessageInput/InputButtons.js +1 -1
  528. package/lib/module/components/MessageInput/MessageInput.js +1 -1
  529. package/lib/module/components/MessageInput/MoreOptionsButton.js +1 -1
  530. package/lib/module/components/MessageInput/SendButton.js +1 -1
  531. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  532. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  533. package/lib/module/components/MessageInput/UploadProgressIndicator.js +1 -1
  534. package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  535. package/lib/module/components/MessageInput/components/InputGiphySearch.js +1 -1
  536. package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  537. package/lib/module/components/MessageList/DateHeader.js +1 -1
  538. package/lib/module/components/MessageList/InlineDateSeparator.js +1 -1
  539. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  540. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  541. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  542. package/lib/module/components/MessageList/InlineUnreadIndicator.js +1 -1
  543. package/lib/module/components/MessageList/MessageList.js +135 -107
  544. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  545. package/lib/module/components/MessageList/MessageSystem.js +1 -1
  546. package/lib/module/components/MessageList/NetworkDownIndicator.js +1 -1
  547. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  548. package/lib/module/components/MessageList/TypingIndicator.js +1 -1
  549. package/lib/module/components/MessageList/TypingIndicatorContainer.js +1 -1
  550. package/lib/module/components/MessageOverlay/MessageActionList.js +1 -1
  551. package/lib/module/components/MessageOverlay/MessageActionListItem.js +1 -1
  552. package/lib/module/components/MessageOverlay/MessageOverlay.js +1 -1
  553. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +1 -1
  554. package/lib/module/components/MessageOverlay/OverlayReactionList.js +1 -1
  555. package/lib/module/components/MessageOverlay/OverlayReactions.js +1 -1
  556. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  557. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  558. package/lib/module/components/Reply/Reply.js +1 -1
  559. package/lib/module/components/Spinner/Spinner.js +1 -1
  560. package/lib/module/components/Thread/Thread.js +1 -1
  561. package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -1
  562. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  563. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  564. package/lib/module/contexts/channelContext/ChannelContext.js +3 -3
  565. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  566. package/lib/module/contexts/channelsContext/ChannelsContext.js +1 -1
  567. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  568. package/lib/module/contexts/chatContext/ChatContext.js +3 -3
  569. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  570. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -1
  571. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -1
  572. package/lib/module/contexts/messageContext/MessageContext.js +1 -1
  573. package/lib/module/contexts/messageInputContext/MessageInputContext.js +1 -1
  574. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  575. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  576. package/lib/module/contexts/messagesContext/MessagesContext.js +1 -1
  577. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  578. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -1
  579. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  580. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +3 -3
  581. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  582. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  583. package/lib/module/contexts/themeContext/ThemeContext.js +1 -1
  584. package/lib/module/contexts/threadContext/ThreadContext.js +1 -1
  585. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  586. package/lib/module/contexts/typingContext/TypingContext.js +1 -1
  587. package/lib/module/hooks/useImageErrorHandler.js +35 -0
  588. package/lib/module/hooks/useImageErrorHandler.js.map +1 -0
  589. package/lib/module/icons/ArrowRight.js +1 -1
  590. package/lib/module/icons/AtMentions.js +1 -1
  591. package/lib/module/icons/Attach.js +1 -1
  592. package/lib/module/icons/Audio.js +1 -1
  593. package/lib/module/icons/CSV.js +1 -1
  594. package/lib/module/icons/Camera.js +1 -1
  595. package/lib/module/icons/Check.js +1 -1
  596. package/lib/module/icons/CheckAll.js +1 -1
  597. package/lib/module/icons/CheckSend.js +1 -1
  598. package/lib/module/icons/CircleClose.js +1 -1
  599. package/lib/module/icons/CirclePlus.js +1 -1
  600. package/lib/module/icons/CircleRight.js +1 -1
  601. package/lib/module/icons/Close.js +1 -1
  602. package/lib/module/icons/Copy.js +1 -1
  603. package/lib/module/icons/CurveLineLeftUp.js +1 -1
  604. package/lib/module/icons/DOC.js +1 -1
  605. package/lib/module/icons/DOCX.js +1 -1
  606. package/lib/module/icons/Delete.js +1 -1
  607. package/lib/module/icons/Down.js +1 -1
  608. package/lib/module/icons/DownloadArrow.js +1 -1
  609. package/lib/module/icons/DownloadCloud.js +1 -1
  610. package/lib/module/icons/Edit.js +1 -1
  611. package/lib/module/icons/Error.js +1 -1
  612. package/lib/module/icons/Eye.js +1 -1
  613. package/lib/module/icons/Flag.js +1 -1
  614. package/lib/module/icons/Folder.js +1 -1
  615. package/lib/module/icons/GenericFile.js +1 -1
  616. package/lib/module/icons/GiphyIcon.js +1 -1
  617. package/lib/module/icons/Grid.js +1 -1
  618. package/lib/module/icons/Group.js +1 -1
  619. package/lib/module/icons/HTML.js +1 -1
  620. package/lib/module/icons/Imgur.js +1 -1
  621. package/lib/module/icons/LOLReaction.js +1 -1
  622. package/lib/module/icons/Lightning.js +1 -1
  623. package/lib/module/icons/Link.js +1 -1
  624. package/lib/module/icons/Loading.js +1 -1
  625. package/lib/module/icons/Logo.js +1 -1
  626. package/lib/module/icons/LoveReaction.js +1 -1
  627. package/lib/module/icons/MD.js +1 -1
  628. package/lib/module/icons/MailOpen.js +1 -1
  629. package/lib/module/icons/MenuPointHorizontal.js +1 -1
  630. package/lib/module/icons/MenuPointVertical.js +1 -1
  631. package/lib/module/icons/MessageFlag.js +1 -1
  632. package/lib/module/icons/MessageIcon.js +1 -1
  633. package/lib/module/icons/Mute.js +1 -1
  634. package/lib/module/icons/Notification.js +1 -1
  635. package/lib/module/icons/ODT.js +1 -1
  636. package/lib/module/icons/PDF.js +1 -1
  637. package/lib/module/icons/PPT.js +1 -1
  638. package/lib/module/icons/PPTX.js +1 -1
  639. package/lib/module/icons/Pause.js +1 -1
  640. package/lib/module/icons/Picture.js +1 -1
  641. package/lib/module/icons/Pin.js +1 -1
  642. package/lib/module/icons/PinHeader.js +1 -1
  643. package/lib/module/icons/Play.js +1 -1
  644. package/lib/module/icons/RAR.js +1 -1
  645. package/lib/module/icons/RTF.js +1 -1
  646. package/lib/module/icons/Recorder.js +1 -1
  647. package/lib/module/icons/Refresh.js +1 -1
  648. package/lib/module/icons/SEVEN_Z.js +1 -1
  649. package/lib/module/icons/Search.js +1 -1
  650. package/lib/module/icons/SendRight.js +1 -1
  651. package/lib/module/icons/SendUp.js +1 -1
  652. package/lib/module/icons/Share.js +1 -1
  653. package/lib/module/icons/ShareRightArrow.js +1 -1
  654. package/lib/module/icons/Smile.js +1 -1
  655. package/lib/module/icons/Sound.js +1 -1
  656. package/lib/module/icons/TAR.js +1 -1
  657. package/lib/module/icons/TXT.js +1 -1
  658. package/lib/module/icons/ThreadReply.js +1 -1
  659. package/lib/module/icons/ThumbsDownReaction.js +1 -1
  660. package/lib/module/icons/ThumbsUpReaction.js +1 -1
  661. package/lib/module/icons/Time.js +1 -1
  662. package/lib/module/icons/Unknown.js +1 -1
  663. package/lib/module/icons/Unpin.js +1 -1
  664. package/lib/module/icons/User.js +1 -1
  665. package/lib/module/icons/UserAdd.js +1 -1
  666. package/lib/module/icons/UserAdmin.js +1 -1
  667. package/lib/module/icons/UserDelete.js +1 -1
  668. package/lib/module/icons/UserMinus.js +1 -1
  669. package/lib/module/icons/Video.js +1 -1
  670. package/lib/module/icons/Warning.js +1 -1
  671. package/lib/module/icons/WutReaction.js +1 -1
  672. package/lib/module/icons/XLS.js +1 -1
  673. package/lib/module/icons/XLSX.js +1 -1
  674. package/lib/module/icons/ZIP.js +1 -1
  675. package/lib/module/icons/utils/base.js +1 -1
  676. package/lib/module/index.js +11 -0
  677. package/lib/module/index.js.map +1 -1
  678. package/lib/module/mock-builders/DB/consts.js +15 -0
  679. package/lib/module/mock-builders/DB/consts.js.map +1 -0
  680. package/lib/module/mock-builders/DB/mock.js +125 -0
  681. package/lib/module/mock-builders/DB/mock.js.map +1 -0
  682. package/lib/module/mock-builders/api/channelMocks.js +1 -0
  683. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  684. package/lib/module/mock-builders/event/memberAdded.js +17 -0
  685. package/lib/module/mock-builders/event/memberAdded.js.map +1 -0
  686. package/lib/module/mock-builders/event/memberRemoved.js +17 -0
  687. package/lib/module/mock-builders/event/memberRemoved.js.map +1 -0
  688. package/lib/module/mock-builders/event/memberUpdated.js +17 -0
  689. package/lib/module/mock-builders/event/memberUpdated.js.map +1 -0
  690. package/lib/module/mock-builders/event/reactionDeleted.js +18 -0
  691. package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -0
  692. package/lib/module/mock-builders/event/reactionNew.js +18 -0
  693. package/lib/module/mock-builders/event/reactionNew.js.map +1 -0
  694. package/lib/module/mock-builders/event/reactionUpdated.js +18 -0
  695. package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -0
  696. package/lib/module/mock-builders/generator/reaction.js +1 -1
  697. package/lib/module/mock-builders/generator/reaction.js.map +1 -1
  698. package/lib/module/store/QuickSqliteClient.js +148 -0
  699. package/lib/module/store/QuickSqliteClient.js.map +1 -0
  700. package/lib/module/store/apis/deleteChannel.js +26 -0
  701. package/lib/module/store/apis/deleteChannel.js.map +1 -0
  702. package/lib/module/store/apis/deleteMember.js +28 -0
  703. package/lib/module/store/apis/deleteMember.js.map +1 -0
  704. package/lib/module/store/apis/deleteMessagesForChannel.js +26 -0
  705. package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -0
  706. package/lib/module/store/apis/deleteReactions.js +28 -0
  707. package/lib/module/store/apis/deleteReactions.js.map +1 -0
  708. package/lib/module/store/apis/getAllChannelIds.js +16 -0
  709. package/lib/module/store/apis/getAllChannelIds.js.map +1 -0
  710. package/lib/module/store/apis/getChannelMessages.js +45 -0
  711. package/lib/module/store/apis/getChannelMessages.js.map +1 -0
  712. package/lib/module/store/apis/getChannels.js +60 -0
  713. package/lib/module/store/apis/getChannels.js.map +1 -0
  714. package/lib/module/store/apis/getLastSyncedAt.js +23 -0
  715. package/lib/module/store/apis/getLastSyncedAt.js.map +1 -0
  716. package/lib/module/store/apis/getMembers.js +25 -0
  717. package/lib/module/store/apis/getMembers.js.map +1 -0
  718. package/lib/module/store/apis/getReads.js +25 -0
  719. package/lib/module/store/apis/getReads.js.map +1 -0
  720. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js +31 -0
  721. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -0
  722. package/lib/module/store/apis/queries/selectChannels.js +30 -0
  723. package/lib/module/store/apis/queries/selectChannels.js.map +1 -0
  724. package/lib/module/store/apis/queries/selectMembersForChannels.js +27 -0
  725. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -0
  726. package/lib/module/store/apis/queries/selectMessagesForChannels.js +27 -0
  727. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -0
  728. package/lib/module/store/apis/queries/selectReactionsForMessages.js +27 -0
  729. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -0
  730. package/lib/module/store/apis/queries/selectReadsForChannels.js +27 -0
  731. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -0
  732. package/lib/module/store/apis/updateMessage.js +69 -0
  733. package/lib/module/store/apis/updateMessage.js.map +1 -0
  734. package/lib/module/store/apis/updateReaction.js +53 -0
  735. package/lib/module/store/apis/updateReaction.js.map +1 -0
  736. package/lib/module/store/apis/upsertChannelData.js +26 -0
  737. package/lib/module/store/apis/upsertChannelData.js.map +1 -0
  738. package/lib/module/store/apis/upsertChannels.js +83 -0
  739. package/lib/module/store/apis/upsertChannels.js.map +1 -0
  740. package/lib/module/store/apis/upsertCidsForQuery.js +34 -0
  741. package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -0
  742. package/lib/module/store/apis/upsertLastSyncedAt.js +22 -0
  743. package/lib/module/store/apis/upsertLastSyncedAt.js.map +1 -0
  744. package/lib/module/store/apis/upsertMembers.js +39 -0
  745. package/lib/module/store/apis/upsertMembers.js.map +1 -0
  746. package/lib/module/store/apis/upsertMessages.js +52 -0
  747. package/lib/module/store/apis/upsertMessages.js.map +1 -0
  748. package/lib/module/store/apis/upsertReads.js +39 -0
  749. package/lib/module/store/apis/upsertReads.js.map +1 -0
  750. package/lib/module/store/apis/utils/convertFilterSortToQuery.js +13 -0
  751. package/lib/module/store/apis/utils/convertFilterSortToQuery.js.map +1 -0
  752. package/lib/module/store/constants.js +11 -0
  753. package/lib/module/store/constants.js.map +1 -0
  754. package/lib/module/store/mappers/mapChannelDataToStorable.js +67 -0
  755. package/lib/module/store/mappers/mapChannelDataToStorable.js.map +1 -0
  756. package/lib/module/store/mappers/mapDateTimeToStorable.js +12 -0
  757. package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -0
  758. package/lib/module/store/mappers/mapMemberToStorable.js +39 -0
  759. package/lib/module/store/mappers/mapMemberToStorable.js.map +1 -0
  760. package/lib/module/store/mappers/mapMessageToStorable.js +42 -0
  761. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -0
  762. package/lib/module/store/mappers/mapReactionToStorable.js +34 -0
  763. package/lib/module/store/mappers/mapReactionToStorable.js.map +1 -0
  764. package/lib/module/store/mappers/mapReadToStorable.js +23 -0
  765. package/lib/module/store/mappers/mapReadToStorable.js.map +1 -0
  766. package/lib/module/store/mappers/mapStorableToChannel.js +65 -0
  767. package/lib/module/store/mappers/mapStorableToChannel.js.map +1 -0
  768. package/lib/module/store/mappers/mapStorableToMember.js +38 -0
  769. package/lib/module/store/mappers/mapStorableToMember.js.map +1 -0
  770. package/lib/module/store/mappers/mapStorableToMessage.js +50 -0
  771. package/lib/module/store/mappers/mapStorableToMessage.js.map +1 -0
  772. package/lib/module/store/mappers/mapStorableToReaction.js +31 -0
  773. package/lib/module/store/mappers/mapStorableToReaction.js.map +1 -0
  774. package/lib/module/store/mappers/mapStorableToRead.js +20 -0
  775. package/lib/module/store/mappers/mapStorableToRead.js.map +1 -0
  776. package/lib/module/store/mappers/mapStorableToUser.js +31 -0
  777. package/lib/module/store/mappers/mapStorableToUser.js.map +1 -0
  778. package/lib/module/store/mappers/mapUserToStorable.js +34 -0
  779. package/lib/module/store/mappers/mapUserToStorable.js.map +1 -0
  780. package/lib/module/store/schema.js +161 -0
  781. package/lib/module/store/schema.js.map +1 -0
  782. package/lib/module/store/sqlite-utils/appendWhereCluase.js +37 -0
  783. package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -0
  784. package/lib/module/store/sqlite-utils/createCreateTableQuery.js +35 -0
  785. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -0
  786. package/lib/module/store/sqlite-utils/createDeleteQuery.js +14 -0
  787. package/lib/module/store/sqlite-utils/createDeleteQuery.js.map +1 -0
  788. package/lib/module/store/sqlite-utils/createSelectQuery.js +26 -0
  789. package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -0
  790. package/lib/module/store/sqlite-utils/createUpdateQuery.js +29 -0
  791. package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -0
  792. package/lib/module/store/sqlite-utils/createUpsertQuery.js +30 -0
  793. package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -0
  794. package/lib/module/store/sqlite-utils/printRow.js +33 -0
  795. package/lib/module/store/sqlite-utils/printRow.js.map +1 -0
  796. package/lib/module/store/types.js +4 -0
  797. package/lib/module/store/types.js.map +1 -0
  798. package/lib/module/version.json +1 -1
  799. package/lib/typescript/__tests__/utils/BetterSqlite.d.ts +8 -0
  800. package/lib/typescript/components/Channel/Channel.d.ts +3 -5
  801. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  802. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +1 -1
  803. package/lib/typescript/components/ChannelList/hooks/listeners/handleEventToSyncDB.d.ts +2 -0
  804. package/lib/typescript/components/ChannelList/hooks/listeners/useConnectionRecovered.d.ts +3 -2
  805. package/lib/typescript/components/ChannelList/hooks/listeners/useSyncDatabase.d.ts +6 -0
  806. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -2
  807. package/lib/typescript/components/Chat/Chat.d.ts +4 -0
  808. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  809. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  810. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +17 -0
  811. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -0
  812. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +4 -0
  813. package/lib/typescript/hooks/useImageErrorHandler.d.ts +5 -0
  814. package/lib/typescript/index.d.ts +2 -0
  815. package/lib/typescript/store/QuickSqliteClient.d.ts +18 -0
  816. package/lib/typescript/store/apis/deleteChannel.d.ts +4 -0
  817. package/lib/typescript/store/apis/deleteMember.d.ts +6 -0
  818. package/lib/typescript/store/apis/deleteMessagesForChannel.d.ts +4 -0
  819. package/lib/typescript/store/apis/deleteReactions.d.ts +4 -0
  820. package/lib/typescript/store/apis/getAllChannelIds.d.ts +1 -0
  821. package/lib/typescript/store/apis/getChannelMessages.d.ts +6 -0
  822. package/lib/typescript/store/apis/getChannels.d.ts +7 -0
  823. package/lib/typescript/store/apis/getLastSyncedAt.d.ts +3 -0
  824. package/lib/typescript/store/apis/getMembers.d.ts +5 -0
  825. package/lib/typescript/store/apis/getReads.d.ts +5 -0
  826. package/lib/typescript/store/apis/queries/selectChannelIdsForFilterSort.d.ts +6 -0
  827. package/lib/typescript/store/apis/queries/selectChannels.d.ts +4 -0
  828. package/lib/typescript/store/apis/queries/selectMembersForChannels.d.ts +2 -0
  829. package/lib/typescript/store/apis/queries/selectMessagesForChannels.d.ts +2 -0
  830. package/lib/typescript/store/apis/queries/selectReactionsForMessages.d.ts +2 -0
  831. package/lib/typescript/store/apis/queries/selectReadsForChannels.d.ts +2 -0
  832. package/lib/typescript/store/apis/updateMessage.d.ts +6 -0
  833. package/lib/typescript/store/apis/updateReaction.d.ts +7 -0
  834. package/lib/typescript/store/apis/upsertChannelData.d.ts +5 -0
  835. package/lib/typescript/store/apis/upsertChannels.d.ts +9 -0
  836. package/lib/typescript/store/apis/upsertCidsForQuery.d.ts +7 -0
  837. package/lib/typescript/store/apis/upsertLastSyncedAt.d.ts +4 -0
  838. package/lib/typescript/store/apis/upsertMembers.d.ts +7 -0
  839. package/lib/typescript/store/apis/upsertMessages.d.ts +6 -0
  840. package/lib/typescript/store/apis/upsertReads.d.ts +7 -0
  841. package/lib/typescript/store/apis/utils/convertFilterSortToQuery.d.ts +6 -0
  842. package/lib/typescript/store/constants.d.ts +3 -0
  843. package/lib/typescript/store/mappers/mapChannelDataToStorable.d.ts +4 -0
  844. package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -0
  845. package/lib/typescript/store/mappers/mapMemberToStorable.d.ts +7 -0
  846. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +3 -0
  847. package/lib/typescript/store/mappers/mapReactionToStorable.d.ts +3 -0
  848. package/lib/typescript/store/mappers/mapReadToStorable.d.ts +7 -0
  849. package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +4 -0
  850. package/lib/typescript/store/mappers/mapStorableToMember.d.ts +4 -0
  851. package/lib/typescript/store/mappers/mapStorableToMessage.d.ts +8 -0
  852. package/lib/typescript/store/mappers/mapStorableToReaction.d.ts +4 -0
  853. package/lib/typescript/store/mappers/mapStorableToRead.d.ts +4 -0
  854. package/lib/typescript/store/mappers/mapStorableToUser.d.ts +4 -0
  855. package/lib/typescript/store/mappers/mapUserToStorable.d.ts +3 -0
  856. package/lib/typescript/store/schema.d.ts +110 -0
  857. package/lib/typescript/store/sqlite-utils/__tests__/createSelectQuery.test.d.ts +1 -0
  858. package/lib/typescript/store/sqlite-utils/appendWhereCluase.d.ts +2 -0
  859. package/lib/typescript/store/sqlite-utils/createCreateTableQuery.d.ts +2 -0
  860. package/lib/typescript/store/sqlite-utils/createDeleteQuery.d.ts +12 -0
  861. package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +13 -0
  862. package/lib/typescript/store/sqlite-utils/createUpdateQuery.d.ts +13 -0
  863. package/lib/typescript/store/sqlite-utils/createUpsertQuery.d.ts +11 -0
  864. package/lib/typescript/store/sqlite-utils/printRow.d.ts +2 -0
  865. package/lib/typescript/store/types.d.ts +8 -0
  866. package/package.json +4 -2
  867. package/src/__tests__/offline-feature.test.js +619 -0
  868. package/src/__tests__/utils/BetterSqlite.js +44 -0
  869. package/src/components/Avatar/Avatar.tsx +46 -31
  870. package/src/components/Avatar/GroupAvatar.tsx +55 -43
  871. package/src/components/Channel/Channel.tsx +101 -136
  872. package/src/components/Channel/hooks/useCreateChannelContext.ts +2 -0
  873. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +2 -0
  874. package/src/components/ChannelList/ChannelList.tsx +25 -2
  875. package/src/components/ChannelList/ChannelListMessenger.tsx +4 -0
  876. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +1 -0
  877. package/src/components/ChannelList/hooks/listeners/handleEventToSyncDB.ts +175 -0
  878. package/src/components/ChannelList/hooks/listeners/useAddedToChannelNotification.ts +2 -2
  879. package/src/components/ChannelList/hooks/listeners/useChannelDeleted.ts +2 -2
  880. package/src/components/ChannelList/hooks/listeners/useChannelHidden.ts +2 -2
  881. package/src/components/ChannelList/hooks/listeners/useChannelTruncated.ts +2 -2
  882. package/src/components/ChannelList/hooks/listeners/useChannelUpdated.ts +2 -2
  883. package/src/components/ChannelList/hooks/listeners/useChannelVisible.ts +2 -2
  884. package/src/components/ChannelList/hooks/listeners/useConnectionRecovered.ts +59 -14
  885. package/src/components/ChannelList/hooks/listeners/useNewMessage.ts +3 -2
  886. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +2 -2
  887. package/src/components/ChannelList/hooks/listeners/useRemovedFromChannelNotification.ts +2 -2
  888. package/src/components/ChannelList/hooks/listeners/useSyncDatabase.ts +30 -0
  889. package/src/components/ChannelList/hooks/listeners/useUserPresence.ts +5 -4
  890. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +34 -10
  891. package/src/components/ChannelPreview/ChannelAvatar.tsx +3 -3
  892. package/src/components/ChannelPreview/ChannelPreview.tsx +8 -8
  893. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +10 -9
  894. package/src/components/Chat/Chat.tsx +24 -3
  895. package/src/components/Chat/hooks/useCreateChatContext.ts +7 -3
  896. package/src/components/Chat/hooks/useMutedUsers.ts +5 -3
  897. package/src/components/MessageList/MessageList.tsx +156 -100
  898. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +2 -0
  899. package/src/contexts/channelContext/ChannelContext.tsx +15 -0
  900. package/src/contexts/chatContext/ChatContext.tsx +1 -0
  901. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +4 -0
  902. package/src/hooks/useImageErrorHandler.ts +16 -0
  903. package/src/index.ts +3 -0
  904. package/src/mock-builders/DB/consts.ts +2 -0
  905. package/src/mock-builders/DB/mock.ts +114 -0
  906. package/src/mock-builders/api/channelMocks.tsx +1 -0
  907. package/src/mock-builders/event/memberAdded.js +9 -0
  908. package/src/mock-builders/event/memberRemoved.js +9 -0
  909. package/src/mock-builders/event/memberUpdated.js +9 -0
  910. package/src/mock-builders/event/reactionDeleted.js +10 -0
  911. package/src/mock-builders/event/reactionNew.js +10 -0
  912. package/src/mock-builders/event/reactionUpdated.js +10 -0
  913. package/src/mock-builders/generator/reaction.js +1 -1
  914. package/src/store/QuickSqliteClient.ts +120 -0
  915. package/src/store/apis/deleteChannel.ts +14 -0
  916. package/src/store/apis/deleteMember.ts +25 -0
  917. package/src/store/apis/deleteMessagesForChannel.ts +19 -0
  918. package/src/store/apis/deleteReactions.ts +24 -0
  919. package/src/store/apis/getAllChannelIds.ts +7 -0
  920. package/src/store/apis/getChannelMessages.ts +50 -0
  921. package/src/store/apis/getChannels.ts +43 -0
  922. package/src/store/apis/getLastSyncedAt.ts +13 -0
  923. package/src/store/apis/getMembers.ts +26 -0
  924. package/src/store/apis/getReads.ts +26 -0
  925. package/src/store/apis/queries/selectChannelIdsForFilterSort.ts +28 -0
  926. package/src/store/apis/queries/selectChannels.ts +19 -0
  927. package/src/store/apis/queries/selectMembersForChannels.ts +32 -0
  928. package/src/store/apis/queries/selectMessagesForChannels.ts +40 -0
  929. package/src/store/apis/queries/selectReactionsForMessages.ts +33 -0
  930. package/src/store/apis/queries/selectReadsForChannels.ts +30 -0
  931. package/src/store/apis/updateMessage.ts +65 -0
  932. package/src/store/apis/updateReaction.ts +54 -0
  933. package/src/store/apis/upsertChannelData.ts +20 -0
  934. package/src/store/apis/upsertChannels.ts +79 -0
  935. package/src/store/apis/upsertCidsForQuery.ts +30 -0
  936. package/src/store/apis/upsertLastSyncedAt.ts +17 -0
  937. package/src/store/apis/upsertMembers.ts +41 -0
  938. package/src/store/apis/upsertMessages.ts +43 -0
  939. package/src/store/apis/upsertReads.ts +41 -0
  940. package/src/store/apis/utils/convertFilterSortToQuery.ts +14 -0
  941. package/src/store/constants.ts +3 -0
  942. package/src/store/mappers/mapChannelDataToStorable.ts +67 -0
  943. package/src/store/mappers/mapDateTimeToStorable.ts +5 -0
  944. package/src/store/mappers/mapMemberToStorable.ts +45 -0
  945. package/src/store/mappers/mapMessageToStorable.ts +35 -0
  946. package/src/store/mappers/mapReactionToStorable.ts +19 -0
  947. package/src/store/mappers/mapReadToStorable.ts +25 -0
  948. package/src/store/mappers/mapStorableToChannel.ts +69 -0
  949. package/src/store/mappers/mapStorableToMember.ts +42 -0
  950. package/src/store/mappers/mapStorableToMessage.ts +40 -0
  951. package/src/store/mappers/mapStorableToReaction.ts +25 -0
  952. package/src/store/mappers/mapStorableToRead.ts +21 -0
  953. package/src/store/mappers/mapStorableToUser.ts +23 -0
  954. package/src/store/mappers/mapUserToStorable.ts +18 -0
  955. package/src/store/schema.ts +284 -0
  956. package/src/store/sqlite-utils/__tests__/createSelectQuery.test.ts +21 -0
  957. package/src/store/sqlite-utils/appendWhereCluase.ts +31 -0
  958. package/src/store/sqlite-utils/createCreateTableQuery.ts +39 -0
  959. package/src/store/sqlite-utils/createDeleteQuery.ts +23 -0
  960. package/src/store/sqlite-utils/createSelectQuery.ts +25 -0
  961. package/src/store/sqlite-utils/createUpdateQuery.ts +27 -0
  962. package/src/store/sqlite-utils/createUpsertQuery.ts +48 -0
  963. package/src/store/sqlite-utils/printRow.ts +28 -0
  964. package/src/store/types.ts +11 -0
  965. package/src/version.json +1 -1
@@ -79,14 +79,14 @@ const ChannelPreviewWithContext = <
79
79
  }
80
80
  };
81
81
 
82
- channel.on('message.new', handleEvent);
83
- channel.on('message.updated', handleEvent);
84
- channel.on('message.deleted', handleEvent);
82
+ const listeners = [
83
+ channel.on('message.new', handleEvent),
84
+ channel.on('message.updated', handleEvent),
85
+ channel.on('message.deleted', handleEvent),
86
+ ];
85
87
 
86
88
  return () => {
87
- channel.off('message.new', handleEvent);
88
- channel.off('message.updated', handleEvent);
89
- channel.off('message.deleted', handleEvent);
89
+ listeners.forEach((l) => l.unsubscribe());
90
90
  };
91
91
  }, []);
92
92
 
@@ -99,8 +99,8 @@ const ChannelPreviewWithContext = <
99
99
  }
100
100
  };
101
101
 
102
- channel.on('message.read', handleReadEvent);
103
- return () => channel.off('message.read', handleReadEvent);
102
+ const listener = channel.on('message.read', handleReadEvent);
103
+ return () => listener.unsubscribe();
104
104
  }, []);
105
105
 
106
106
  return <Preview channel={channel} latestMessagePreview={latestMessagePreview} unread={unread} />;
@@ -37,15 +37,16 @@ export const ChannelPreviewMessage = <
37
37
 
38
38
  return (
39
39
  <Text numberOfLines={1} style={[styles.message, { color: grey }, message]}>
40
- {latestMessagePreview.previews.map((preview, index) =>
41
- preview.text ? (
42
- <Text
43
- key={`${preview.text}_${index}`}
44
- style={[{ color: grey }, preview.bold ? styles.bold : {}, message]}
45
- >
46
- {preview.text}
47
- </Text>
48
- ) : null,
40
+ {latestMessagePreview?.previews?.map(
41
+ (preview, index) =>
42
+ preview.text && (
43
+ <Text
44
+ key={`${preview.text}_${index}`}
45
+ style={[{ color: grey }, preview.bold ? styles.bold : {}, message]}
46
+ >
47
+ {preview.text}
48
+ </Text>
49
+ ),
49
50
  )}
50
51
  </Text>
51
52
  );
@@ -23,6 +23,7 @@ import { useStreami18n } from '../../hooks/useStreami18n';
23
23
  import init from '../../init';
24
24
 
25
25
  import { SDK } from '../../native';
26
+ import { QuickSqliteClient } from '../../store/QuickSqliteClient';
26
27
  import type { DefaultStreamChatGenerics } from '../../types/types';
27
28
  import type { Streami18n } from '../../utils/Streami18n';
28
29
  import { version } from '../../version.json';
@@ -39,6 +40,10 @@ export type ChatProps<
39
40
  * app goes to background, and reconnect when app comes to foreground.
40
41
  */
41
42
  closeConnectionOnBackground?: boolean;
43
+ /**
44
+ * Enables offline storage and loading for chat data.
45
+ */
46
+ enableOfflineSupport?: boolean;
42
47
  /**
43
48
  * Instance of Streami18n class should be provided to Chat component to enable internationalization.
44
49
  *
@@ -127,7 +132,14 @@ const ChatWithContext = <
127
132
  >(
128
133
  props: PropsWithChildren<ChatProps<StreamChatGenerics>>,
129
134
  ) => {
130
- const { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;
135
+ const {
136
+ children,
137
+ client,
138
+ closeConnectionOnBackground = true,
139
+ enableOfflineSupport = false,
140
+ i18nInstance,
141
+ style,
142
+ } = props;
131
143
 
132
144
  const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();
133
145
  const [translators, setTranslators] = useState<TranslatorFunctions>({
@@ -150,16 +162,18 @@ const ChatWithContext = <
150
162
 
151
163
  /**
152
164
  * Setup muted user listener
165
+ * TODO: reimplement
153
166
  */
154
167
  const mutedUsers = useMutedUsers<StreamChatGenerics>(client);
155
168
 
156
169
  useEffect(() => {
157
- if (client.setUserAgent) {
170
+ if (client) {
158
171
  client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);
159
172
  // This is to disable recovery related logic in js client, since we handle it in this SDK
160
173
  client.recoverStateOnReconnect = false;
174
+ client.persistUserOnConnectionFailure = enableOfflineSupport;
161
175
  }
162
- }, []);
176
+ }, [client]);
163
177
 
164
178
  const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);
165
179
 
@@ -170,11 +184,18 @@ const ChatWithContext = <
170
184
  channel,
171
185
  client,
172
186
  connectionRecovering,
187
+ enableOfflineSupport,
173
188
  isOnline,
174
189
  mutedUsers,
175
190
  setActiveChannel,
176
191
  });
177
192
 
193
+ useEffect(() => {
194
+ if (enableOfflineSupport) {
195
+ QuickSqliteClient.initializeDatabase();
196
+ }
197
+ }, []);
198
+
178
199
  if (loadingTranslators) return null;
179
200
 
180
201
  return (
@@ -10,14 +10,17 @@ export const useCreateChatContext = <
10
10
  channel,
11
11
  client,
12
12
  connectionRecovering,
13
+ enableOfflineSupport,
13
14
  isOnline,
14
15
  mutedUsers,
15
16
  setActiveChannel,
16
17
  }: ChatContextValue<StreamChatGenerics>) => {
17
18
  const channelId = channel?.id;
18
- const clientValues = `${client.clientID}${Object.keys(client.activeChannels).length}${
19
- Object.keys(client.listeners).length
20
- }${client.mutedChannels.length}`;
19
+ const clientValues = client
20
+ ? `${client.clientID}${Object.keys(client.activeChannels).length}${
21
+ Object.keys(client.listeners).length
22
+ }${client.mutedChannels.length}`
23
+ : 'Offline';
21
24
  const mutedUsersLength = mutedUsers.length;
22
25
 
23
26
  const chatContext: ChatContextValue<StreamChatGenerics> = useMemo(
@@ -26,6 +29,7 @@ export const useCreateChatContext = <
26
29
  channel,
27
30
  client,
28
31
  connectionRecovering,
32
+ enableOfflineSupport,
29
33
  isOnline,
30
34
  mutedUsers,
31
35
  setActiveChannel,
@@ -9,15 +9,17 @@ export const useMutedUsers = <
9
9
  >(
10
10
  client: StreamChat<StreamChatGenerics>,
11
11
  ) => {
12
- const [mutedUsers, setMutedUsers] = useState<Mute<StreamChatGenerics>[]>(client.mutedUsers || []);
12
+ const [mutedUsers, setMutedUsers] = useState<Mute<StreamChatGenerics>[]>(
13
+ client?.mutedUsers || [],
14
+ );
13
15
 
14
16
  useEffect(() => {
15
17
  const handleEvent = (event: Event<StreamChatGenerics>) => {
16
18
  setMutedUsers((mutes) => event.me?.mutes || mutes || []);
17
19
  };
18
20
 
19
- client.on('notification.mutes_updated', handleEvent);
20
- return () => client.off('notification.mutes_updated', handleEvent);
21
+ const listener = client?.on('notification.mutes_updated', handleEvent);
22
+ return () => listener?.unsubscribe();
21
23
  }, [setMutedUsers]);
22
24
 
23
25
  return mutedUsers;
@@ -112,7 +112,7 @@ type MessageListPropsWithContext<
112
112
  | 'disabled'
113
113
  | 'EmptyStateIndicator'
114
114
  | 'hideStickyDateHeader'
115
- | 'loadChannelAtMessage'
115
+ | 'loadChannelAroundMessage'
116
116
  | 'loading'
117
117
  | 'LoadingIndicator'
118
118
  | 'markRead'
@@ -125,7 +125,10 @@ type MessageListPropsWithContext<
125
125
  > &
126
126
  Pick<ChatContextValue<StreamChatGenerics>, 'client'> &
127
127
  Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setImages'> &
128
- Pick<PaginatedMessageListContextValue<StreamChatGenerics>, 'loadMore' | 'loadMoreRecent'> &
128
+ Pick<
129
+ PaginatedMessageListContextValue<StreamChatGenerics>,
130
+ 'hasNoMoreRecentMessagesToLoad' | 'loadMore' | 'loadMoreRecent'
131
+ > &
129
132
  Pick<OverlayContextValue, 'overlay'> &
130
133
  Pick<
131
134
  MessagesContextValue<StreamChatGenerics>,
@@ -238,6 +241,7 @@ const MessageListWithContext = <
238
241
  EmptyStateIndicator,
239
242
  FlatList,
240
243
  FooterComponent = LoadingMoreIndicator,
244
+ hasNoMoreRecentMessagesToLoad,
241
245
  HeaderComponent = InlineLoadingMoreRecentIndicator,
242
246
  hideStickyDateHeader,
243
247
  initialScrollToFirstUnreadMessage,
@@ -246,7 +250,7 @@ const MessageListWithContext = <
246
250
  inverted = true,
247
251
  isListActive = false,
248
252
  legacyImageViewerSwipeBehaviour,
249
- loadChannelAtMessage,
253
+ loadChannelAroundMessage,
250
254
  loading,
251
255
  LoadingIndicator,
252
256
  loadMore,
@@ -320,49 +324,49 @@ const MessageListWithContext = <
320
324
 
321
325
  const flatListRef = useRef<FlatListType<MessageType<StreamChatGenerics>> | null>(null);
322
326
 
323
- const initialScrollSet = useRef<boolean>(false);
327
+ /**
328
+ * Flag to track if the initial scroll has been set
329
+ * If the prop `initialScrollToFirstUnreadMessage` was enabled, then we scroll to the unread msg and set it to true
330
+ * If not, the default offset of 0 for flatList means that it has been set already
331
+ */
332
+ const initialScrollSet = useRef<boolean>(!initialScrollToFirstUnreadMessage);
333
+
324
334
  const channelResyncScrollSet = useRef<boolean>(true);
325
335
 
336
+ /**
337
+ * The timeout id used to debounce our scrollToIndex calls on messageList updates
338
+ */
339
+ const scrollToDebounceTimeoutRef = useRef<NodeJS.Timeout>();
340
+
341
+ /**
342
+ * If a messageId was requested to scroll to but was unloaded,
343
+ * this flag keeps track of it to scroll to it after loading the message
344
+ */
345
+ const messageIdToScrollToRef = useRef<string>();
346
+ /**
347
+ * Last messageID that was scrolled to after loading a new message list,
348
+ * this flag keeps track of it so that we dont scroll to it again on target message set
349
+ */
350
+ const messageIdLastScrolledToRef = useRef<string>();
326
351
  const [hasMoved, setHasMoved] = useState(false);
327
352
  const [lastReceivedId, setLastReceivedId] = useState(getLastReceivedMessage(messageList)?.id);
328
353
  const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);
329
354
 
330
355
  const [stickyHeaderDate, setStickyHeaderDate] = useState<Date | undefined>();
331
356
  const stickyHeaderDateRef = useRef<Date | undefined>();
332
- /**
333
- * channel.lastRead throws error if the channel is not initialized.
334
- */
335
- const getLastReadSafely = () => (channel?.initialized ? channel.lastRead() : undefined);
336
357
 
337
- const channelLastRead = useRef(getLastReadSafely());
358
+ const isUnreadMessageRef = useRef(
359
+ (
360
+ message: MessageType<StreamChatGenerics> | undefined,
361
+ lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,
362
+ ) => message && lastRead && message.created_at && lastRead < message.created_at,
363
+ );
338
364
 
339
- const isUnreadMessage = (
340
- message: MessageType<StreamChatGenerics> | undefined,
341
- lastRead?: ReturnType<StreamChannel<StreamChatGenerics>['lastRead']>,
342
- ) => message && lastRead && message.created_at && lastRead < message.created_at;
365
+ const channelLastReadRef = useRef(channel?.initialized ? channel.lastRead() : undefined);
343
366
 
344
- /**
345
- * If the top message in the list is unread, then we should scroll to top of the list.
346
- * This is to handle the case when entire message list is unread.
347
- * This scroll get set only on load, and never again.
348
- */
349
- const setInitialScrollIfNeeded = () => {
350
- // If the feature is disabled or initial scroll position is already set.
351
- if (!initialScrollToFirstUnreadMessage || initialScrollSet.current) {
352
- initialScrollSet.current = true;
353
- return;
354
- }
355
- if (isUnreadMessage(topMessageBeforeUpdate.current, channelLastRead.current)) {
356
- if (flatListRef.current) {
357
- flatListRef.current.scrollToEnd();
358
- }
359
- setTimeout(() => {
360
- initialScrollSet.current = true;
361
- }, 500);
362
- } else if (!initialScrollSet.current) {
363
- initialScrollSet.current = true;
364
- }
365
- };
367
+ useEffect(() => {
368
+ channelLastReadRef.current = channel?.initialized ? channel.lastRead() : undefined;
369
+ }, [channel]);
366
370
 
367
371
  const updateStickyHeaderDateIfNeeded = (viewableItems: ViewToken[]) => {
368
372
  if (viewableItems.length) {
@@ -409,14 +413,16 @@ const MessageListWithContext = <
409
413
  if (viewableItems && !hideStickyDateHeader) {
410
414
  updateStickyHeaderDateIfNeeded(viewableItems);
411
415
  }
412
- setInitialScrollIfNeeded();
413
416
  },
414
417
  );
415
418
 
416
- const resetPaginationTrackers = () => {
419
+ /**
420
+ * Resets the pagination trackers, doing so cancels currently scheduled loading more calls
421
+ */
422
+ const resetPaginationTrackersRef = useRef(() => {
417
423
  onStartReachedTracker.current = {};
418
424
  onEndReachedTracker.current = {};
419
- };
425
+ });
420
426
 
421
427
  useEffect(() => {
422
428
  setScrollToBottomButtonVisible(false);
@@ -474,15 +480,13 @@ const MessageListWithContext = <
474
480
  ) {
475
481
  channelResyncScrollSet.current = false;
476
482
  setScrollToBottomButtonVisible(false);
477
- resetPaginationTrackers();
478
-
479
- setTimeout(
480
- () =>
481
- flatListRef.current?.scrollToOffset({
482
- offset: 0,
483
- }),
484
- 50,
485
- );
483
+ resetPaginationTrackersRef.current();
484
+
485
+ setTimeout(() => {
486
+ flatListRef.current?.scrollToOffset({
487
+ offset: 0,
488
+ });
489
+ }, 50);
486
490
  setTimeout(() => {
487
491
  channelResyncScrollSet.current = true;
488
492
  if (channel.countUnread() > 0) {
@@ -492,14 +496,14 @@ const MessageListWithContext = <
492
496
  }
493
497
  };
494
498
 
495
- if (threadList || channel?.state.isUpToDate) {
499
+ if (threadList || hasNoMoreRecentMessagesToLoad) {
496
500
  scrollToBottomIfNeeded();
497
501
  } else if (!scrollToBottomButtonVisible) {
498
502
  setScrollToBottomButtonVisible(true);
499
503
  }
500
504
 
501
505
  if (
502
- !channel?.state.isUpToDate &&
506
+ !hasNoMoreRecentMessagesToLoad &&
503
507
  flatListRef.current &&
504
508
  messageListLengthBeforeUpdate.current === 0 &&
505
509
  messageListLengthAfterUpdate < 10
@@ -511,26 +515,13 @@ const MessageListWithContext = <
511
515
  maybeCallOnStartReached(10);
512
516
  }
513
517
 
514
- /**
515
- * channelLastRead and topMessage are only used for setting initial scroll.
516
- * So lets not set it if `initialScrollToFirstUnreadMessage` prop is false.
517
- * OR if the scroll is already set.
518
- */
519
- if (initialScrollToFirstUnreadMessage && !initialScrollSet.current) {
520
- channelLastRead.current = getLastReadSafely();
521
- }
522
-
523
518
  messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;
524
519
  topMessageBeforeUpdate.current = topMessageAfterUpdate;
525
520
  }, [messageListLengthAfterUpdate, topMessageAfterUpdate?.id]);
526
521
 
527
522
  useEffect(() => {
528
- if (!channel?.state.isUpToDate && autoscrollToTop) {
529
- setAutoscrollToTop(false);
530
- } else if (channel?.state.isUpToDate && !autoscrollToTop) {
531
- setAutoscrollToTop(true);
532
- }
533
- }, [messageListLengthAfterUpdate]);
523
+ setAutoscrollToTop(hasNoMoreRecentMessagesToLoad);
524
+ }, [messageList, hasNoMoreRecentMessagesToLoad]);
534
525
 
535
526
  const renderItem = ({
536
527
  index,
@@ -541,13 +532,14 @@ const MessageListWithContext = <
541
532
  }) => {
542
533
  if (!channel || !channel.initialized) return null;
543
534
 
544
- const lastRead = getLastReadSafely();
535
+ const lastRead = channel.lastRead();
545
536
 
546
537
  const lastMessage = messageList?.[index + 1];
547
538
 
548
- const showUnreadUnderlay = !!isUnreadMessage(message, lastRead) && scrollToBottomButtonVisible;
539
+ const showUnreadUnderlay =
540
+ !!isUnreadMessageRef.current(message, lastRead) && scrollToBottomButtonVisible;
549
541
  const insertInlineUnreadIndicator =
550
- showUnreadUnderlay && !isUnreadMessage(lastMessage, lastRead);
542
+ showUnreadUnderlay && !isUnreadMessageRef.current(lastMessage, lastRead);
551
543
 
552
544
  if (message.type === 'system') {
553
545
  return (
@@ -721,7 +713,7 @@ const MessageListWithContext = <
721
713
  * |-> if channel is unread, call markRead().
722
714
  */
723
715
  const handleScroll: ScrollViewProps['onScroll'] = (event) => {
724
- if (!channel || !initialScrollSet.current || !channelResyncScrollSet.current) {
716
+ if (!channel || !channelResyncScrollSet.current) {
725
717
  return;
726
718
  }
727
719
 
@@ -742,20 +734,16 @@ const MessageListWithContext = <
742
734
 
743
735
  // Show scrollToBottom button once scroll position goes beyond 300.
744
736
  const isScrollAtBottom = offset <= 300;
745
- const showScrollToBottomButton = !isScrollAtBottom || !channel?.state.isUpToDate;
737
+ const showScrollToBottomButton = !isScrollAtBottom || !hasNoMoreRecentMessagesToLoad;
746
738
 
747
739
  const shouldMarkRead =
748
- !threadList && offset <= 0 && channel?.state.isUpToDate && channel.countUnread() > 0;
740
+ !threadList && offset <= 0 && hasNoMoreRecentMessagesToLoad && channel.countUnread() > 0;
749
741
 
750
742
  if (shouldMarkRead) {
751
743
  markRead();
752
744
  }
753
745
 
754
- if (showScrollToBottomButton && !scrollToBottomButtonVisible) {
755
- setScrollToBottomButtonVisible(true);
756
- } else if (!showScrollToBottomButton && scrollToBottomButtonVisible) {
757
- setScrollToBottomButtonVisible(false);
758
- }
746
+ setScrollToBottomButtonVisible(showScrollToBottomButton);
759
747
 
760
748
  if (onListScroll) {
761
749
  onListScroll(event);
@@ -763,9 +751,8 @@ const MessageListWithContext = <
763
751
  };
764
752
 
765
753
  const goToNewMessages = async () => {
766
- if (!channel?.state.isUpToDate) {
767
- resetPaginationTrackers();
768
-
754
+ if (!hasNoMoreRecentMessagesToLoad) {
755
+ resetPaginationTrackersRef.current();
769
756
  await reloadChannel();
770
757
  } else if (flatListRef.current) {
771
758
  flatListRef.current.scrollToOffset({
@@ -779,33 +766,98 @@ const MessageListWithContext = <
779
766
  }
780
767
  };
781
768
 
769
+ const onScrollToIndexFailedRef = useRef<
770
+ FlatListProps<MessageType<StreamChatGenerics>>['onScrollToIndexFailed']
771
+ >((info) => {
772
+ // We got a failure as we tried to scroll to an item that was outside the render length
773
+ if (flatListRef.current) {
774
+ // we dont know the actual size of all items but we can see the average, so scroll to the closest offset
775
+ flatListRef.current.scrollToOffset({
776
+ animated: false,
777
+ offset: info.averageItemLength * info.index,
778
+ });
779
+ // since we used only an average offset.. we wont go to the center of the item yet
780
+ // with a little delay to wait for scroll to offset to complete, we can then scroll to the index
781
+ setTimeout(() => {
782
+ flatListRef.current?.scrollToIndex({
783
+ animated: false,
784
+ index: info.index,
785
+ viewPosition: 0.5, // try to place message in the center of the screen
786
+ });
787
+ if (messageIdLastScrolledToRef.current) {
788
+ setTargetedMessage(messageIdLastScrolledToRef.current);
789
+ }
790
+ }, 150);
791
+ }
792
+ });
793
+
782
794
  const goToMessage = useCallback(
783
795
  (messageId: string) => {
784
796
  const indexOfParentInMessageList = messageList.findIndex(
785
797
  (message) => message?.id === messageId,
786
798
  );
799
+ if (indexOfParentInMessageList !== -1 && flatListRef.current) {
800
+ flatListRef.current.scrollToIndex({
801
+ animated: true,
802
+ index: indexOfParentInMessageList,
803
+ viewPosition: 0.5, // try to place message in the center of the screen
804
+ });
805
+ // keep track of this messageId, so that we dont scroll to again in useEffect for targeted message change
806
+ messageIdLastScrolledToRef.current = messageId;
807
+ setTargetedMessage(messageId);
808
+ return;
809
+ }
810
+ messageIdToScrollToRef.current = messageId; // keep track of the id to scroll afterwards
811
+ loadChannelAroundMessage({ messageId }); // now try to load the message and whats around it
812
+ resetPaginationTrackersRef.current();
813
+ },
814
+ [messageList],
815
+ );
787
816
 
788
- if (indexOfParentInMessageList > -1) {
789
- try {
790
- if (flatListRef.current) {
791
- flatListRef.current.scrollToIndex({
792
- index: indexOfParentInMessageList,
793
- viewPosition: 0.5,
794
- });
795
- setTargetedMessage(messageId);
796
-
797
- return;
817
+ /**
818
+ * Check if a messageId needs to be scrolled to after list loads, and scroll to it
819
+ * Note: This effect fires on every list change with a small debounce so that scrolling isnt abrupted by an immediate rerender
820
+ */
821
+ useEffect(() => {
822
+ if (scrollToDebounceTimeoutRef.current) clearTimeout(scrollToDebounceTimeoutRef.current);
823
+ scrollToDebounceTimeoutRef.current = setTimeout(() => {
824
+ // goToMessage method might have requested to scroll to a message
825
+ let messageIdToScroll: string | undefined = messageIdToScrollToRef.current;
826
+ if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {
827
+ // find the first unread message, if we have to initially scroll to an unread message
828
+ for (let index = messageList.length - 1; index >= 0; index--) {
829
+ if (isUnreadMessageRef.current(messageList[index], channelLastReadRef.current)) {
830
+ messageIdToScroll = messageList[index].id;
831
+ break;
798
832
  }
799
- } catch (_) {
800
- // do nothing;
801
833
  }
834
+ } else if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {
835
+ // if some messageId was targeted but not scrolledTo yet
836
+ // we have scroll to there after loading completes
837
+ messageIdToScroll = targetedMessage;
802
838
  }
803
-
804
- loadChannelAtMessage({ messageId });
805
- resetPaginationTrackers();
806
- },
807
- [messageListLengthAfterUpdate],
808
- );
839
+ if (!messageIdToScroll) return;
840
+ const indexOfParentInMessageList = messageList.findIndex(
841
+ (message) => message?.id === messageIdToScroll,
842
+ );
843
+ if (indexOfParentInMessageList !== -1 && flatListRef.current) {
844
+ flatListRef.current.scrollToIndex({
845
+ animated: false,
846
+ index: indexOfParentInMessageList,
847
+ viewPosition: 0.5, // try to place message in the center of the screen
848
+ });
849
+ // reset the messageId tracker to not scroll to that again
850
+ messageIdToScrollToRef.current = undefined;
851
+ // keep track of this messageId, so that we dont scroll to again for targeted message change
852
+ messageIdLastScrolledToRef.current = messageIdToScroll;
853
+ if (!initialScrollSet.current && initialScrollToFirstUnreadMessage) {
854
+ initialScrollSet.current = true;
855
+ } else {
856
+ setTargetedMessage(messageIdToScroll);
857
+ }
858
+ }
859
+ }, 150);
860
+ }, [messageList, targetedMessage, initialScrollToFirstUnreadMessage]);
809
861
 
810
862
  const messagesWithImages =
811
863
  legacyImageViewerSwipeBehaviour &&
@@ -911,7 +963,7 @@ const MessageListWithContext = <
911
963
  contentContainerStyle={[styles.contentContainer, contentContainer]}
912
964
  data={messageList}
913
965
  /** Disables the MessageList UI. Which means, message actions, reactions won't work. */
914
- extraData={disabled || !channel?.state.isUpToDate}
966
+ extraData={disabled || !hasNoMoreRecentMessagesToLoad}
915
967
  inverted={inverted}
916
968
  keyboardShouldPersistTaps='handled'
917
969
  keyExtractor={keyExtractor}
@@ -922,9 +974,11 @@ const MessageListWithContext = <
922
974
  autoscrollToTopThreshold: autoscrollToTop ? 10 : undefined,
923
975
  minIndexForVisible: 1,
924
976
  }}
977
+ maxToRenderPerBatch={30}
925
978
  onScroll={handleScroll}
926
979
  onScrollBeginDrag={onScrollBeginDrag}
927
980
  onScrollEndDrag={onScrollEndDrag}
981
+ onScrollToIndexFailed={onScrollToIndexFailedRef.current}
928
982
  onTouchEnd={dismissImagePicker}
929
983
  onViewableItemsChanged={onViewableItemsChanged.current}
930
984
  ref={refCallback}
@@ -980,7 +1034,7 @@ export const MessageList = <
980
1034
  error,
981
1035
  hideStickyDateHeader,
982
1036
  isChannelActive,
983
- loadChannelAtMessage,
1037
+ loadChannelAroundMessage,
984
1038
  loading,
985
1039
  LoadingIndicator,
986
1040
  markRead,
@@ -1009,7 +1063,8 @@ export const MessageList = <
1009
1063
  TypingIndicator,
1010
1064
  TypingIndicatorContainer,
1011
1065
  } = useMessagesContext<StreamChatGenerics>();
1012
- const { loadMore, loadMoreRecent } = usePaginatedMessageListContext<StreamChatGenerics>();
1066
+ const { hasNoMoreRecentMessagesToLoad, loadMore, loadMoreRecent } =
1067
+ usePaginatedMessageListContext<StreamChatGenerics>();
1013
1068
  const { overlay } = useOverlayContext();
1014
1069
  const { loadMoreThread, thread } = useThreadContext<StreamChatGenerics>();
1015
1070
  const { t, tDateTimeParser } = useTranslationContext();
@@ -1028,13 +1083,14 @@ export const MessageList = <
1028
1083
  enableMessageGroupingByUser,
1029
1084
  error,
1030
1085
  FlatList,
1086
+ hasNoMoreRecentMessagesToLoad,
1031
1087
  hideStickyDateHeader,
1032
1088
  initialScrollToFirstUnreadMessage,
1033
1089
  InlineDateSeparator,
1034
1090
  InlineUnreadIndicator,
1035
1091
  isListActive: isChannelActive,
1036
1092
  legacyImageViewerSwipeBehaviour,
1037
- loadChannelAtMessage,
1093
+ loadChannelAroundMessage,
1038
1094
  loading,
1039
1095
  LoadingIndicator,
1040
1096
  loadMore,
@@ -147,6 +147,7 @@ exports[`Thread should match thread snapshot 1`] = `
147
147
  "minIndexForVisible": 1,
148
148
  }
149
149
  }
150
+ maxToRenderPerBatch={30}
150
151
  onContentSizeChange={[Function]}
151
152
  onLayout={[Function]}
152
153
  onMomentumScrollBegin={[Function]}
@@ -154,6 +155,7 @@ exports[`Thread should match thread snapshot 1`] = `
154
155
  onScroll={[Function]}
155
156
  onScrollBeginDrag={[Function]}
156
157
  onScrollEndDrag={[Function]}
158
+ onScrollToIndexFailed={[Function]}
157
159
  onTouchEnd={[Function]}
158
160
  onViewableItemsChanged={[Function]}
159
161
  removeClippedSubviews={false}
@@ -71,6 +71,21 @@ export type ChannelContextValue<
71
71
  * Returns true if the current user is a owner
72
72
  */
73
73
  isOwner: boolean;
74
+ /**
75
+ * Loads channel around a specific message
76
+ *
77
+ * @param messageId If undefined, channel will be loaded at most recent message.
78
+ */
79
+ loadChannelAroundMessage: ({ messageId }: { messageId?: string }) => Promise<void>;
80
+ /**
81
+ * @deprecated use loadChannelAroundMessage instead
82
+ *
83
+ * Loads channel at specific message
84
+ *
85
+ * @param messageId If undefined, channel will be loaded at most recent message.
86
+ * @param before Number of message to query before messageId
87
+ * @param after Number of message to query after messageId
88
+ */
74
89
  loadChannelAtMessage: ({
75
90
  after,
76
91
  before,
@@ -33,6 +33,7 @@ export type ChatContextValue<
33
33
  * */
34
34
  client: StreamChat<StreamChatGenerics>;
35
35
  connectionRecovering: boolean;
36
+ enableOfflineSupport: boolean;
36
37
  isOnline: boolean;
37
38
  mutedUsers: Mute<StreamChatGenerics>[];
38
39
  /**