stream-chat-react-native-core 6.0.0-rc.9 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js +53 -0
  3. package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -0
  4. package/lib/commonjs/components/AITypingIndicatorView/hooks/useAIState.js +59 -0
  5. package/lib/commonjs/components/AITypingIndicatorView/hooks/useAIState.js.map +1 -0
  6. package/lib/commonjs/components/AITypingIndicatorView/index.js +26 -0
  7. package/lib/commonjs/components/AITypingIndicatorView/index.js.map +1 -0
  8. package/lib/commonjs/components/Attachment/AudioAttachment.js +27 -22
  9. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/Gallery.js +3 -1
  11. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  12. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
  13. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  14. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +37 -133
  15. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  16. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +6 -4
  17. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  18. package/lib/commonjs/components/Channel/Channel.js +478 -1045
  19. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  20. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js +174 -0
  21. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -0
  22. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  23. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  24. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  25. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  26. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  27. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  28. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +324 -0
  29. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  30. package/lib/commonjs/components/ChannelList/Skeleton.js +7 -3
  31. package/lib/commonjs/components/ChannelList/Skeleton.js.map +1 -1
  32. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +85 -45
  33. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  34. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +17 -91
  35. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  36. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +3 -24
  37. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  38. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js +2 -2
  39. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  40. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js +121 -0
  41. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -0
  42. package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelMuted.js +35 -0
  43. package/lib/commonjs/components/ChannelPreview/hooks/useIsChannelMuted.js.map +1 -0
  44. package/lib/commonjs/components/Chat/Chat.js +5 -1
  45. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  46. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +15 -9
  47. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
  48. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -0
  49. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  50. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +0 -4
  51. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  52. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  53. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +46 -46
  54. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  55. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +3 -4
  56. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  57. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +2 -2
  58. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -1
  59. package/lib/commonjs/components/Message/Message.js +7 -0
  60. package/lib/commonjs/components/Message/Message.js.map +1 -1
  61. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +17 -4
  62. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  63. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +15 -6
  64. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  65. package/lib/commonjs/components/Message/MessageSimple/StreamingMessageView.js +36 -0
  66. package/lib/commonjs/components/Message/MessageSimple/StreamingMessageView.js.map +1 -0
  67. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +9 -1
  68. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  69. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +209 -23
  70. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  71. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +2 -0
  72. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  73. package/lib/commonjs/components/Message/hooks/useStreamingMessage.js +43 -0
  74. package/lib/commonjs/components/Message/hooks/useStreamingMessage.js.map +1 -0
  75. package/lib/commonjs/components/MessageInput/MessageInput.js +41 -21
  76. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  77. package/lib/commonjs/components/MessageInput/StopMessageStreamingButton.js +39 -0
  78. package/lib/commonjs/components/MessageInput/StopMessageStreamingButton.js.map +1 -0
  79. package/lib/commonjs/components/MessageList/MessageList.js +74 -73
  80. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  81. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  82. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
  83. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  84. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  85. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +1 -1
  86. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
  87. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  88. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  89. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js +3 -2
  90. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  91. package/lib/commonjs/components/Poll/CreatePollContent.js +14 -9
  92. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
  93. package/lib/commonjs/components/Poll/Poll.js +2 -8
  94. package/lib/commonjs/components/Poll/Poll.js.map +1 -1
  95. package/lib/commonjs/components/Poll/components/Button.js +9 -474
  96. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  97. package/lib/commonjs/components/Poll/components/CreatePollIcon.js +2 -2
  98. package/lib/commonjs/components/Poll/components/CreatePollIcon.js.map +1 -1
  99. package/lib/commonjs/components/Poll/components/CreatePollOptions.js +9 -4
  100. package/lib/commonjs/components/Poll/components/CreatePollOptions.js.map +1 -1
  101. package/lib/commonjs/components/Poll/components/PollAnswersList.js +99 -26
  102. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
  103. package/lib/commonjs/components/Poll/components/PollButtons.js +291 -0
  104. package/lib/commonjs/components/Poll/components/PollButtons.js.map +1 -0
  105. package/lib/commonjs/components/Poll/components/PollInputDialog.js +14 -4
  106. package/lib/commonjs/components/Poll/components/PollInputDialog.js.map +1 -1
  107. package/lib/commonjs/components/Poll/components/PollModalHeader.js +7 -1
  108. package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -1
  109. package/lib/commonjs/components/Poll/components/PollOption.js +88 -6
  110. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
  111. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  112. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  113. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +62 -67
  114. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  115. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js +89 -0
  116. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js.map +1 -0
  117. package/lib/commonjs/components/Poll/components/index.js +11 -0
  118. package/lib/commonjs/components/Poll/components/index.js.map +1 -1
  119. package/lib/commonjs/components/ThreadList/ThreadList.js +0 -3
  120. package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
  121. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +11 -5
  122. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
  123. package/lib/commonjs/components/index.js +66 -0
  124. package/lib/commonjs/components/index.js.map +1 -1
  125. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  126. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +0 -35
  127. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  128. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +7 -84
  129. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  130. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  131. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  132. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +4 -2
  133. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  134. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -0
  135. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  136. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  137. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  138. package/lib/commonjs/contexts/themeContext/utils/theme.js +15 -0
  139. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  140. package/lib/commonjs/i18n/en.json +2 -0
  141. package/lib/commonjs/i18n/es.json +2 -0
  142. package/lib/commonjs/i18n/fr.json +2 -0
  143. package/lib/commonjs/i18n/he.json +2 -0
  144. package/lib/commonjs/i18n/hi.json +2 -0
  145. package/lib/commonjs/i18n/it.json +2 -0
  146. package/lib/commonjs/i18n/ja.json +2 -0
  147. package/lib/commonjs/i18n/ko.json +2 -0
  148. package/lib/commonjs/i18n/nl.json +2 -0
  149. package/lib/commonjs/i18n/pt-br.json +2 -0
  150. package/lib/commonjs/i18n/ru.json +2 -0
  151. package/lib/commonjs/i18n/tr.json +2 -0
  152. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js +14 -0
  153. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -0
  154. package/lib/commonjs/mock-builders/event/notificationMarkRead.js +14 -0
  155. package/lib/commonjs/mock-builders/event/notificationMarkRead.js.map +1 -0
  156. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js +17 -0
  157. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js.map +1 -0
  158. package/lib/commonjs/mock-builders/generator/channel.js +1 -0
  159. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  160. package/lib/commonjs/store/SqliteClient.js +11 -2
  161. package/lib/commonjs/store/SqliteClient.js.map +1 -1
  162. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js +8 -2
  163. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js.map +1 -1
  164. package/lib/commonjs/utils/utils.js +3 -2
  165. package/lib/commonjs/utils/utils.js.map +1 -1
  166. package/lib/commonjs/version.json +1 -1
  167. package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js +53 -0
  168. package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -0
  169. package/lib/module/components/AITypingIndicatorView/hooks/useAIState.js +59 -0
  170. package/lib/module/components/AITypingIndicatorView/hooks/useAIState.js.map +1 -0
  171. package/lib/module/components/AITypingIndicatorView/index.js +26 -0
  172. package/lib/module/components/AITypingIndicatorView/index.js.map +1 -0
  173. package/lib/module/components/Attachment/AudioAttachment.js +27 -22
  174. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  175. package/lib/module/components/Attachment/Gallery.js +3 -1
  176. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  177. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
  178. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  179. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +37 -133
  180. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  181. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +6 -4
  182. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  183. package/lib/module/components/Channel/Channel.js +478 -1045
  184. package/lib/module/components/Channel/Channel.js.map +1 -1
  185. package/lib/module/components/Channel/hooks/useChannelDataState.js +174 -0
  186. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -0
  187. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  188. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  189. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +4 -0
  190. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  191. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  192. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  193. package/lib/module/components/Channel/hooks/useMessageListPagination.js +324 -0
  194. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  195. package/lib/module/components/ChannelList/Skeleton.js +7 -3
  196. package/lib/module/components/ChannelList/Skeleton.js.map +1 -1
  197. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +85 -45
  198. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  199. package/lib/module/components/ChannelPreview/ChannelPreview.js +17 -91
  200. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  201. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +3 -24
  202. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  203. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js +2 -2
  204. package/lib/module/components/ChannelPreview/ChannelPreviewMutedStatus.js.map +1 -1
  205. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js +121 -0
  206. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewData.js.map +1 -0
  207. package/lib/module/components/ChannelPreview/hooks/useIsChannelMuted.js +35 -0
  208. package/lib/module/components/ChannelPreview/hooks/useIsChannelMuted.js.map +1 -0
  209. package/lib/module/components/Chat/Chat.js +5 -1
  210. package/lib/module/components/Chat/Chat.js.map +1 -1
  211. package/lib/module/components/Chat/hooks/useAppSettings.js +15 -9
  212. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
  213. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -0
  214. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  215. package/lib/module/components/Chat/hooks/useIsOnline.js +0 -4
  216. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  217. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  218. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +46 -46
  219. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  220. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +3 -4
  221. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  222. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +2 -2
  223. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -1
  224. package/lib/module/components/Message/Message.js +7 -0
  225. package/lib/module/components/Message/Message.js.map +1 -1
  226. package/lib/module/components/Message/MessageSimple/MessageContent.js +17 -4
  227. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  228. package/lib/module/components/Message/MessageSimple/MessageFooter.js +15 -6
  229. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  230. package/lib/module/components/Message/MessageSimple/StreamingMessageView.js +36 -0
  231. package/lib/module/components/Message/MessageSimple/StreamingMessageView.js.map +1 -0
  232. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +9 -1
  233. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  234. package/lib/module/components/Message/MessageSimple/utils/renderText.js +209 -23
  235. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  236. package/lib/module/components/Message/hooks/useCreateMessageContext.js +2 -0
  237. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  238. package/lib/module/components/Message/hooks/useStreamingMessage.js +43 -0
  239. package/lib/module/components/Message/hooks/useStreamingMessage.js.map +1 -0
  240. package/lib/module/components/MessageInput/MessageInput.js +41 -21
  241. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  242. package/lib/module/components/MessageInput/StopMessageStreamingButton.js +39 -0
  243. package/lib/module/components/MessageInput/StopMessageStreamingButton.js.map +1 -0
  244. package/lib/module/components/MessageList/MessageList.js +74 -73
  245. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  246. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  247. package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
  248. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  249. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  250. package/lib/module/components/MessageMenu/MessageUserReactions.js +1 -1
  251. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
  252. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  253. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  254. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js +3 -2
  255. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  256. package/lib/module/components/Poll/CreatePollContent.js +14 -9
  257. package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
  258. package/lib/module/components/Poll/Poll.js +2 -8
  259. package/lib/module/components/Poll/Poll.js.map +1 -1
  260. package/lib/module/components/Poll/components/Button.js +9 -474
  261. package/lib/module/components/Poll/components/Button.js.map +1 -1
  262. package/lib/module/components/Poll/components/CreatePollIcon.js +2 -2
  263. package/lib/module/components/Poll/components/CreatePollIcon.js.map +1 -1
  264. package/lib/module/components/Poll/components/CreatePollOptions.js +9 -4
  265. package/lib/module/components/Poll/components/CreatePollOptions.js.map +1 -1
  266. package/lib/module/components/Poll/components/PollAnswersList.js +99 -26
  267. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
  268. package/lib/module/components/Poll/components/PollButtons.js +291 -0
  269. package/lib/module/components/Poll/components/PollButtons.js.map +1 -0
  270. package/lib/module/components/Poll/components/PollInputDialog.js +14 -4
  271. package/lib/module/components/Poll/components/PollInputDialog.js.map +1 -1
  272. package/lib/module/components/Poll/components/PollModalHeader.js +7 -1
  273. package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -1
  274. package/lib/module/components/Poll/components/PollOption.js +88 -6
  275. package/lib/module/components/Poll/components/PollOption.js.map +1 -1
  276. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  277. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  278. package/lib/module/components/Poll/components/PollResults/PollResultItem.js +62 -67
  279. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  280. package/lib/module/components/Poll/components/PollResults/PollVote.js +89 -0
  281. package/lib/module/components/Poll/components/PollResults/PollVote.js.map +1 -0
  282. package/lib/module/components/Poll/components/index.js +11 -0
  283. package/lib/module/components/Poll/components/index.js.map +1 -1
  284. package/lib/module/components/ThreadList/ThreadList.js +0 -3
  285. package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
  286. package/lib/module/components/UIComponents/BottomSheetModal.js +11 -5
  287. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
  288. package/lib/module/components/index.js +66 -0
  289. package/lib/module/components/index.js.map +1 -1
  290. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  291. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +0 -35
  292. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  293. package/lib/module/contexts/channelsStateContext/useChannelState.js +7 -84
  294. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  295. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  296. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  297. package/lib/module/contexts/messageInputContext/MessageInputContext.js +4 -2
  298. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  299. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -0
  300. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  301. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  302. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  303. package/lib/module/contexts/themeContext/utils/theme.js +15 -0
  304. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  305. package/lib/module/i18n/en.json +2 -0
  306. package/lib/module/i18n/es.json +2 -0
  307. package/lib/module/i18n/fr.json +2 -0
  308. package/lib/module/i18n/he.json +2 -0
  309. package/lib/module/i18n/hi.json +2 -0
  310. package/lib/module/i18n/it.json +2 -0
  311. package/lib/module/i18n/ja.json +2 -0
  312. package/lib/module/i18n/ko.json +2 -0
  313. package/lib/module/i18n/nl.json +2 -0
  314. package/lib/module/i18n/pt-br.json +2 -0
  315. package/lib/module/i18n/ru.json +2 -0
  316. package/lib/module/i18n/tr.json +2 -0
  317. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js +14 -0
  318. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -0
  319. package/lib/module/mock-builders/event/notificationMarkRead.js +14 -0
  320. package/lib/module/mock-builders/event/notificationMarkRead.js.map +1 -0
  321. package/lib/module/mock-builders/event/notificationMarkUnread.js +17 -0
  322. package/lib/module/mock-builders/event/notificationMarkUnread.js.map +1 -0
  323. package/lib/module/mock-builders/generator/channel.js +1 -0
  324. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  325. package/lib/module/store/SqliteClient.js +11 -2
  326. package/lib/module/store/SqliteClient.js.map +1 -1
  327. package/lib/module/utils/getTrimmedAttachmentTitle.js +8 -2
  328. package/lib/module/utils/getTrimmedAttachmentTitle.js.map +1 -1
  329. package/lib/module/utils/utils.js +3 -2
  330. package/lib/module/utils/utils.js.map +1 -1
  331. package/lib/module/version.json +1 -1
  332. package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts +11 -0
  333. package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts.map +1 -0
  334. package/lib/typescript/components/AITypingIndicatorView/hooks/useAIState.d.ts +18 -0
  335. package/lib/typescript/components/AITypingIndicatorView/hooks/useAIState.d.ts.map +1 -0
  336. package/lib/typescript/components/AITypingIndicatorView/index.d.ts +3 -0
  337. package/lib/typescript/components/AITypingIndicatorView/index.d.ts.map +1 -0
  338. package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
  339. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  340. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  341. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerSelectionBar.d.ts.map +1 -1
  342. package/lib/typescript/components/Channel/Channel.d.ts +7 -6
  343. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  344. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +75 -0
  345. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -0
  346. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  347. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  348. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +128 -1
  349. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  350. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +1 -1
  351. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts.map +1 -1
  352. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +28 -0
  353. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -0
  354. package/lib/typescript/components/ChannelList/Skeleton.d.ts.map +1 -1
  355. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  356. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -2
  357. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  358. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -0
  359. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  360. package/lib/typescript/components/ChannelPreview/ChannelPreviewMutedStatus.d.ts.map +1 -1
  361. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +8 -0
  362. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts.map +1 -0
  363. package/lib/typescript/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +8 -0
  364. package/lib/typescript/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -0
  365. package/lib/typescript/components/Chat/Chat.d.ts +7 -1
  366. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  367. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts.map +1 -1
  368. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  369. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  370. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts.map +1 -1
  371. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  372. package/lib/typescript/components/Message/Message.d.ts +1 -1
  373. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  374. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  375. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
  376. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  377. package/lib/typescript/components/Message/MessageSimple/StreamingMessageView.d.ts +12 -0
  378. package/lib/typescript/components/Message/MessageSimple/StreamingMessageView.d.ts.map +1 -0
  379. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts.map +1 -1
  380. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +16 -1
  381. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
  382. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  383. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  384. package/lib/typescript/components/Message/hooks/useStreamingMessage.d.ts +17 -0
  385. package/lib/typescript/components/Message/hooks/useStreamingMessage.d.ts.map +1 -0
  386. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  387. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  388. package/lib/typescript/components/MessageInput/StopMessageStreamingButton.d.ts +10 -0
  389. package/lib/typescript/components/MessageInput/StopMessageStreamingButton.d.ts.map +1 -0
  390. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  391. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  392. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  393. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +1 -1
  394. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +1 -1
  395. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -1
  396. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +3 -2
  397. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  398. package/lib/typescript/components/Poll/Poll.d.ts +0 -1
  399. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
  400. package/lib/typescript/components/Poll/components/Button.d.ts +0 -17
  401. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  402. package/lib/typescript/components/Poll/components/CreatePollOptions.d.ts.map +1 -1
  403. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +2 -0
  404. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
  405. package/lib/typescript/components/Poll/components/PollButtons.d.ts +10 -0
  406. package/lib/typescript/components/Poll/components/PollButtons.d.ts.map +1 -0
  407. package/lib/typescript/components/Poll/components/PollInputDialog.d.ts.map +1 -1
  408. package/lib/typescript/components/Poll/components/PollOption.d.ts +2 -0
  409. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
  410. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +11 -4
  411. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  412. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts +6 -0
  413. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts.map +1 -0
  414. package/lib/typescript/components/Poll/components/index.d.ts +1 -0
  415. package/lib/typescript/components/Poll/components/index.d.ts.map +1 -1
  416. package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
  417. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
  418. package/lib/typescript/components/index.d.ts +6 -0
  419. package/lib/typescript/components/index.d.ts.map +1 -1
  420. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +27 -25
  421. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  422. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +0 -16
  423. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts.map +1 -1
  424. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +7 -13
  425. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  426. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +2 -1
  427. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  428. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +4 -0
  429. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  430. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +2 -1
  431. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  432. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  433. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  434. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +8 -4
  435. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  436. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +17 -16
  437. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts.map +1 -1
  438. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +16 -1
  439. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  440. package/lib/typescript/i18n/en.json +2 -0
  441. package/lib/typescript/i18n/es.json +2 -0
  442. package/lib/typescript/i18n/fr.json +2 -0
  443. package/lib/typescript/i18n/he.json +2 -0
  444. package/lib/typescript/i18n/hi.json +2 -0
  445. package/lib/typescript/i18n/it.json +2 -0
  446. package/lib/typescript/i18n/ja.json +2 -0
  447. package/lib/typescript/i18n/ko.json +2 -0
  448. package/lib/typescript/i18n/nl.json +2 -0
  449. package/lib/typescript/i18n/pt-br.json +2 -0
  450. package/lib/typescript/i18n/ru.json +2 -0
  451. package/lib/typescript/i18n/tr.json +2 -0
  452. package/lib/typescript/store/SqliteClient.d.ts.map +1 -1
  453. package/lib/typescript/types/types.d.ts +3 -0
  454. package/lib/typescript/types/types.d.ts.map +1 -1
  455. package/lib/typescript/utils/getTrimmedAttachmentTitle.d.ts.map +1 -1
  456. package/lib/typescript/utils/i18n/Streami18n.d.ts +2 -0
  457. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  458. package/lib/typescript/utils/utils.d.ts.map +1 -1
  459. package/package.json +5 -5
  460. package/src/components/AITypingIndicatorView/AITypingIndicatorView.tsx +50 -0
  461. package/src/components/AITypingIndicatorView/hooks/useAIState.ts +68 -0
  462. package/src/components/AITypingIndicatorView/index.ts +2 -0
  463. package/src/components/Attachment/AudioAttachment.tsx +20 -19
  464. package/src/components/Attachment/Gallery.tsx +1 -1
  465. package/src/components/AttachmentPicker/AttachmentPicker.tsx +7 -2
  466. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +16 -32
  467. package/src/components/AttachmentPicker/components/AttachmentPickerSelectionBar.tsx +3 -5
  468. package/src/components/Channel/Channel.tsx +262 -821
  469. package/src/components/Channel/__tests__/Channel.test.js +244 -13
  470. package/src/components/Channel/__tests__/useMessageListPagination.test.js +419 -0
  471. package/src/components/Channel/hooks/useChannelDataState.ts +235 -0
  472. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
  473. package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -0
  474. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +3 -10
  475. package/src/components/Channel/hooks/useMessageListPagination.tsx +246 -0
  476. package/src/components/ChannelList/Skeleton.tsx +9 -1
  477. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +37 -30
  478. package/src/components/ChannelPreview/ChannelPreview.tsx +28 -107
  479. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +5 -15
  480. package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx +2 -7
  481. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +226 -10
  482. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayName.test.tsx +1 -1
  483. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewMuted.test.tsx +62 -0
  484. package/src/components/ChannelPreview/hooks/useChannelPreviewData.ts +138 -0
  485. package/src/components/ChannelPreview/hooks/useIsChannelMuted.ts +29 -0
  486. package/src/components/Chat/Chat.tsx +11 -2
  487. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +1 -0
  488. package/src/components/Chat/hooks/useAppSettings.ts +2 -0
  489. package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
  490. package/src/components/Chat/hooks/useIsOnline.ts +0 -5
  491. package/src/components/ImageGallery/ImageGallery.tsx +1 -0
  492. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +32 -32
  493. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +5 -6
  494. package/src/components/ImageGallery/hooks/useAnimatedGalleryStyle.tsx +2 -2
  495. package/src/components/Message/Message.tsx +16 -2
  496. package/src/components/Message/MessageSimple/MessageContent.tsx +22 -2
  497. package/src/components/Message/MessageSimple/MessageFooter.tsx +16 -5
  498. package/src/components/Message/MessageSimple/StreamingMessageView.tsx +34 -0
  499. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +15 -1
  500. package/src/components/Message/MessageSimple/utils/renderText.tsx +207 -3
  501. package/src/components/Message/hooks/useCreateMessageContext.ts +2 -0
  502. package/src/components/Message/hooks/useStreamingMessage.ts +54 -0
  503. package/src/components/MessageInput/MessageInput.tsx +38 -20
  504. package/src/components/MessageInput/StopMessageStreamingButton.tsx +34 -0
  505. package/src/components/MessageInput/__tests__/MessageInput.test.js +116 -2
  506. package/src/components/MessageList/MessageList.tsx +53 -85
  507. package/src/components/MessageList/ScrollToBottomButton.tsx +1 -1
  508. package/src/components/MessageList/__tests__/MessageList.test.js +174 -2
  509. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  510. package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -1
  511. package/src/components/MessageList/hooks/useMessageList.ts +2 -5
  512. package/src/components/MessageList/utils/getReadStates.ts +3 -2
  513. package/src/components/MessageMenu/MessageUserReactions.tsx +1 -1
  514. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +4 -2
  515. package/src/components/MessageMenu/hooks/useFetchReactions.ts +6 -3
  516. package/src/components/Poll/CreatePollContent.tsx +4 -4
  517. package/src/components/Poll/Poll.tsx +1 -20
  518. package/src/components/Poll/components/Button.tsx +8 -420
  519. package/src/components/Poll/components/CreatePollIcon.tsx +1 -1
  520. package/src/components/Poll/components/CreatePollOptions.tsx +9 -4
  521. package/src/components/Poll/components/PollAnswersList.tsx +66 -3
  522. package/src/components/Poll/components/PollButtons.tsx +241 -0
  523. package/src/components/Poll/components/PollInputDialog.tsx +9 -6
  524. package/src/components/Poll/components/PollModalHeader.tsx +3 -3
  525. package/src/components/Poll/components/PollOption.tsx +74 -4
  526. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +1 -1
  527. package/src/components/Poll/components/PollResults/PollResultItem.tsx +68 -52
  528. package/src/components/Poll/components/PollResults/PollVote.tsx +68 -0
  529. package/src/components/Poll/components/index.ts +1 -0
  530. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +37 -4
  531. package/src/components/ThreadList/ThreadList.tsx +0 -2
  532. package/src/components/UIComponents/BottomSheetModal.tsx +7 -3
  533. package/src/components/index.ts +7 -0
  534. package/src/contexts/channelContext/ChannelContext.tsx +35 -25
  535. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +1 -67
  536. package/src/contexts/channelsStateContext/useChannelState.ts +6 -108
  537. package/src/contexts/chatContext/ChatContext.tsx +2 -1
  538. package/src/contexts/messageContext/MessageContext.tsx +4 -0
  539. package/src/contexts/messageInputContext/MessageInputContext.tsx +5 -1
  540. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +2 -0
  541. package/src/contexts/messagesContext/MessagesContext.tsx +8 -3
  542. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +17 -16
  543. package/src/contexts/themeContext/utils/theme.ts +30 -1
  544. package/src/i18n/en.json +2 -0
  545. package/src/i18n/es.json +2 -0
  546. package/src/i18n/fr.json +2 -0
  547. package/src/i18n/he.json +2 -0
  548. package/src/i18n/hi.json +2 -0
  549. package/src/i18n/it.json +2 -0
  550. package/src/i18n/ja.json +2 -0
  551. package/src/i18n/ko.json +2 -0
  552. package/src/i18n/nl.json +2 -0
  553. package/src/i18n/pt-br.json +2 -0
  554. package/src/i18n/ru.json +2 -0
  555. package/src/i18n/tr.json +2 -0
  556. package/src/mock-builders/event/notificationChannelMutesUpdated.js +7 -0
  557. package/src/mock-builders/event/notificationMarkRead.js +7 -0
  558. package/src/mock-builders/event/notificationMarkUnread.js +9 -0
  559. package/src/mock-builders/generator/channel.ts +1 -0
  560. package/src/store/SqliteClient.ts +5 -1
  561. package/src/types/types.ts +3 -0
  562. package/src/utils/getTrimmedAttachmentTitle.ts +10 -2
  563. package/src/utils/utils.ts +5 -2
  564. package/src/version.json +1 -1
