stream-chat-react-native-core 5.5.1-beta.1 → 5.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (739) 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 +1 -1
  9. package/lib/commonjs/components/Attachment/GalleryImage.js +20 -4
  10. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/Giphy.js +1 -1
  12. package/lib/commonjs/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  13. package/lib/commonjs/components/Attachment/ImageLoadingIndicator.js +1 -1
  14. package/lib/commonjs/components/Attachment/VideoThumbnail.js +1 -1
  15. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  16. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  17. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  18. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  19. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.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 +1 -1
  31. package/lib/commonjs/components/Avatar/GroupAvatar.js +1 -1
  32. package/lib/commonjs/components/Channel/Channel.js +537 -155
  33. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  34. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  35. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  36. package/lib/commonjs/components/ChannelList/ChannelList.js +5 -16
  37. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  38. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  39. package/lib/commonjs/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  40. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  41. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  42. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +1 -1
  43. package/lib/commonjs/components/ChannelList/Skeleton.js +1 -1
  44. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +112 -42
  45. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  46. package/lib/commonjs/components/ChannelPreview/ChannelAvatar.js +1 -1
  47. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +1 -1
  48. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  49. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  50. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  51. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  52. package/lib/commonjs/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  53. package/lib/commonjs/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  54. package/lib/commonjs/components/Chat/Chat.js +17 -21
  55. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  56. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -4
  57. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  58. package/lib/commonjs/components/ImageBackground.js +1 -1
  59. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  60. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  61. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  62. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  63. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  64. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  65. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  66. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +1 -1
  67. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +1 -1
  68. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +1 -1
  69. package/lib/commonjs/components/Indicators/LoadingDot.js +1 -1
  70. package/lib/commonjs/components/Indicators/LoadingDots.js +1 -1
  71. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +1 -1
  72. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  73. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  74. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  75. package/lib/commonjs/components/Message/Message.js +22 -11
  76. package/lib/commonjs/components/Message/Message.js.map +1 -1
  77. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js +1 -1
  78. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  79. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  80. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +15 -13
  81. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  82. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  83. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +1 -1
  84. package/lib/commonjs/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  85. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -1
  86. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +1 -1
  87. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  88. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +1 -1
  89. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +1 -1
  90. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  91. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +9 -30
  92. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  93. package/lib/commonjs/components/Message/hooks/useMessageActions.js +20 -18
  94. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  95. package/lib/commonjs/components/MessageInput/AttachButton.js +1 -1
  96. package/lib/commonjs/components/MessageInput/CommandsButton.js +1 -1
  97. package/lib/commonjs/components/MessageInput/CooldownTimer.js +1 -1
  98. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +32 -22
  99. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  100. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +52 -20
  101. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  102. package/lib/commonjs/components/MessageInput/InputButtons.js +1 -1
  103. package/lib/commonjs/components/MessageInput/MessageInput.js +40 -28
  104. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  105. package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +1 -1
  106. package/lib/commonjs/components/MessageInput/SendButton.js +2 -2
  107. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  108. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  109. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  110. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +1 -1
  111. package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  112. package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +1 -1
  113. package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  114. package/lib/commonjs/components/MessageList/DateHeader.js +1 -1
  115. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +1 -1
  116. package/lib/commonjs/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  117. package/lib/commonjs/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  118. package/lib/commonjs/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  119. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +1 -1
  120. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  121. package/lib/commonjs/components/MessageList/MessageSystem.js +1 -1
  122. package/lib/commonjs/components/MessageList/NetworkDownIndicator.js +1 -1
  123. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  124. package/lib/commonjs/components/MessageList/TypingIndicator.js +1 -1
  125. package/lib/commonjs/components/MessageList/TypingIndicatorContainer.js +1 -1
  126. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +1 -1
  127. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +1 -1
  128. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +1 -1
  129. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +1 -1
  130. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +1 -1
  131. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +1 -1
  132. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  133. package/lib/commonjs/components/ProgressControl/ProgressControl.js +1 -1
  134. package/lib/commonjs/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  135. package/lib/commonjs/components/Reply/Reply.js +1 -1
  136. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  137. package/lib/commonjs/components/Thread/Thread.js +1 -1
  138. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -1
  139. package/lib/commonjs/components/index.js +0 -13
  140. package/lib/commonjs/components/index.js.map +1 -1
  141. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  142. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  143. package/lib/commonjs/contexts/channelContext/ChannelContext.js +1 -1
  144. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +1 -1
  145. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  146. package/lib/commonjs/contexts/chatContext/ChatContext.js +3 -3
  147. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  148. package/lib/commonjs/contexts/debugContext/DebugContext.js +1 -1
  149. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -1
  150. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -1
  151. package/lib/commonjs/contexts/messageContext/MessageContext.js +1 -1
  152. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +23 -14
  153. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  154. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  155. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  156. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +3 -3
  157. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  158. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  159. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -1
  160. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  161. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -1
  162. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  163. package/lib/commonjs/contexts/themeContext/ThemeContext.js +1 -1
  164. package/lib/commonjs/contexts/threadContext/ThreadContext.js +1 -1
  165. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -1
  166. package/lib/commonjs/contexts/typingContext/TypingContext.js +1 -1
  167. package/lib/commonjs/hooks/useTranslatedMessage.js +1 -1
  168. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  169. package/lib/commonjs/icons/ArrowRight.js +1 -1
  170. package/lib/commonjs/icons/AtMentions.js +1 -1
  171. package/lib/commonjs/icons/Attach.js +1 -1
  172. package/lib/commonjs/icons/Audio.js +1 -1
  173. package/lib/commonjs/icons/CSV.js +1 -1
  174. package/lib/commonjs/icons/Camera.js +1 -1
  175. package/lib/commonjs/icons/Check.js +1 -1
  176. package/lib/commonjs/icons/CheckAll.js +1 -1
  177. package/lib/commonjs/icons/CheckSend.js +1 -1
  178. package/lib/commonjs/icons/CircleClose.js +1 -1
  179. package/lib/commonjs/icons/CirclePlus.js +1 -1
  180. package/lib/commonjs/icons/CircleRight.js +1 -1
  181. package/lib/commonjs/icons/Close.js +1 -1
  182. package/lib/commonjs/icons/Copy.js +1 -1
  183. package/lib/commonjs/icons/CurveLineLeftUp.js +1 -1
  184. package/lib/commonjs/icons/DOC.js +1 -1
  185. package/lib/commonjs/icons/DOCX.js +1 -1
  186. package/lib/commonjs/icons/Delete.js +1 -1
  187. package/lib/commonjs/icons/Down.js +1 -1
  188. package/lib/commonjs/icons/DownloadArrow.js +1 -1
  189. package/lib/commonjs/icons/DownloadCloud.js +1 -1
  190. package/lib/commonjs/icons/Edit.js +1 -1
  191. package/lib/commonjs/icons/Error.js +1 -1
  192. package/lib/commonjs/icons/Eye.js +1 -1
  193. package/lib/commonjs/icons/Flag.js +1 -1
  194. package/lib/commonjs/icons/Folder.js +1 -1
  195. package/lib/commonjs/icons/GenericFile.js +1 -1
  196. package/lib/commonjs/icons/GiphyIcon.js +1 -1
  197. package/lib/commonjs/icons/Grid.js +1 -1
  198. package/lib/commonjs/icons/Group.js +1 -1
  199. package/lib/commonjs/icons/HTML.js +1 -1
  200. package/lib/commonjs/icons/Imgur.js +1 -1
  201. package/lib/commonjs/icons/LOLReaction.js +1 -1
  202. package/lib/commonjs/icons/Lightning.js +1 -1
  203. package/lib/commonjs/icons/Link.js +1 -1
  204. package/lib/commonjs/icons/Loading.js +1 -1
  205. package/lib/commonjs/icons/Logo.js +1 -1
  206. package/lib/commonjs/icons/LoveReaction.js +1 -1
  207. package/lib/commonjs/icons/MD.js +1 -1
  208. package/lib/commonjs/icons/MailOpen.js +1 -1
  209. package/lib/commonjs/icons/MenuPointHorizontal.js +1 -1
  210. package/lib/commonjs/icons/MenuPointVertical.js +1 -1
  211. package/lib/commonjs/icons/MessageFlag.js +1 -1
  212. package/lib/commonjs/icons/MessageIcon.js +1 -1
  213. package/lib/commonjs/icons/Mute.js +1 -1
  214. package/lib/commonjs/icons/Notification.js +1 -1
  215. package/lib/commonjs/icons/ODT.js +1 -1
  216. package/lib/commonjs/icons/PDF.js +1 -1
  217. package/lib/commonjs/icons/PPT.js +1 -1
  218. package/lib/commonjs/icons/PPTX.js +1 -1
  219. package/lib/commonjs/icons/Pause.js +1 -1
  220. package/lib/commonjs/icons/Picture.js +1 -1
  221. package/lib/commonjs/icons/Pin.js +1 -1
  222. package/lib/commonjs/icons/PinHeader.js +1 -1
  223. package/lib/commonjs/icons/Play.js +1 -1
  224. package/lib/commonjs/icons/RAR.js +1 -1
  225. package/lib/commonjs/icons/RTF.js +1 -1
  226. package/lib/commonjs/icons/Recorder.js +1 -1
  227. package/lib/commonjs/icons/Refresh.js +1 -1
  228. package/lib/commonjs/icons/SEVEN_Z.js +1 -1
  229. package/lib/commonjs/icons/Search.js +1 -1
  230. package/lib/commonjs/icons/SendRight.js +1 -1
  231. package/lib/commonjs/icons/SendUp.js +1 -1
  232. package/lib/commonjs/icons/Share.js +1 -1
  233. package/lib/commonjs/icons/ShareRightArrow.js +1 -1
  234. package/lib/commonjs/icons/Smile.js +1 -1
  235. package/lib/commonjs/icons/Sound.js +1 -1
  236. package/lib/commonjs/icons/TAR.js +1 -1
  237. package/lib/commonjs/icons/TXT.js +1 -1
  238. package/lib/commonjs/icons/ThreadReply.js +1 -1
  239. package/lib/commonjs/icons/ThumbsDownReaction.js +1 -1
  240. package/lib/commonjs/icons/ThumbsUpReaction.js +1 -1
  241. package/lib/commonjs/icons/Time.js +1 -1
  242. package/lib/commonjs/icons/Unknown.js +1 -1
  243. package/lib/commonjs/icons/Unpin.js +1 -1
  244. package/lib/commonjs/icons/User.js +1 -1
  245. package/lib/commonjs/icons/UserAdd.js +1 -1
  246. package/lib/commonjs/icons/UserAdmin.js +1 -1
  247. package/lib/commonjs/icons/UserDelete.js +1 -1
  248. package/lib/commonjs/icons/UserMinus.js +1 -1
  249. package/lib/commonjs/icons/Video.js +1 -1
  250. package/lib/commonjs/icons/Warning.js +1 -1
  251. package/lib/commonjs/icons/WutReaction.js +1 -1
  252. package/lib/commonjs/icons/XLS.js +1 -1
  253. package/lib/commonjs/icons/XLSX.js +1 -1
  254. package/lib/commonjs/icons/ZIP.js +1 -1
  255. package/lib/commonjs/icons/utils/base.js +1 -1
  256. package/lib/commonjs/mock-builders/DB/mock.js +2 -2
  257. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  258. package/lib/commonjs/mock-builders/api/deleteMessage.js +20 -0
  259. package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -0
  260. package/lib/commonjs/mock-builders/api/deleteReaction.js +21 -0
  261. package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -0
  262. package/lib/commonjs/mock-builders/api/sendReaction.js +21 -0
  263. package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -0
  264. package/lib/commonjs/mock-builders/event/connectionChanged.js +2 -0
  265. package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
  266. package/lib/commonjs/store/QuickSqliteClient.js +40 -51
  267. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  268. package/lib/commonjs/store/apis/addPendingTask.js +37 -0
  269. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -0
  270. package/lib/commonjs/store/apis/deleteMessage.js +26 -0
  271. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -0
  272. package/lib/commonjs/store/apis/deletePendingTask.js +22 -0
  273. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -0
  274. package/lib/commonjs/store/apis/deleteReaction.js +30 -0
  275. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -0
  276. package/lib/commonjs/store/apis/getChannelMessages.js +3 -3
  277. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  278. package/lib/commonjs/store/apis/getChannels.js +1 -1
  279. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  280. package/lib/commonjs/store/apis/getPendingTasks.js +26 -0
  281. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -0
  282. package/lib/commonjs/store/apis/index.js +13 -0
  283. package/lib/commonjs/store/apis/index.js.map +1 -1
  284. package/lib/commonjs/store/apis/insertReaction.js +28 -0
  285. package/lib/commonjs/store/apis/insertReaction.js.map +1 -0
  286. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  287. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  288. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -1
  289. package/lib/commonjs/store/mappers/mapMessageToStorable.js +3 -1
  290. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  291. package/lib/commonjs/store/mappers/mapStorableToTask.js +23 -0
  292. package/lib/commonjs/store/mappers/mapStorableToTask.js.map +1 -0
  293. package/lib/commonjs/store/mappers/mapTaskToStorable.js +18 -0
  294. package/lib/commonjs/store/mappers/mapTaskToStorable.js.map +1 -0
  295. package/lib/commonjs/store/schema.js +11 -0
  296. package/lib/commonjs/store/schema.js.map +1 -1
  297. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js +24 -0
  298. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  299. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +1 -1
  300. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  301. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +8 -1
  302. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -1
  303. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +2 -2
  304. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  305. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +1 -1
  306. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  307. package/lib/commonjs/utils/DBSyncManager.js +436 -0
  308. package/lib/commonjs/utils/DBSyncManager.js.map +1 -0
  309. package/lib/commonjs/utils/addReactionToLocalState.js +92 -0
  310. package/lib/commonjs/utils/addReactionToLocalState.js.map +1 -0
  311. package/lib/commonjs/utils/pendingTaskUtils.js +302 -0
  312. package/lib/commonjs/utils/pendingTaskUtils.js.map +1 -0
  313. package/lib/commonjs/utils/removeReactionFromLocalState.js +39 -0
  314. package/lib/commonjs/utils/removeReactionFromLocalState.js.map +1 -0
  315. package/lib/commonjs/utils/utils.js +9 -3
  316. package/lib/commonjs/utils/utils.js.map +1 -1
  317. package/lib/commonjs/version.json +1 -1
  318. package/lib/module/components/Attachment/Attachment.js +1 -1
  319. package/lib/module/components/Attachment/AttachmentActions.js +1 -1
  320. package/lib/module/components/Attachment/AudioAttachment.js +1 -1
  321. package/lib/module/components/Attachment/Card.js +1 -1
  322. package/lib/module/components/Attachment/FileAttachment.js +1 -1
  323. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  324. package/lib/module/components/Attachment/FileIcon.js +1 -1
  325. package/lib/module/components/Attachment/Gallery.js +1 -1
  326. package/lib/module/components/Attachment/GalleryImage.js +20 -4
  327. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  328. package/lib/module/components/Attachment/Giphy.js +1 -1
  329. package/lib/module/components/Attachment/ImageLoadingFailedIndicator.js +1 -1
  330. package/lib/module/components/Attachment/ImageLoadingIndicator.js +1 -1
  331. package/lib/module/components/Attachment/VideoThumbnail.js +1 -1
  332. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  333. package/lib/module/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.js +1 -1
  334. package/lib/module/components/AttachmentPicker/components/AttachmentPickerError.js +1 -1
  335. package/lib/module/components/AttachmentPicker/components/AttachmentPickerErrorImage.js +1 -1
  336. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +1 -1
  337. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +1 -1
  338. package/lib/module/components/AttachmentPicker/components/CameraSelectorIcon.js +1 -1
  339. package/lib/module/components/AttachmentPicker/components/FileSelectorIcon.js +1 -1
  340. package/lib/module/components/AttachmentPicker/components/ImageOverlaySelectedComponent.js +1 -1
  341. package/lib/module/components/AttachmentPicker/components/ImageSelectorIcon.js +1 -1
  342. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +1 -1
  343. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js +1 -1
  344. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +1 -1
  345. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +1 -1
  346. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -1
  347. package/lib/module/components/Avatar/Avatar.js +1 -1
  348. package/lib/module/components/Avatar/GroupAvatar.js +1 -1
  349. package/lib/module/components/Channel/Channel.js +537 -155
  350. package/lib/module/components/Channel/Channel.js.map +1 -1
  351. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  352. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  353. package/lib/module/components/ChannelList/ChannelList.js +5 -16
  354. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  355. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  356. package/lib/module/components/ChannelList/ChannelListHeaderErrorIndicator.js +1 -1
  357. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +1 -1
  358. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +1 -1
  359. package/lib/module/components/ChannelList/ChannelListMessenger.js +1 -1
  360. package/lib/module/components/ChannelList/Skeleton.js +1 -1
  361. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +112 -42
  362. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  363. package/lib/module/components/ChannelPreview/ChannelAvatar.js +1 -1
  364. package/lib/module/components/ChannelPreview/ChannelPreview.js +1 -1
  365. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +1 -1
  366. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  367. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +1 -1
  368. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +1 -1
  369. package/lib/module/components/ChannelPreview/ChannelPreviewTitle.js +1 -1
  370. package/lib/module/components/ChannelPreview/ChannelPreviewUnreadCount.js +1 -1
  371. package/lib/module/components/Chat/Chat.js +17 -21
  372. package/lib/module/components/Chat/Chat.js.map +1 -1
  373. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -4
  374. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  375. package/lib/module/components/ImageBackground.js +1 -1
  376. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  377. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +1 -1
  378. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +1 -1
  379. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +1 -1
  380. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
  381. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +1 -1
  382. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
  383. package/lib/module/components/ImageGallery/components/ImageGrid.js +1 -1
  384. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +1 -1
  385. package/lib/module/components/Indicators/EmptyStateIndicator.js +1 -1
  386. package/lib/module/components/Indicators/LoadingDot.js +1 -1
  387. package/lib/module/components/Indicators/LoadingDots.js +1 -1
  388. package/lib/module/components/Indicators/LoadingErrorIndicator.js +1 -1
  389. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  390. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  391. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleViewFC.js +1 -1
  392. package/lib/module/components/Message/Message.js +22 -11
  393. package/lib/module/components/Message/Message.js.map +1 -1
  394. package/lib/module/components/Message/MessageSimple/MessageAvatar.js +1 -1
  395. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  396. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  397. package/lib/module/components/Message/MessageSimple/MessageFooter.js +15 -13
  398. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  399. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +1 -1
  400. package/lib/module/components/Message/MessageSimple/MessageReplies.js +1 -1
  401. package/lib/module/components/Message/MessageSimple/MessageRepliesAvatars.js +1 -1
  402. package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -1
  403. package/lib/module/components/Message/MessageSimple/MessageStatus.js +1 -1
  404. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  405. package/lib/module/components/Message/MessageSimple/ReactionList.js +1 -1
  406. package/lib/module/components/Message/MessageSimple/utils/renderText.js +1 -1
  407. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +1 -1
  408. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +9 -30
  409. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  410. package/lib/module/components/Message/hooks/useMessageActions.js +20 -18
  411. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  412. package/lib/module/components/MessageInput/AttachButton.js +1 -1
  413. package/lib/module/components/MessageInput/CommandsButton.js +1 -1
  414. package/lib/module/components/MessageInput/CooldownTimer.js +1 -1
  415. package/lib/module/components/MessageInput/FileUploadPreview.js +32 -22
  416. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  417. package/lib/module/components/MessageInput/ImageUploadPreview.js +52 -20
  418. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  419. package/lib/module/components/MessageInput/InputButtons.js +1 -1
  420. package/lib/module/components/MessageInput/MessageInput.js +40 -28
  421. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  422. package/lib/module/components/MessageInput/MoreOptionsButton.js +1 -1
  423. package/lib/module/components/MessageInput/SendButton.js +2 -2
  424. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  425. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +1 -1
  426. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -1
  427. package/lib/module/components/MessageInput/UploadProgressIndicator.js +1 -1
  428. package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +1 -1
  429. package/lib/module/components/MessageInput/components/InputGiphySearch.js +1 -1
  430. package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +1 -1
  431. package/lib/module/components/MessageList/DateHeader.js +1 -1
  432. package/lib/module/components/MessageList/InlineDateSeparator.js +1 -1
  433. package/lib/module/components/MessageList/InlineLoadingMoreIndicator.js +1 -1
  434. package/lib/module/components/MessageList/InlineLoadingMoreRecentIndicator.js +1 -1
  435. package/lib/module/components/MessageList/InlineLoadingMoreThreadIndicator.js +1 -1
  436. package/lib/module/components/MessageList/InlineUnreadIndicator.js +1 -1
  437. package/lib/module/components/MessageList/MessageList.js +1 -1
  438. package/lib/module/components/MessageList/MessageSystem.js +1 -1
  439. package/lib/module/components/MessageList/NetworkDownIndicator.js +1 -1
  440. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  441. package/lib/module/components/MessageList/TypingIndicator.js +1 -1
  442. package/lib/module/components/MessageList/TypingIndicatorContainer.js +1 -1
  443. package/lib/module/components/MessageOverlay/MessageActionList.js +1 -1
  444. package/lib/module/components/MessageOverlay/MessageActionListItem.js +1 -1
  445. package/lib/module/components/MessageOverlay/MessageOverlay.js +1 -1
  446. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +1 -1
  447. package/lib/module/components/MessageOverlay/OverlayReactionList.js +1 -1
  448. package/lib/module/components/MessageOverlay/OverlayReactions.js +1 -1
  449. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js +1 -1
  450. package/lib/module/components/ProgressControl/ProgressControl.js +1 -1
  451. package/lib/module/components/RTLComponents/WritingDirectionAwareText.js +1 -1
  452. package/lib/module/components/Reply/Reply.js +1 -1
  453. package/lib/module/components/Spinner/Spinner.js +1 -1
  454. package/lib/module/components/Thread/Thread.js +1 -1
  455. package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -1
  456. package/lib/module/components/index.js +0 -13
  457. package/lib/module/components/index.js.map +1 -1
  458. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -1
  459. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -1
  460. package/lib/module/contexts/channelContext/ChannelContext.js +1 -1
  461. package/lib/module/contexts/channelsContext/ChannelsContext.js +1 -1
  462. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +1 -1
  463. package/lib/module/contexts/chatContext/ChatContext.js +3 -3
  464. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  465. package/lib/module/contexts/debugContext/DebugContext.js +1 -1
  466. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -1
  467. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -1
  468. package/lib/module/contexts/messageContext/MessageContext.js +1 -1
  469. package/lib/module/contexts/messageInputContext/MessageInputContext.js +23 -14
  470. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  471. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +1 -1
  472. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +1 -1
  473. package/lib/module/contexts/messagesContext/MessagesContext.js +3 -3
  474. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  475. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  476. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -1
  477. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +1 -1
  478. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -1
  479. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +1 -1
  480. package/lib/module/contexts/themeContext/ThemeContext.js +1 -1
  481. package/lib/module/contexts/threadContext/ThreadContext.js +1 -1
  482. package/lib/module/contexts/translationContext/TranslationContext.js +1 -1
  483. package/lib/module/contexts/typingContext/TypingContext.js +1 -1
  484. package/lib/module/hooks/useTranslatedMessage.js +1 -1
  485. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  486. package/lib/module/icons/ArrowRight.js +1 -1
  487. package/lib/module/icons/AtMentions.js +1 -1
  488. package/lib/module/icons/Attach.js +1 -1
  489. package/lib/module/icons/Audio.js +1 -1
  490. package/lib/module/icons/CSV.js +1 -1
  491. package/lib/module/icons/Camera.js +1 -1
  492. package/lib/module/icons/Check.js +1 -1
  493. package/lib/module/icons/CheckAll.js +1 -1
  494. package/lib/module/icons/CheckSend.js +1 -1
  495. package/lib/module/icons/CircleClose.js +1 -1
  496. package/lib/module/icons/CirclePlus.js +1 -1
  497. package/lib/module/icons/CircleRight.js +1 -1
  498. package/lib/module/icons/Close.js +1 -1
  499. package/lib/module/icons/Copy.js +1 -1
  500. package/lib/module/icons/CurveLineLeftUp.js +1 -1
  501. package/lib/module/icons/DOC.js +1 -1
  502. package/lib/module/icons/DOCX.js +1 -1
  503. package/lib/module/icons/Delete.js +1 -1
  504. package/lib/module/icons/Down.js +1 -1
  505. package/lib/module/icons/DownloadArrow.js +1 -1
  506. package/lib/module/icons/DownloadCloud.js +1 -1
  507. package/lib/module/icons/Edit.js +1 -1
  508. package/lib/module/icons/Error.js +1 -1
  509. package/lib/module/icons/Eye.js +1 -1
  510. package/lib/module/icons/Flag.js +1 -1
  511. package/lib/module/icons/Folder.js +1 -1
  512. package/lib/module/icons/GenericFile.js +1 -1
  513. package/lib/module/icons/GiphyIcon.js +1 -1
  514. package/lib/module/icons/Grid.js +1 -1
  515. package/lib/module/icons/Group.js +1 -1
  516. package/lib/module/icons/HTML.js +1 -1
  517. package/lib/module/icons/Imgur.js +1 -1
  518. package/lib/module/icons/LOLReaction.js +1 -1
  519. package/lib/module/icons/Lightning.js +1 -1
  520. package/lib/module/icons/Link.js +1 -1
  521. package/lib/module/icons/Loading.js +1 -1
  522. package/lib/module/icons/Logo.js +1 -1
  523. package/lib/module/icons/LoveReaction.js +1 -1
  524. package/lib/module/icons/MD.js +1 -1
  525. package/lib/module/icons/MailOpen.js +1 -1
  526. package/lib/module/icons/MenuPointHorizontal.js +1 -1
  527. package/lib/module/icons/MenuPointVertical.js +1 -1
  528. package/lib/module/icons/MessageFlag.js +1 -1
  529. package/lib/module/icons/MessageIcon.js +1 -1
  530. package/lib/module/icons/Mute.js +1 -1
  531. package/lib/module/icons/Notification.js +1 -1
  532. package/lib/module/icons/ODT.js +1 -1
  533. package/lib/module/icons/PDF.js +1 -1
  534. package/lib/module/icons/PPT.js +1 -1
  535. package/lib/module/icons/PPTX.js +1 -1
  536. package/lib/module/icons/Pause.js +1 -1
  537. package/lib/module/icons/Picture.js +1 -1
  538. package/lib/module/icons/Pin.js +1 -1
  539. package/lib/module/icons/PinHeader.js +1 -1
  540. package/lib/module/icons/Play.js +1 -1
  541. package/lib/module/icons/RAR.js +1 -1
  542. package/lib/module/icons/RTF.js +1 -1
  543. package/lib/module/icons/Recorder.js +1 -1
  544. package/lib/module/icons/Refresh.js +1 -1
  545. package/lib/module/icons/SEVEN_Z.js +1 -1
  546. package/lib/module/icons/Search.js +1 -1
  547. package/lib/module/icons/SendRight.js +1 -1
  548. package/lib/module/icons/SendUp.js +1 -1
  549. package/lib/module/icons/Share.js +1 -1
  550. package/lib/module/icons/ShareRightArrow.js +1 -1
  551. package/lib/module/icons/Smile.js +1 -1
  552. package/lib/module/icons/Sound.js +1 -1
  553. package/lib/module/icons/TAR.js +1 -1
  554. package/lib/module/icons/TXT.js +1 -1
  555. package/lib/module/icons/ThreadReply.js +1 -1
  556. package/lib/module/icons/ThumbsDownReaction.js +1 -1
  557. package/lib/module/icons/ThumbsUpReaction.js +1 -1
  558. package/lib/module/icons/Time.js +1 -1
  559. package/lib/module/icons/Unknown.js +1 -1
  560. package/lib/module/icons/Unpin.js +1 -1
  561. package/lib/module/icons/User.js +1 -1
  562. package/lib/module/icons/UserAdd.js +1 -1
  563. package/lib/module/icons/UserAdmin.js +1 -1
  564. package/lib/module/icons/UserDelete.js +1 -1
  565. package/lib/module/icons/UserMinus.js +1 -1
  566. package/lib/module/icons/Video.js +1 -1
  567. package/lib/module/icons/Warning.js +1 -1
  568. package/lib/module/icons/WutReaction.js +1 -1
  569. package/lib/module/icons/XLS.js +1 -1
  570. package/lib/module/icons/XLSX.js +1 -1
  571. package/lib/module/icons/ZIP.js +1 -1
  572. package/lib/module/icons/utils/base.js +1 -1
  573. package/lib/module/mock-builders/DB/mock.js +2 -2
  574. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  575. package/lib/module/mock-builders/api/deleteMessage.js +20 -0
  576. package/lib/module/mock-builders/api/deleteMessage.js.map +1 -0
  577. package/lib/module/mock-builders/api/deleteReaction.js +21 -0
  578. package/lib/module/mock-builders/api/deleteReaction.js.map +1 -0
  579. package/lib/module/mock-builders/api/sendReaction.js +21 -0
  580. package/lib/module/mock-builders/api/sendReaction.js.map +1 -0
  581. package/lib/module/mock-builders/event/connectionChanged.js +2 -0
  582. package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
  583. package/lib/module/store/QuickSqliteClient.js +40 -51
  584. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  585. package/lib/module/store/apis/addPendingTask.js +37 -0
  586. package/lib/module/store/apis/addPendingTask.js.map +1 -0
  587. package/lib/module/store/apis/deleteMessage.js +26 -0
  588. package/lib/module/store/apis/deleteMessage.js.map +1 -0
  589. package/lib/module/store/apis/deletePendingTask.js +22 -0
  590. package/lib/module/store/apis/deletePendingTask.js.map +1 -0
  591. package/lib/module/store/apis/deleteReaction.js +30 -0
  592. package/lib/module/store/apis/deleteReaction.js.map +1 -0
  593. package/lib/module/store/apis/getChannelMessages.js +3 -3
  594. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  595. package/lib/module/store/apis/getChannels.js +1 -1
  596. package/lib/module/store/apis/getChannels.js.map +1 -1
  597. package/lib/module/store/apis/getPendingTasks.js +26 -0
  598. package/lib/module/store/apis/getPendingTasks.js.map +1 -0
  599. package/lib/module/store/apis/index.js +13 -0
  600. package/lib/module/store/apis/index.js.map +1 -1
  601. package/lib/module/store/apis/insertReaction.js +28 -0
  602. package/lib/module/store/apis/insertReaction.js.map +1 -0
  603. package/lib/module/store/apis/updateMessage.js.map +1 -1
  604. package/lib/module/store/apis/updateReaction.js.map +1 -1
  605. package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -1
  606. package/lib/module/store/mappers/mapMessageToStorable.js +3 -1
  607. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  608. package/lib/module/store/mappers/mapStorableToTask.js +23 -0
  609. package/lib/module/store/mappers/mapStorableToTask.js.map +1 -0
  610. package/lib/module/store/mappers/mapTaskToStorable.js +18 -0
  611. package/lib/module/store/mappers/mapTaskToStorable.js.map +1 -0
  612. package/lib/module/store/schema.js +11 -0
  613. package/lib/module/store/schema.js.map +1 -1
  614. package/lib/module/store/sqlite-utils/appendOrderByClause.js +24 -0
  615. package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  616. package/lib/module/store/sqlite-utils/createCreateTableQuery.js +1 -1
  617. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  618. package/lib/module/store/sqlite-utils/createSelectQuery.js +8 -1
  619. package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -1
  620. package/lib/module/store/sqlite-utils/createUpdateQuery.js +2 -2
  621. package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  622. package/lib/module/store/sqlite-utils/createUpsertQuery.js +1 -1
  623. package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  624. package/lib/module/utils/DBSyncManager.js +436 -0
  625. package/lib/module/utils/DBSyncManager.js.map +1 -0
  626. package/lib/module/utils/addReactionToLocalState.js +92 -0
  627. package/lib/module/utils/addReactionToLocalState.js.map +1 -0
  628. package/lib/module/utils/pendingTaskUtils.js +302 -0
  629. package/lib/module/utils/pendingTaskUtils.js.map +1 -0
  630. package/lib/module/utils/removeReactionFromLocalState.js +39 -0
  631. package/lib/module/utils/removeReactionFromLocalState.js.map +1 -0
  632. package/lib/module/utils/utils.js +9 -3
  633. package/lib/module/utils/utils.js.map +1 -1
  634. package/lib/module/version.json +1 -1
  635. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  636. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  637. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +2 -1
  638. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  639. package/lib/typescript/components/Message/Message.d.ts +1 -1
  640. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  641. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  642. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -1
  643. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +2 -1
  644. package/lib/typescript/components/MessageInput/MessageInput.d.ts +2 -1
  645. package/lib/typescript/components/index.d.ts +0 -1
  646. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -2
  647. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  648. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -0
  649. package/lib/typescript/store/apis/addPendingTask.d.ts +2 -0
  650. package/lib/typescript/store/apis/deleteMessage.d.ts +4 -0
  651. package/lib/typescript/store/apis/deletePendingTask.d.ts +3 -0
  652. package/lib/typescript/store/apis/deleteReaction.d.ts +6 -0
  653. package/lib/typescript/store/apis/getChannelMessages.d.ts +1 -1
  654. package/lib/typescript/store/apis/getPendingTasks.d.ts +3 -0
  655. package/lib/typescript/store/apis/index.d.ts +1 -0
  656. package/lib/typescript/store/apis/insertReaction.d.ts +6 -0
  657. package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
  658. package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
  659. package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -1
  660. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
  661. package/lib/typescript/store/mappers/mapStorableToTask.d.ts +2 -0
  662. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +34 -0
  663. package/lib/typescript/store/schema.d.ts +12 -1
  664. package/lib/typescript/store/sqlite-utils/appendOrderByClause.d.ts +3 -0
  665. package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +1 -1
  666. package/lib/typescript/store/types.d.ts +25 -0
  667. package/lib/typescript/types/types.d.ts +3 -1
  668. package/lib/typescript/utils/DBSyncManager.d.ts +47 -0
  669. package/lib/typescript/utils/addReactionToLocalState.d.ts +9 -0
  670. package/lib/typescript/utils/pendingTaskUtils.d.ts +13 -0
  671. package/lib/typescript/utils/removeReactionFromLocalState.d.ts +8 -0
  672. package/lib/typescript/utils/utils.d.ts +3 -3
  673. package/package.json +2 -2
  674. package/src/__tests__/offline-feature.test.js +19 -2
  675. package/src/__tests__/optimistic-update.test.js +368 -0
  676. package/src/components/Attachment/GalleryImage.tsx +14 -2
  677. package/src/components/Channel/Channel.tsx +270 -62
  678. package/src/components/Channel/hooks/useCreateMessagesContext.ts +6 -0
  679. package/src/components/ChannelList/ChannelList.tsx +2 -10
  680. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +0 -1
  681. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +75 -27
  682. package/src/components/Chat/Chat.tsx +5 -9
  683. package/src/components/Chat/__tests__/Chat.test.js +1 -1
  684. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  685. package/src/components/Message/Message.tsx +18 -2
  686. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -1
  687. package/src/components/Message/hooks/useMessageActionHandlers.ts +10 -21
  688. package/src/components/Message/hooks/useMessageActions.tsx +9 -4
  689. package/src/components/MessageInput/FileUploadPreview.tsx +8 -2
  690. package/src/components/MessageInput/ImageUploadPreview.tsx +37 -8
  691. package/src/components/MessageInput/MessageInput.tsx +17 -3
  692. package/src/components/MessageInput/SendButton.tsx +1 -1
  693. package/src/components/index.ts +0 -1
  694. package/src/contexts/chatContext/ChatContext.tsx +1 -2
  695. package/src/contexts/messageInputContext/MessageInputContext.tsx +29 -10
  696. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +29 -0
  697. package/src/contexts/messagesContext/MessagesContext.tsx +4 -1
  698. package/src/hooks/useTranslatedMessage.ts +1 -1
  699. package/src/mock-builders/DB/mock.ts +2 -2
  700. package/src/mock-builders/api/deleteMessage.js +18 -0
  701. package/src/mock-builders/api/deleteReaction.js +19 -0
  702. package/src/mock-builders/api/sendReaction.tsx +19 -0
  703. package/src/mock-builders/event/connectionChanged.js +2 -1
  704. package/src/store/QuickSqliteClient.ts +39 -37
  705. package/src/store/apis/addPendingTask.ts +24 -0
  706. package/src/store/apis/deleteMessage.ts +13 -0
  707. package/src/store/apis/deletePendingTask.ts +12 -0
  708. package/src/store/apis/deleteReaction.ts +26 -0
  709. package/src/store/apis/getChannelMessages.ts +1 -1
  710. package/src/store/apis/getChannels.ts +2 -2
  711. package/src/store/apis/getPendingTasks.ts +13 -0
  712. package/src/store/apis/index.ts +1 -0
  713. package/src/store/apis/insertReaction.ts +29 -0
  714. package/src/store/apis/updateMessage.ts +2 -2
  715. package/src/store/apis/updateReaction.ts +2 -2
  716. package/src/store/mappers/mapDateTimeToStorable.ts +1 -1
  717. package/src/store/mappers/mapMessageToStorable.ts +8 -2
  718. package/src/store/mappers/mapStorableToTask.ts +13 -0
  719. package/src/store/mappers/mapTaskToStorable.ts +7 -0
  720. package/src/store/schema.ts +25 -1
  721. package/src/store/sqlite-utils/appendOrderByClause.ts +24 -0
  722. package/src/store/sqlite-utils/createCreateTableQuery.ts +2 -2
  723. package/src/store/sqlite-utils/createSelectQuery.ts +4 -1
  724. package/src/store/sqlite-utils/createUpdateQuery.ts +3 -2
  725. package/src/store/sqlite-utils/createUpsertQuery.ts +1 -1
  726. package/src/store/types.ts +33 -0
  727. package/src/types/types.ts +4 -1
  728. package/src/utils/DBSyncManager.ts +222 -0
  729. package/src/utils/addReactionToLocalState.ts +87 -0
  730. package/src/utils/pendingTaskUtils.ts +131 -0
  731. package/src/utils/removeReactionFromLocalState.ts +39 -0
  732. package/src/utils/utils.ts +12 -4
  733. package/src/version.json +1 -1
  734. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js +0 -171
  735. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  736. package/lib/module/components/Chat/hooks/useConnectionRecovered.js +0 -171
  737. package/lib/module/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  738. package/lib/typescript/components/Chat/hooks/useConnectionRecovered.d.ts +0 -10
  739. package/src/components/Chat/hooks/useConnectionRecovered.ts +0 -92
