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

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