@@ -0,0 +1,235 @@
1
+ import { useCallback, useState } from 'react';
2
+
3
+ import { Channel, ChannelState as StreamChannelState } from 'stream-chat';
4
+
5
+ import { DefaultStreamChatGenerics } from '../../../types/types';
6
+ import { MessageType } from '../../MessageList/hooks/useMessageList';
7
+
8
+ export const channelInitialState = {
9
+ hasMore: true,
10
+ hasMoreNewer: false,
11
+ loading: false,
12
+ loadingMore: false,
13
+ loadingMoreRecent: false,
14
+ members: {},
15
+ messages: [],
16
+ pinnedMessages: [],
17
+ read: {},
18
+ targetedMessageId: undefined,
19
+ typing: {},
20
+ watcherCount: 0,
21
+ watchers: {},
22
+ };
23
+
24
+ /**
25
+ * The ChannelMessagesState object
26
+ */
27
+ export type ChannelMessagesState<
28
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
29
+ > = {
30
+ hasMore?: boolean;
31
+ hasMoreNewer?: boolean;
32
+ loading?: boolean;
33
+ loadingMore?: boolean;
34
+ loadingMoreRecent?: boolean;
35
+ messages?: StreamChannelState<StreamChatGenerics>['messages'];
36
+ pinnedMessages?: StreamChannelState<StreamChatGenerics>['pinnedMessages'];
37
+ targetedMessageId?: string;
38
+ };
39
+
40
+ /**
41
+ * The ChannelThreadState object
42
+ */
43
+ export type ChannelThreadState<
44
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
45
+ > = {
46
+ thread: MessageType<StreamChatGenerics> | null;
47
+ threadHasMore?: boolean;
48
+ threadLoadingMore?: boolean;
49
+ threadMessages?: StreamChannelState<StreamChatGenerics>['messages'];
50
+ };
51
+
52
+ /**
53
+ * The ChannelState object
54
+ */
55
+ export type ChannelState<
56
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
57
+ > = ChannelMessagesState<StreamChatGenerics> & {
58
+ members?: StreamChannelState<StreamChatGenerics>['members'];
59
+ read?: StreamChannelState<StreamChatGenerics>['read'];
60
+ typing?: StreamChannelState<StreamChatGenerics>['typing'];
61
+ watcherCount?: number;
62
+ watchers?: StreamChannelState<StreamChatGenerics>['watchers'];
63
+ };
64
+
65
+ /**
66
+ * The useChannelMessageDataState hook that handles the state for the channel messages.
67
+ */
68
+ export const useChannelMessageDataState = <
69
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
70
+ >(
71
+ channel: Channel<StreamChatGenerics>,
72
+ ) => {
73
+ const [state, setState] = useState<ChannelMessagesState<StreamChatGenerics>>({
74
+ hasMore: true,
75
+ hasMoreNewer: false,
76
+ loading: false,
77
+ loadingMore: false,
78
+ loadingMoreRecent: false,
79
+ messages: channel?.state?.messages || [],
80
+ pinnedMessages: channel?.state?.pinnedMessages || [],
81
+ targetedMessageId: undefined,
82
+ });
83
+
84
+ const copyMessagesStateFromChannel = useCallback((channel: Channel<StreamChatGenerics>) => {
85
+ setState((prev) => ({
86
+ ...prev,
87
+ messages: [...channel.state.messages],
88
+ pinnedMessages: [...channel.state.pinnedMessages],
89
+ }));
90
+ }, []);
91
+
92
+ const loadInitialMessagesStateFromChannel = useCallback(
93
+ (channel: Channel<StreamChatGenerics>, hasMore: boolean) => {
94
+ setState((prev) => ({
95
+ ...prev,
96
+ hasMore,
97
+ loading: false,
98
+ messages: [...channel.state.messages],
99
+ pinnedMessages: [...channel.state.pinnedMessages],
100
+ }));
101
+ },
102
+ [],
103
+ );
104
+
105
+ const jumpToLatestMessage = useCallback(() => {
106
+ setState((prev) => ({
107
+ ...prev,
108
+ hasMoreNewer: false,
109
+ loading: false,
110
+ targetedMessageId: undefined,
111
+ }));
112
+ }, []);
113
+
114
+ const jumpToMessageFinished = useCallback((hasMoreNewer: boolean, targetedMessageId: string) => {
115
+ setState((prev) => ({
116
+ ...prev,
117
+ hasMoreNewer,
118
+ loading: false,
119
+ targetedMessageId,
120
+ }));
121
+ }, []);
122
+
123
+ const loadMoreFinished = useCallback(
124
+ (hasMore: boolean, messages: ChannelState<StreamChatGenerics>['messages']) => {
125
+ setState((prev) => ({
126
+ ...prev,
127
+ hasMore,
128
+ loadingMore: false,
129
+ messages,
130
+ }));
131
+ },
132
+ [],
133
+ );
134
+
135
+ const setLoadingMore = useCallback((loadingMore: boolean) => {
136
+ setState((prev) => ({
137
+ ...prev,
138
+ loadingMore,
139
+ }));
140
+ }, []);
141
+
142
+ const setLoadingMoreRecent = useCallback((loadingMoreRecent: boolean) => {
143
+ setState((prev) => ({
144
+ ...prev,
145
+ loadingMoreRecent,
146
+ }));
147
+ }, []);
148
+
149
+ const setLoading = useCallback((loading: boolean) => {
150
+ setState((prev) => ({
151
+ ...prev,
152
+ loading,
153
+ }));
154
+ }, []);
155
+
156
+ const loadMoreRecentFinished = useCallback(
157
+ (hasMoreNewer: boolean, messages: ChannelState<StreamChatGenerics>['messages']) => {
158
+ setState((prev) => ({
159
+ ...prev,
160
+ hasMoreNewer,
161
+ loadingMoreRecent: false,
162
+ messages,
163
+ }));
164
+ },
165
+ [],
166
+ );
167
+
168
+ return {
169
+ copyMessagesStateFromChannel,
170
+ jumpToLatestMessage,
171
+ jumpToMessageFinished,
172
+ loadInitialMessagesStateFromChannel,
173
+ loadMoreFinished,
174
+ loadMoreRecentFinished,
175
+ setLoading,
176
+ setLoadingMore,
177
+ setLoadingMoreRecent,
178
+ state,
179
+ };
180
+ };
181
+
182
+ /**
183
+ * The useChannelThreadState hook that handles the state for the channel member, read, typing, watchers, etc.
184
+ */
185
+ export const useChannelDataState = <
186
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
187
+ >(
188
+ channel: Channel<StreamChatGenerics>,
189
+ ) => {
190
+ const [state, setState] = useState<ChannelState<StreamChatGenerics>>({
191
+ members: channel.state.members,
192
+ read: channel.state.read,
193
+ typing: {},
194
+ watcherCount: 0,
195
+ watchers: {},
196
+ });
197
+
198
+ const initStateFromChannel = useCallback(
199
+ (channel: Channel<StreamChatGenerics>) => {
200
+ setState({
201
+ ...state,
202
+ members: { ...channel.state.members },
203
+ read: { ...channel.state.read },
204
+ typing: { ...channel.state.typing },
205
+ watcherCount: channel.state.watcher_count,
206
+ watchers: { ...channel.state.watchers },
207
+ });
208
+ },
209
+ [state],
210
+ );
211
+
212
+ const copyStateFromChannel = useCallback((channel: Channel<StreamChatGenerics>) => {
213
+ setState((prev) => ({
214
+ ...prev,
215
+ members: { ...channel.state.members },
216
+ read: { ...channel.state.read },
217
+ watcherCount: channel.state.watcher_count,
218
+ watchers: { ...channel.state.watchers },
219
+ }));
220
+ }, []);
221
+
222
+ const setTyping = useCallback((channel: Channel<StreamChatGenerics>) => {
223
+ setState((prev) => ({
224
+ ...prev,
225
+ typing: { ...channel.state.typing }, // Synchronize the typing state from the channel
226
+ }));
227
+ }, []);
228
+
229
+ return {
230
+ copyStateFromChannel,
231
+ initStateFromChannel,
232
+ setTyping,
233
+ state,
234
+ };
235
+ };
@@ -64,6 +64,7 @@ export const useCreateInputMessageInputContext = <
64
64
  showPollCreationDialog,