@@ -0,0 +1,26 @@
1
+ import { QuickSqliteClient } from '../QuickSqliteClient';
2
+ import { createDeleteQuery } from '../sqlite-utils/createDeleteQuery';
3
+
4
+ export const deleteReaction = ({
5
+ flush = true,
6
+ messageId,
7
+ reactionType,
8
+ userId,
9
+ }: {
10
+ messageId: string;
11
+ reactionType: string;
12
+ userId: string;
13
+ flush?: boolean;
14
+ }) => {
15
+ const query = createDeleteQuery('reactions', {
16
+ messageId,
17
+ type: reactionType,
18
+ userId,
19
+ });
20
+
21
+ if (flush) {
22
+ QuickSqliteClient.executeSql.apply(null, query);
23
+ }
24
+
25
+ return [query];
26
+ };
@@ -8,7 +8,7 @@ import type { DefaultStreamChatGenerics } from '../../types/types';
8
8
  import { mapStorableToMessage } from '../mappers/mapStorableToMessage';
9
9
  import type { TableRowJoinedUser } from '../types';
10
10
 
11
- export const getMessages = <
11
+ export const getChannelMessages = <
12
12
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
13
13
  >({
14
14
  channelIds,
@@ -1,6 +1,6 @@
1
1
  import type { ChannelAPIResponse } from 'stream-chat';
2
2
 
3
- import { getMessages } from './getChannelMessages';
3
+ import { getChannelMessages } from './getChannelMessages';
4
4
  import { getMembers } from './getMembers';
5
5
  import { getReads } from './getReads';
6
6
  import { selectChannels } from './queries/selectChannels';
@@ -30,7 +30,7 @@ export const getChannels = <
30
30
 
31
31
  const cidVsMembers = getMembers<StreamChatGenerics>({ channelIds });
32
32
  const cidVsReads = getReads<StreamChatGenerics>({ channelIds });
33
- const cidVsMessages = getMessages<StreamChatGenerics>({
33
+ const cidVsMessages = getChannelMessages<StreamChatGenerics>({
34
34
  channelIds,
35
35
  currentUserId,
36
36
  });
@@ -0,0 +1,13 @@
1
+ import { mapStorableToTask } from '../mappers/mapStorableToTask';
2
+ import { QuickSqliteClient } from '../QuickSqliteClient';
3
+ import { createSelectQuery } from '../sqlite-utils/createSelectQuery';
4
+
5
+ export const getPendingTasks = (conditions: { messageId?: string } = {}) => {
6
+ const query = createSelectQuery('pendingTasks', ['*'], conditions, {
7
+ createdAt: 1,
8
+ });
9
+
10
+ const result = QuickSqliteClient.executeSql.apply(null, query);
11
+
12
+ return result.map((r) => mapStorableToTask(r));
13
+ };
@@ -1,5 +1,6 @@
1
1
  export * from './deleteChannel';
2
2
  export * from './deleteMember';
3
+ export * from './deleteMessage';
3
4
  export * from './deleteMessagesForChannel';
4
5
  export * from './deleteReactions';
5
6
  export * from './getAllChannelIds';
@@ -0,0 +1,29 @@
1
+ import type { ReactionResponse } from 'stream-chat';
2
+
3
+ import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
4
+ import { QuickSqliteClient } from '../QuickSqliteClient';
5
+ import { createUpsertQuery } from '../sqlite-utils/createUpsertQuery';
6
+ import type { PreparedQueries } from '../types';
7
+
8
+ export const insertReaction = ({
9
+ flush = true,
10
+ reaction,
11
+ }: {
12
+ reaction: ReactionResponse;
13
+ flush?: boolean;
14
+ }) => {
15
+ const queries: PreparedQueries[] = [];
16
+
17
+ queries.push(createUpsertQuery('reactions', mapReactionToStorable(reaction)));
18
+
19
+ queries.push([
20
+ 'UPDATE messages SET reactionCounts = reactionCounts + 1 WHERE id = ?',
21
+ [reaction.message_id],
22
+ ]);
23
+
24
+ if (flush) {
25
+ QuickSqliteClient.executeSqlBatch(queries);
26
+ }
27
+
28
+ return queries;
29
+ };
@@ -1,4 +1,4 @@
1
- import type { MessageResponse } from 'stream-chat';
1
+ import type { FormatMessageResponse, MessageResponse } from 'stream-chat';
2
2
 
3
3
  import { mapMessageToStorable } from '../mappers/mapMessageToStorable';
4
4
  import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
@@ -14,7 +14,7 @@ export const updateMessage = ({
14
14
  flush = true,
15
15
  message,
16
16
  }: {
17
- message: MessageResponse;
17
+ message: MessageResponse | FormatMessageResponse;
18
18
  flush?: boolean;
19
19
  }) => {
20
20
  const queries: PreparedQueries[] = [];
@@ -1,4 +1,4 @@
1
- import type { MessageResponse, ReactionResponse } from 'stream-chat';
1
+ import type { FormatMessageResponse, MessageResponse, ReactionResponse } from 'stream-chat';
2
2
 
3
3
  import { mapMessageToStorable } from '../mappers/mapMessageToStorable';
4
4
  import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
@@ -13,7 +13,7 @@ export const updateReaction = ({
13
13
  message,
14
14
  reaction,
15
15
  }: {
16
- message: MessageResponse;
16
+ message: MessageResponse | FormatMessageResponse;
17
17
  reaction: ReactionResponse;
18
18
  flush?: boolean;
19
19
  }) => {
@@ -1,4 +1,4 @@
1
- export const mapDateTimeToStorable = (datetime?: string) => {
1
+ export const mapDateTimeToStorable = (datetime?: string | Date) => {
2
2
  if (!datetime) return '';
3
3
 
4
4
  return new Date(datetime).toISOString();
@@ -1,16 +1,22 @@
1
- import type { MessageResponse } from 'stream-chat';
1
+ import type { FormatMessageResponse, MessageResponse } from 'stream-chat';
2
2
 
3
3
  import { mapDateTimeToStorable } from './mapDateTimeToStorable';
4
4
 
5
5
  import type { TableRow } from '../types';
6
6
 
7
- export const mapMessageToStorable = (message: MessageResponse): TableRow<'messages'> => {
7
+ export const mapMessageToStorable = (
8
+ message: MessageResponse | FormatMessageResponse,
9
+ ): TableRow<'messages'> => {
8
10
  const {
9
11
  attachments,
10
12
  cid,
11
13
  created_at,
12
14
  deleted_at,
13
15
  id,
16
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
+ latest_reactions,
18
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
+ own_reactions,
14
20
  reaction_counts,
15
21
  text,
16
22
  type,
@@ -0,0 +1,13 @@
1
+ import type { PendingTask, TableRowJoinedUser } from '../types';
2
+
3
+ export const mapStorableToTask = (row: TableRowJoinedUser<'pendingTasks'>): PendingTask => {
4
+ const { channelId, channelType, id, messageId, type } = row;
5
+ return {
6
+ channelId,
7
+ channelType,
8
+ id,
9
+ messageId,
10
+ payload: JSON.parse(row.payload),
11
+ type,
12
+ };
13
+ };
@@ -0,0 +1,7 @@
1
+ import type { PendingTask } from '../types';
2
+
3
+ export const mapTaskToStorable = (task: PendingTask) => ({
4
+ ...task,
5
+ createdAt: new Date().toISOString(),
6
+ payload: JSON.stringify(task.payload),
7
+ });
@@ -1,11 +1,14 @@
1
1
  import type { MessageLabel, Role } from 'stream-chat';
2
2
 
3
+ import type { PendingTaskTypes } from './types';
4
+
5
+ import type { ValueOf } from '../types/types';
6
+
3
7
  type Tables = {
4
8
  [P in keyof Schema]: {
5
9
  columns: {
6
10
  [K in keyof Schema[P]]: string;
7
11
  };
8
- primaryKey: Array<keyof Schema[P]>;
9
12
  foreignKeys?: Array<{
10
13
  column: `${Exclude<keyof Schema[P], symbol>}`;
11
14
  referenceTable: `${keyof Schema}`;
@@ -18,6 +21,7 @@ type Tables = {
18
21
  name: string;
19
22
  unique: boolean;
20
23
  }>;
24
+ primaryKey?: Array<keyof Schema[P]>;
21
25
  };
22
26
  };
23
27
 
@@ -121,6 +125,17 @@ export const tables: Tables = {
121
125
  ],
122
126
  primaryKey: ['id'],
123
127
  },
128
+ pendingTasks: {
129
+ columns: {
130
+ channelId: 'TEXT',
131
+ channelType: 'TEXT',
132
+ createdAt: 'TEXT',
133
+ id: 'INTEGER PRIMARY KEY AUTOINCREMENT',
134
+ messageId: 'TEXT',
135
+ payload: 'TEXT',
136
+ type: 'TEXT',
137
+ },
138
+ },
124
139
  reactions: {
125
140
  columns: {
126
141
  createdAt: 'TEXT',
@@ -252,6 +267,15 @@ export type Schema = {
252
267
  text?: string;
253
268
  userId?: string;
254
269
  };
270
+ pendingTasks: {
271
+ channelId: string;
272
+ channelType: string;
273
+ createdAt: string;
274
+ id: number;
275
+ messageId: string;
276
+ payload: string;
277
+ type: ValueOf<PendingTaskTypes>;
278
+ };
255
279
  reactions: {
256
280
  createdAt: string;
257
281
  messageId: string;
@@ -0,0 +1,24 @@
1
+ import type { Schema } from '../schema';
2
+ import type { PreparedQueries, TableColumnNames } from '../types';
3
+
4
+ export const appendOrderByClause = <T extends keyof Schema>(
5
+ selectQuery: string,
6
+ orderBy?: Partial<{ [k in TableColumnNames<T>]: 1 | -1 }>,
7
+ ): PreparedQueries => {
8
+ if (!orderBy) return [selectQuery, []];
9
+
10
+ const orderByClause = [];
11
+
12
+ for (const key in orderBy) {
13
+ const order = orderBy[key];
14
+ if (order === undefined) continue;
15
+
16
+ orderByClause.push(`${key} ${order === 1 ? 'ASC' : 'DESC'}`);
17
+ }
18
+
19
+ if (!orderByClause.length) {
20
+ return [selectQuery, []];
21
+ }
22
+
23
+ return [`${selectQuery} ORDER BY ${orderByClause.join(', ')}`];
24
+ };
@@ -8,8 +8,8 @@ export const createCreateTableQuery = (tableName: Table): PreparedQueries[] => {
8
8
  });
9
9
 
10
10
  const primaryKeyConstraints =
11
- tables[tableName].primaryKey.length > 0
12
- ? [`PRIMARY KEY (${tables[tableName].primaryKey.join(', ')})`]
11
+ (tables[tableName].primaryKey || []).length > 0
12
+ ? [`PRIMARY KEY (${(tables[tableName].primaryKey || []).join(', ')})`]
13
13
  : [];
14
14
  const foreignKeysConstraints =
15
15
  tables[tableName].foreignKeys?.map(
@@ -1,3 +1,4 @@
1
+ import { appendOrderByClause } from './appendOrderByClause';
1
2
  import { appendWhereClause } from './appendWhereCluase';
2
3
 
3
4
  import type { Schema } from '../schema';
@@ -17,9 +18,11 @@ export const createSelectQuery = <T extends keyof Schema>(
17
18
  table: T,
18
19
  fields: Array<'*'> | Array<TableColumnNames<T>> = ['*'],
19
20
  whereCondition?: Partial<{ [k in TableColumnNames<T>]: TableColumnValue | TableColumnValue[] }>,
21
+ orderBy?: Partial<{ [k in TableColumnNames<T>]: 1 | -1 }>,
20
22
  ): PreparedQueries => {
21
23
  const selectQuery = `SELECT ${fields.join(', ')} FROM ${table}`;
22
24
  const [selectQueryWithWhere, whereParams] = appendWhereClause(selectQuery, whereCondition);
25
+ const [selectQueryWithOrderBy] = appendOrderByClause(selectQueryWithWhere, orderBy);
23
26
 
24
- return [`${selectQueryWithWhere}`, whereParams || []];
27
+ return [`${selectQueryWithOrderBy}`, whereParams || []];
25
28
  };
@@ -19,9 +19,10 @@ export const createUpdateQuery = <T extends keyof Schema>(
19
19
  whereCondition: Partial<{ [k in TableColumnNames<T>]: TableColumnValue | TableColumnValue[] }>,
20
20
  ): PreparedQueries => {
21
21
  const fields = Object.keys(set).map((key) => `${key} = ?`);
22
- const updateQuery = `UPDATE ${table} SET ${fields.join(',')}`;
22
+
23
+ const updateQuery = `UPDATE OR IGNORE ${table} SET ${fields.join(',')}`;
23
24
 
24
25
  const [updateQueryWithWhere, whereParams] = appendWhereClause(updateQuery, whereCondition);
25
26
 
26
- return [updateQueryWithWhere, [...Object.values(set), ...(whereParams || [])]];
27
+ return [`${updateQueryWithWhere}`, [...Object.values(set), ...(whereParams || [])]];
27
28
  };
@@ -30,7 +30,7 @@ export const createUpsertQuery = <T extends keyof Schema>(
30
30
  const fields = Object.keys(filteredRow) as (keyof typeof row)[];
31
31
 
32
32
  const questionMarks = Array(Object.keys(fields).length).fill('?').join(',');
33
- const conflictKeys = conflictCheckKeys || tables[table].primaryKey;
33
+ const conflictKeys = conflictCheckKeys || tables[table].primaryKey || [];
34
34
  const conflictMatchersWithoutPK: string[] = (fields as string[])
35
35
  .filter((f) => !(conflictKeys as string[]).includes(f))
36
36
  .map((f) => `${f}=excluded.${f}`);
@@ -1,3 +1,5 @@
1
+ import type { Channel, StreamChat } from 'stream-chat';
2
+
1
3
  import type { Schema } from './schema';
2
4
 
3
5
  export type Table = keyof Schema;
@@ -10,3 +12,34 @@ export type TableColumnNames<T extends Table> = keyof Schema[T];
10
12
  export type TableColumnValue = string | boolean | number | undefined;
11
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
14
  export type PreparedQueries = [string] | [string, Array<any>];
15
+
16
+ export type PendingTaskTypes = {
17
+ deleteMessage: 'delete-message';
18
+ deleteReaction: 'delete-reaction';
19
+ sendMessage: 'send-message';
20
+ sendReaction: 'send-reaction';
21
+ };
22
+
23
+ export type PendingTask = {
24
+ channelId: string;
25
+ channelType: string;
26
+ messageId: string;
27
+ id?: number;
28
+ } & (
29
+ | {
30
+ payload: Parameters<Channel['sendReaction']>;
31
+ type: PendingTaskTypes['sendReaction'];
32
+ }
33
+ | {
34
+ payload: Parameters<Channel['sendMessage']>;
35
+ type: PendingTaskTypes['sendMessage'];
36
+ }
37
+ | {
38
+ payload: Parameters<StreamChat['deleteMessage']>;
39
+ type: PendingTaskTypes['deleteMessage'];
40
+ }
41
+ | {
42
+ payload: Parameters<Channel['deleteReaction']>;
43
+ type: PendingTaskTypes['deleteReaction'];
44
+ }
45
+ );
@@ -25,6 +25,7 @@ export type File = {
25
25
  export type DefaultAttachmentType = UnknownType & {
26
26
  file_size?: number | string;
27
27
  mime_type?: string;
28
+ originalFile?: File;
28
29
  };
29
30
 
30
31
  interface DefaultUserType extends UnknownType {
@@ -37,7 +38,7 @@ interface DefaultChannelType extends UnknownType {
37
38
  }
38
39
 
39
40
  export interface DefaultStreamChatGenerics extends ExtendableGenerics {
40
- attachmentType: UnknownType;
41
+ attachmentType: DefaultAttachmentType;
41
42
  channelType: DefaultChannelType;
42
43
  commandType: LiteralStringForUnion;
43
44
  eventType: UnknownType;
@@ -47,3 +48,5 @@ export interface DefaultStreamChatGenerics extends ExtendableGenerics {
47
48
  }
48
49
 
49
50
  export type UnknownType = Record<string, unknown>;
51
+
52
+ export type ValueOf<T> = T[keyof T];
@@ -0,0 +1,222 @@
1
+ import type { AxiosError } from 'axios';
2
+ import type { APIErrorResponse, StreamChat } from 'stream-chat';
3
+
4
+ import { handleEventToSyncDB } from '../components/Chat/hooks/handleEventToSyncDB';
5
+ import { getAllChannelIds, getLastSyncedAt, upsertLastSyncedAt } from '../store/apis';
6
+
7
+ import { addPendingTask } from '../store/apis/addPendingTask';
8
+
9
+ import { deletePendingTask } from '../store/apis/deletePendingTask';
10
+ import { getPendingTasks } from '../store/apis/getPendingTasks';
11
+ import { QuickSqliteClient } from '../store/QuickSqliteClient';
12
+ import type { PendingTask, PreparedQueries } from '../store/types';
13
+ import type { DefaultStreamChatGenerics } from '../types/types';
14
+ /**
15
+ * DBSyncManager has the responsibility to sync the channel states
16
+ * within local database whenever possible.
17
+ *
18
+ * Components can get the current sync status using DBSyncManager.getCurrentStatus().
19
+ * Or components can attach a listener for status change as following:
20
+ *
21
+ * ```tsx
22
+ * useEffect(() => {
23
+ * const unsubscribe = DBSyncManager.onSyncStatusChange((syncStatus) => {
24
+ * if (syncStatus) {
25
+ * doSomething();
26
+ * }
27
+ * })
28
+ *
29
+ * return () => unsubscribe();
30
+ * })
31
+ * ```
32
+ */
33
+ const restBeforeNextTask = () => new Promise((resolve) => setTimeout(resolve, 500));
34
+
35
+ export class DBSyncManager {
36
+ static syncStatus = false;
37
+ static listeners: Array<(status: boolean) => void> = [];
38
+ static client: StreamChat | null = null;
39
+
40
+ /**
41
+ * Returns weather channel states in local DB are synced with backend or not.
42
+ * @returns boolean
43
+ */
44
+ static getSyncStatus = () => this.syncStatus;
45
+
46
+ /**
47
+ * Initializes the DBSyncManager. This function should be called only once
48
+ * throughout the lifetime of SDK.
49
+ *
50
+ * @param client
51
+ */
52
+ static init = async (client: StreamChat) => {
53
+ this.client = client;
54
+ // If the websocket connection is already active, then straightaway
55
+ // call the sync api and also execute pending api calls.
56
+ // Otherwise wait for `connection.changed` event.
57
+ if (client.user?.id && client.wsConnection?.isHealthy) {
58
+ await this.syncAndExecutePendingTasks();
59
+ this.syncStatus = true;
60
+ this.listeners.forEach((l) => l(true));
61
+ }
62
+
63
+ this.client.on('connection.changed', async (event) => {
64
+ if (event.online) {
65
+ await this.syncAndExecutePendingTasks();
66
+ this.listeners.forEach((l) => l(true));
67
+ } else {
68
+ this.listeners.forEach((l) => l(false));
69
+ }
70
+ });
71
+ };
72
+
73
+ /**
74
+ * Subscribes a listener for sync status change.
75
+ *
76
+ * @param listener {function}
77
+ * @returns {function} to unsubscribe the listener.
78
+ */
79
+ static onSyncStatusChange = (listener: (status: boolean) => void) => {
80
+ this.listeners.push(listener);
81
+
82
+ return {
83
+ unsubscribe: () => {
84
+ this.listeners = this.listeners.filter((el) => el !== listener);
85
+ },
86
+ };
87
+ };
88
+
89
+ static sync = async () => {
90
+ if (!this.client?.user) return;
91
+
92
+ const lastSyncedAt = getLastSyncedAt({
93
+ currentUserId: this.client.user.id,
94
+ });
95
+ const cids = getAllChannelIds();
96
+
97
+ if (lastSyncedAt) {
98
+ try {
99
+ const result = await this.client.sync(cids, new Date(lastSyncedAt).toISOString());
100
+ const queries = result.events.reduce<PreparedQueries[]>((queries, event) => {
101
+ queries = queries.concat(handleEventToSyncDB(event, false));
102
+ return queries;
103
+ }, []);
104
+
105
+ if (queries.length) {
106
+ QuickSqliteClient.executeSqlBatch(queries);
107
+ }
108
+ } catch (e) {
109
+ // Error will be raised by the sync API if there are too many events.
110
+ // In that case reset the entire DB and start fresh.
111
+ QuickSqliteClient.resetDB();
112
+ }
113
+ }
114
+ upsertLastSyncedAt({
115
+ currentUserId: this.client.user.id,
116
+ lastSyncedAt: new Date().toString(),
117
+ });
118
+ };
119
+
120
+ static syncAndExecutePendingTasks = async () => {
121
+ if (!this.client) return;
122
+
123
+ await this.executePendingTasks(this.client);
124
+ await this.sync();
125
+ };
126
+
127
+ static queueTask = async <
128
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
129
+ >({
130
+ client,
131
+ task,
132
+ }: {
133
+ client: StreamChat<StreamChatGenerics>;
134
+ task: PendingTask;
135
+ }) => {
136
+ const removeFromApi = addPendingTask(task);
137
+
138
+ let response;
139
+ try {
140
+ response = await this.executeTask<StreamChatGenerics>({ client, task });
141
+ } catch (e) {
142
+ if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {
143
+ // Error code 16 - message already exists
144
+ // ignore
145
+ } else {
146
+ throw e;
147
+ }
148
+ }
149
+
150
+ removeFromApi();
151
+
152
+ return response;
153
+ };
154
+
155
+ static executeTask = async <
156
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
157
+ >({
158
+ client,
159
+ task,
160
+ }: {
161
+ client: StreamChat<StreamChatGenerics>;
162
+ task: PendingTask;
163
+ }) => {
164
+ const channel = client.channel(task.channelType, task.channelId);
165
+
166
+ if (task.type === 'send-reaction') {
167
+ return await channel.sendReaction(...task.payload);
168
+ }
169
+
170
+ if (task.type === 'delete-reaction') {
171
+ return await channel.deleteReaction(...task.payload);
172
+ }
173
+
174
+ if (task.type === 'delete-message') {
175
+ return await client.deleteMessage(...task.payload);
176
+ }
177
+
178
+ throw new Error('Invalid task type');
179
+ };
180
+
181
+ static executePendingTasks = async <
182
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
183
+ >(
184
+ client: StreamChat<StreamChatGenerics>,
185
+ ) => {
186
+ const queue = getPendingTasks();
187
+ for (const task of queue) {
188
+ if (!task.id) continue;
189
+
190
+ try {
191
+ await this.executeTask<StreamChatGenerics>({
192
+ client,
193
+ task,
194
+ });
195
+ } catch (e) {
196
+ if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {
197
+ // Error code 16 - message already exists
198
+ // ignore
199
+ } else {
200
+ throw e;
201
+ }
202
+ }
203
+
204
+ deletePendingTask({
205
+ id: task.id,
206
+ });
207
+ await restBeforeNextTask();
208
+ }
209
+ };
210
+
211
+ dropPendingTasks = (conditions: { messageId: string }) => {
212
+ const tasks = getPendingTasks(conditions);
213
+
214
+ for (const task of tasks) {
215
+ if (!task.id) continue;
216
+
217
+ deletePendingTask({
218
+ id: task.id,
219
+ });
220
+ }
221
+ };
222
+ }