65
65
  ShowThreadMessageInChannelButton,
66
66
  StartAudioRecordingButton,
67
+ StopMessageStreamingButton,
67
68
  UploadProgressIndicator,
68
69
  }: InputMessageInputContextValue<StreamChatGenerics> & {
69
70
  /**
@@ -133,6 +134,7 @@ export const useCreateInputMessageInputContext = <
133
134
  showPollCreationDialog,
134
135
  ShowThreadMessageInChannelButton,
135
136
  StartAudioRecordingButton,
137
+ StopMessageStreamingButton,
136
138
  UploadProgressIndicator,
137
139
  }),
138
140
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -49,6 +49,7 @@ export const useCreateMessagesContext = <
49
49
  InlineDateSeparator,
50
50
  InlineUnreadIndicator,
51
51
  isAttachmentEqual,
52
+ isMessageAIGenerated,
52
53
  legacyImageViewerSwipeBehaviour,
53
54
  markdownRules,
54
55
  Message,
@@ -96,6 +97,7 @@ export const useCreateMessagesContext = <
96
97
  setEditingState,
97
98
  setQuotedMessageState,
98
99
  shouldShowUnreadUnderlay,
100
+ StreamingMessageView,
99
101
  supportedReactions,
100
102
  targetedMessage,
101
103
  TypingIndicator,
@@ -158,6 +160,7 @@ export const useCreateMessagesContext = <
158
160
  InlineDateSeparator,
159
161
  InlineUnreadIndicator,
160
162
  isAttachmentEqual,
163
+ isMessageAIGenerated,
161
164
  legacyImageViewerSwipeBehaviour,
162
165
  markdownRules,
163
166
  Message,
@@ -205,6 +208,7 @@ export const useCreateMessagesContext = <
205
208
  setEditingState,
206
209
  setQuotedMessageState,
207
210
  shouldShowUnreadUnderlay,
211
+ StreamingMessageView,
208
212
  supportedReactions,
209
213
  targetedMessage,
210
214
  TypingIndicator,
@@ -9,9 +9,9 @@ export const useCreatePaginatedMessageListContext = <
9
9
  >({
10
10
  channelId,
11
11
  hasMore,
12
- hasNoMoreRecentMessagesToLoad,
13
12
  loadingMore,
14
13
  loadingMoreRecent,
14
+ loadLatestMessages,
15
15
  loadMore,
16
16
  loadMoreRecent,
17
17
  messages,
@@ -25,9 +25,9 @@ export const useCreatePaginatedMessageListContext = <
25
25
  const paginatedMessagesContext: PaginatedMessageListContextValue<StreamChatGenerics> = useMemo(
26
26
  () => ({
27
27
  hasMore,
28
- hasNoMoreRecentMessagesToLoad,
29
28
  loadingMore,
30
29
  loadingMoreRecent,
30
+ loadLatestMessages,
31
31
  loadMore,
32
32
  loadMoreRecent,
33
33
  messages,
@@ -35,14 +35,7 @@ export const useCreatePaginatedMessageListContext = <
35
35
  setLoadingMoreRecent,
36
36
  }),
37
37
  // eslint-disable-next-line react-hooks/exhaustive-deps
38
- [
39
- channelId,
40
- hasMore,
41
- loadingMoreRecent,
42
- loadingMore,
43
- hasNoMoreRecentMessagesToLoad,
44
- messagesStr,
45
- ],
38
+ [channelId, hasMore, loadingMore, loadingMoreRecent, messagesStr],
46
39
  );
47
40
 
48
41
  return paginatedMessagesContext;
@@ -0,0 +1,246 @@
1
+ import { useRef } from 'react';
2
+
3
+ import debounce from 'lodash/debounce';
4
+ import { Channel, ChannelState } from 'stream-chat';
5
+
6
+ import { useChannelMessageDataState } from './useChannelDataState';
7
+
8
+ import { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
9
+ import { DefaultStreamChatGenerics } from '../../../types/types';
10
+
11
+ const defaultDebounceInterval = 500;
12
+ const debounceOptions = {
13
+ leading: true,
14
+ trailing: true,
15
+ };
16
+
17
+ /**
18
+ * The useMessageListPagination hook handles pagination for the message list.
19
+ * It provides functionality to load more messages, load more recent messages, load latest messages, and load channel around a specific message.
20
+ *
21
+ * @param channel The channel object for which the message list pagination is being handled.
22
+ */
23
+ export const useMessageListPagination = <
24
+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
25
+ >({
26
+ channel,
27
+ }: {
28
+ channel: Channel<StreamChatGenerics>;
29
+ }) => {
30
+ const {
31
+ copyMessagesStateFromChannel,
32
+ jumpToLatestMessage,
33
+ jumpToMessageFinished,
34
+ loadInitialMessagesStateFromChannel,
35
+ loadMoreFinished: loadMoreFinishedFn,
36
+ loadMoreRecentFinished: loadMoreRecentFinishedFn,
37
+ setLoading,
38
+ setLoadingMore,
39
+ setLoadingMoreRecent,
40
+ state,
41
+ } = useChannelMessageDataState<StreamChatGenerics>(channel);
42
+
43
+ // hard limit to prevent you from scrolling faster than 1 page per 2 seconds
44
+ const loadMoreFinished = useRef(
45
+ debounce(
46
+ (hasMore: boolean, messages: ChannelState<StreamChatGenerics>['messages']) => {
47
+ loadMoreFinishedFn(hasMore, messages);
48
+ },
49
+ defaultDebounceInterval,
50
+ debounceOptions,
51
+ ),
52
+ ).current;
53
+
54
+ // hard limit to prevent you from scrolling faster than 1 page per 2 seconds
55
+ const loadMoreRecentFinished = useRef(
56
+ debounce(
57
+ (hasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {
58
+ loadMoreRecentFinishedFn(hasMore, newMessages);
59
+ },
60
+ defaultDebounceInterval,
61
+ debounceOptions,
62
+ ),
63
+ ).current;
64
+
65
+ /**
66
+ * This function loads the latest messages in the channel.
67
+ */
68
+ const loadLatestMessages = async () => {
69
+ try {
70
+ setLoading(true);
71
+ await channel.state.loadMessageIntoState('latest');
72
+ loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
73
+ jumpToLatestMessage();
74
+ } catch (err) {
75
+ console.warn('Loading latest messages failed with error:', err);
76
+ }
77
+ };
78
+
79
+ /**
80
+ * This function loads more messages before the first message in current channel state.
81
+ */
82
+ const loadMore = async (limit = 20) => {
83
+ if (!channel.state.messagePagination.hasPrev) {
84
+ return;
85
+ }
86
+
87
+ if (state.loadingMore || state.loadingMoreRecent) {
88
+ return;
89
+ }
90
+
91
+ setLoadingMore(true);
92
+ const oldestMessage = state.messages?.[0];
93
+ const oldestID = oldestMessage?.id;
94
+
95
+ try {
96
+ await channel.query({
97
+ messages: { id_lt: oldestID, limit },
98
+ watchers: { limit },
99
+ });
100
+ loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
101
+ setLoadingMore(false);
102
+ } catch (e) {
103
+ setLoadingMore(false);
104
+ console.warn('Message pagination(fetching old messages) request failed with error:', e);
105
+ }
106
+ };
107
+
108
+ /**
109
+ * This function loads more messages after the most recent message in current channel state.
110
+ */
111
+ const loadMoreRecent = async (limit = 10) => {
112
+ if (!channel.state.messagePagination.hasNext) {
113
+ return;
114
+ }
115
+
116
+ if (state.loadingMore || state.loadingMoreRecent) {
117
+ return;
118
+ }
119
+
120
+ setLoadingMoreRecent(true);
121
+ const newestMessage = state.messages?.[state?.messages.length - 1];
122
+ const newestID = newestMessage?.id;
123
+
124
+ try {
125
+ await channel.query({
126
+ messages: { id_gt: newestID, limit },
127
+ watchers: { limit },
128
+ });
129
+ loadMoreRecentFinished(channel.state.messagePagination.hasNext, channel.state.messages);
130
+ } catch (e) {
131
+ setLoadingMoreRecent(false);
132
+ console.warn('Message pagination(fetching new messages) request failed with error:', e);
133
+ return;
134
+ }
135
+ };
136
+
137
+ /**
138
+ * Loads channel around a specific message
139
+ *
140
+ * @param messageId If undefined, channel will be loaded at most recent message.
141
+ */
142
+ const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =
143
+ async ({ limit = 25, messageId: messageIdToLoadAround, setTargetedMessage }) => {
144
+ if (!messageIdToLoadAround) return;
145
+ setLoadingMore(true);
146
+ setLoading(true);
147
+ try {
148
+ await channel.state.loadMessageIntoState(messageIdToLoadAround, undefined, limit);
149
+ loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
150
+ jumpToMessageFinished(channel.state.messagePagination.hasNext, messageIdToLoadAround);
151
+
152
+ if (setTargetedMessage) {
153
+ setTargetedMessage(messageIdToLoadAround);
154
+ }
155
+ } catch (error) {
156
+ console.warn(
157
+ 'Message pagination(fetching messages in the channel around a message id) request failed with error:',
158
+ error,
159
+ );
160
+ return;
161
+ }
162
+ };
163
+
164
+ /**
165
+ * Loads channel at first unread message.
166
+ */
167
+ const loadChannelAtFirstUnreadMessage = async ({
168
+ limit = 25,
169
+ setTargetedMessage,
170
+ }: {
171
+ limit?: number;
172
+ setTargetedMessage?: (messageId: string) => void;
173
+ }) => {
174
+ let unreadMessageIdToScrollTo: string | undefined;
175
+ const unreadCount = channel.countUnread();
176
+ if (unreadCount === 0) return;
177
+ const isLatestMessageSetShown = !!channel.state.messageSets.find(
178
+ (set) => set.isCurrent && set.isLatest,
179
+ );
180
+
181
+ if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {
182
+ unreadMessageIdToScrollTo =
183
+ channel.state.messages[channel.state.messages.length - unreadCount].id;
184
+ if (unreadMessageIdToScrollTo) {
185
+ setLoadingMore(true);
186
+ await channel.state.loadMessageIntoState(unreadMessageIdToScrollTo, undefined, limit);
187
+ loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
188
+ jumpToMessageFinished(channel.state.messagePagination.hasNext, unreadMessageIdToScrollTo);
189
+ if (setTargetedMessage) {
190
+ setTargetedMessage(unreadMessageIdToScrollTo);
191
+ }
192
+ }
193
+ return;
194
+ }
195
+ const lastReadDate = channel.lastRead();
196
+ let messages;
197
+ if (lastReadDate) {
198
+ try {
199
+ messages = (
200
+ await channel.query(
201
+ {
202
+ messages: {
203
+ created_at_around: lastReadDate,
204
+ limit: 30,
205
+ },
206
+ watch: true,
207
+ },
208
+ 'new',
209
+ )
210
+ ).messages;
211
+
212
+ unreadMessageIdToScrollTo = messages.find(
213
+ (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),
214
+ )?.id;
215
+ if (unreadMessageIdToScrollTo) {
216
+ setLoadingMore(true);
217
+ await channel.state.loadMessageIntoState(unreadMessageIdToScrollTo, undefined, limit);
218
+ loadMoreFinished(channel.state.messagePagination.hasPrev, channel.state.messages);
219
+ jumpToMessageFinished(channel.state.messagePagination.hasNext, unreadMessageIdToScrollTo);
220
+ if (setTargetedMessage) {
221
+ setTargetedMessage(unreadMessageIdToScrollTo);
222
+ }
223
+ }
224
+ } catch (error) {
225
+ console.warn(
226
+ 'Message pagination(fetching messages in the channel around unread message) request failed with error:',
227
+ error,
228
+ );
229
+ return;
230
+ }
231
+ } else {
232
+ await loadLatestMessages();
233
+ }
234
+ };
235
+
236
+ return {
237
+ copyMessagesStateFromChannel,
238
+ loadChannelAroundMessage,
239
+ loadChannelAtFirstUnreadMessage,
240
+ loadInitialMessagesStateFromChannel,
241
+ loadLatestMessages,
242
+ loadMore,
243
+ loadMoreRecent,
244
+ state,
245
+ };
246
+ };
@@ -2,6 +2,7 @@ import React, { useEffect } from 'react';
2
2
  import { StyleSheet, useWindowDimensions, View } from 'react-native';
3
3
  import Animated, {
4
4
  Easing,
5
+ useAnimatedProps,
5
6
  useAnimatedStyle,
6
7
  useDerivedValue,
7
8
  useSharedValue,
@@ -114,6 +115,13 @@ export const Skeleton = () => {
114
115
  } a${boneRadius} ${boneRadius} 0 1 0 0 -${boneHeight}z`;
115
116
  }, []);
116
117
 
118
+ const svgAnimatedProps = useAnimatedProps(
119
+ () => ({
120
+ d: d.value,
121
+ }),
122
+ [d],
123
+ );
124
+
117
125
  return (
118
126
  <View
119
127
  style={[styles.container, { borderBottomColor: border }, container]}
@@ -140,7 +148,7 @@ export const Skeleton = () => {
140
148
  </Svg>
141
149
  </Animated.View>
142
150
  <Svg height={height} width={width}>
143
- <Path d={d.value} fill={maskFillColor || white_snow} />
151
+ <Path {...svgAnimatedProps} fill={maskFillColor || white_snow} />
144
152
  </Svg>
145
153
  </View>
146
154
  );
@@ -191,30 +191,33 @@ export const usePaginatedChannels = <
191
191
  const sortStr = useMemo(() => JSON.stringify(sort), [sort]);
192
192
 
193
193
  useEffect(() => {
194
- const loadOfflineChannels = () => {
194
+ const loadOfflineChannels = async () => {
195
195
  if (!client?.user?.id) return;
196
196
 
197
- getChannelsForFilterSort({
198
- currentUserId: client.user.id,
199
- filters,
200
- sort,
201
- })
202
- .then((channelsFromDB) => {
203
- if (channelsFromDB) {
204
- const offlineChannels = client.hydrateActiveChannels(channelsFromDB, {
205
- offlineMode: true,
206
- skipInitialization: [], // passing empty array will clear out the existing messages from channel state, this removes the possibility of duplicate messages
207
- });
208
-
209
- setChannels(offlineChannels);
210
- setStaticChannelsActive(true);
211
- }
212
- })
213
- .catch((e) => {
214
- console.warn('Failed to get channels from database: ', e);
197
+ try {
198
+ const channelsFromDB = await getChannelsForFilterSort({
199
+ currentUserId: client.user.id,
200
+ filters,
201
+ sort,
215
202
  });
216
203
 
204
+ if (channelsFromDB) {
205
+ const offlineChannels = client.hydrateActiveChannels(channelsFromDB, {
206
+ offlineMode: true,
207
+ skipInitialization: [], // passing empty array will clear out the existing messages from channel state, this removes the possibility of duplicate messages
208
+ });
209
+
210
+ setChannels(offlineChannels);
211
+ setStaticChannelsActive(true);
212
+ }
213
+ } catch (e) {
214
+ console.warn('Failed to get channels from database: ', e);
215
+ return false;
216
+ }
217
+
217
218
  setActiveQueryType(null);
219
+
220
+ return true;
218
221
  };
219
222
 
220
223
  let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;
@@ -223,20 +226,24 @@ export const usePaginatedChannels = <
223
226
  // and then call queryChannels to ensure any new channels are added to UI.
224
227
  listener = DBSyncManager.onSyncStatusChange(async (syncStatus) => {
225
228
  if (syncStatus) {
226
- loadOfflineChannels();
227
- await reloadList();
228
- setForceUpdate((u) => u + 1);
229
+ const loadingChannelsSucceeded = await loadOfflineChannels();
230
+ if (loadingChannelsSucceeded) {
231
+ await reloadList();
232
+ setForceUpdate((u) => u + 1);
233
+ }
229
234
  }
230
235
  });
231
236
  // On start, load the channels from local db.
232
- loadOfflineChannels();
233
-
234
- // If db is already synced (sync api and pending api calls), then
235
- // right away call queryChannels.
236
- const dbSyncStatus = DBSyncManager.getSyncStatus();
237
- if (dbSyncStatus) {
238
- reloadList();
239
- }
237
+ loadOfflineChannels().then((success) => {
238
+ // If db is already synced (sync api and pending api calls), then
239
+ // right away call queryChannels.
240
+ if (success) {
241
+ const dbSyncStatus = DBSyncManager.getSyncStatus();
242
+ if (dbSyncStatus) {
243
+ reloadList();
244
+ }
245
+ }
246
+ });
240
247
  } else {
241
248
  listener = client.on('connection.changed', async (event) => {
242
249
  if (event.online) {