stream-chat-react-native-core 9.0.1 → 9.0.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.test.js +1 -1
  3. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
  4. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  5. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  6. package/lib/commonjs/mock-builders/api/channelMocks.js +38 -31
  7. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  8. package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -1
  9. package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -1
  10. package/lib/commonjs/mock-builders/api/error.js.map +1 -1
  11. package/lib/commonjs/mock-builders/api/getOrCreateChannel.js.map +1 -1
  12. package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js +1 -1
  13. package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js.map +1 -1
  14. package/lib/commonjs/mock-builders/api/queryChannels.js.map +1 -1
  15. package/lib/commonjs/mock-builders/api/queryMembers.js +12 -11
  16. package/lib/commonjs/mock-builders/api/queryMembers.js.map +1 -1
  17. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  18. package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -1
  19. package/lib/commonjs/mock-builders/api/threadReplies.js.map +1 -1
  20. package/lib/commonjs/mock-builders/api/useMockedApis.js.map +1 -1
  21. package/lib/commonjs/mock-builders/api/utils.js.map +1 -1
  22. package/lib/commonjs/mock-builders/attachments.js.map +1 -1
  23. package/lib/commonjs/mock-builders/event/channelDeleted.js +3 -2
  24. package/lib/commonjs/mock-builders/event/channelDeleted.js.map +1 -1
  25. package/lib/commonjs/mock-builders/event/channelHidden.js +3 -2
  26. package/lib/commonjs/mock-builders/event/channelHidden.js.map +1 -1
  27. package/lib/commonjs/mock-builders/event/channelTruncated.js +3 -2
  28. package/lib/commonjs/mock-builders/event/channelTruncated.js.map +1 -1
  29. package/lib/commonjs/mock-builders/event/channelUpdated.js +3 -2
  30. package/lib/commonjs/mock-builders/event/channelUpdated.js.map +1 -1
  31. package/lib/commonjs/mock-builders/event/channelVisible.js +3 -2
  32. package/lib/commonjs/mock-builders/event/channelVisible.js.map +1 -1
  33. package/lib/commonjs/mock-builders/event/connectionChanged.js +3 -2
  34. package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
  35. package/lib/commonjs/mock-builders/event/connectionRecovered.js +3 -2
  36. package/lib/commonjs/mock-builders/event/connectionRecovered.js.map +1 -1
  37. package/lib/commonjs/mock-builders/event/memberAdded.js +3 -2
  38. package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -1
  39. package/lib/commonjs/mock-builders/event/memberRemoved.js +3 -2
  40. package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -1
  41. package/lib/commonjs/mock-builders/event/memberUpdated.js +3 -2
  42. package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -1
  43. package/lib/commonjs/mock-builders/event/messageDeleted.js +3 -2
  44. package/lib/commonjs/mock-builders/event/messageDeleted.js.map +1 -1
  45. package/lib/commonjs/mock-builders/event/messageNew.js +3 -2
  46. package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
  47. package/lib/commonjs/mock-builders/event/messageRead.js +3 -2
  48. package/lib/commonjs/mock-builders/event/messageRead.js.map +1 -1
  49. package/lib/commonjs/mock-builders/event/messageUpdated.js +3 -2
  50. package/lib/commonjs/mock-builders/event/messageUpdated.js.map +1 -1
  51. package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js +3 -2
  52. package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js.map +1 -1
  53. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
  54. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
  55. package/lib/commonjs/mock-builders/event/notificationMarkRead.js +3 -2
  56. package/lib/commonjs/mock-builders/event/notificationMarkRead.js.map +1 -1
  57. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js +3 -2
  58. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js.map +1 -1
  59. package/lib/commonjs/mock-builders/event/notificationMessageNew.js +3 -2
  60. package/lib/commonjs/mock-builders/event/notificationMessageNew.js.map +1 -1
  61. package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js +3 -2
  62. package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js.map +1 -1
  63. package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js +3 -2
  64. package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
  65. package/lib/commonjs/mock-builders/event/reactionDeleted.js +3 -2
  66. package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -1
  67. package/lib/commonjs/mock-builders/event/reactionNew.js +3 -2
  68. package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -1
  69. package/lib/commonjs/mock-builders/event/reactionUpdated.js +3 -2
  70. package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -1
  71. package/lib/commonjs/mock-builders/event/typing.js +3 -2
  72. package/lib/commonjs/mock-builders/event/typing.js.map +1 -1
  73. package/lib/commonjs/mock-builders/event/userPresence.js +3 -2
  74. package/lib/commonjs/mock-builders/event/userPresence.js.map +1 -1
  75. package/lib/commonjs/mock-builders/event/userUpdated.js +3 -2
  76. package/lib/commonjs/mock-builders/event/userUpdated.js.map +1 -1
  77. package/lib/commonjs/mock-builders/generator/attachment.js +0 -3
  78. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  79. package/lib/commonjs/mock-builders/generator/channel.js +10 -12
  80. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  81. package/lib/commonjs/mock-builders/generator/member.js +3 -2
  82. package/lib/commonjs/mock-builders/generator/member.js.map +1 -1
  83. package/lib/commonjs/mock-builders/generator/message.js +12 -7
  84. package/lib/commonjs/mock-builders/generator/message.js.map +1 -1
  85. package/lib/commonjs/mock-builders/generator/reaction.js +3 -2
  86. package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
  87. package/lib/commonjs/mock-builders/generator/user.js +4 -3
  88. package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
  89. package/lib/commonjs/mock-builders/mock.js +15 -11
  90. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  91. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
  92. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
  93. package/lib/commonjs/store/apis/upsertDraft.js.map +1 -1
  94. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -1
  95. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  96. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  97. package/lib/commonjs/test-utils/BetterSqlite.js +11 -7
  98. package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
  99. package/lib/commonjs/version.json +1 -1
  100. package/lib/module/components/Message/MessageItemView/utils/renderText.test.js +1 -1
  101. package/lib/module/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
  102. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  103. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  104. package/lib/module/mock-builders/api/channelMocks.js +38 -31
  105. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  106. package/lib/module/mock-builders/api/deleteMessage.js.map +1 -1
  107. package/lib/module/mock-builders/api/deleteReaction.js.map +1 -1
  108. package/lib/module/mock-builders/api/error.js.map +1 -1
  109. package/lib/module/mock-builders/api/getOrCreateChannel.js.map +1 -1
  110. package/lib/module/mock-builders/api/initiateClientWithChannels.js +1 -1
  111. package/lib/module/mock-builders/api/initiateClientWithChannels.js.map +1 -1
  112. package/lib/module/mock-builders/api/queryChannels.js.map +1 -1
  113. package/lib/module/mock-builders/api/queryMembers.js +12 -11
  114. package/lib/module/mock-builders/api/queryMembers.js.map +1 -1
  115. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  116. package/lib/module/mock-builders/api/sendReaction.js.map +1 -1
  117. package/lib/module/mock-builders/api/threadReplies.js.map +1 -1
  118. package/lib/module/mock-builders/api/useMockedApis.js.map +1 -1
  119. package/lib/module/mock-builders/api/utils.js.map +1 -1
  120. package/lib/module/mock-builders/attachments.js.map +1 -1
  121. package/lib/module/mock-builders/event/channelDeleted.js +3 -2
  122. package/lib/module/mock-builders/event/channelDeleted.js.map +1 -1
  123. package/lib/module/mock-builders/event/channelHidden.js +3 -2
  124. package/lib/module/mock-builders/event/channelHidden.js.map +1 -1
  125. package/lib/module/mock-builders/event/channelTruncated.js +3 -2
  126. package/lib/module/mock-builders/event/channelTruncated.js.map +1 -1
  127. package/lib/module/mock-builders/event/channelUpdated.js +3 -2
  128. package/lib/module/mock-builders/event/channelUpdated.js.map +1 -1
  129. package/lib/module/mock-builders/event/channelVisible.js +3 -2
  130. package/lib/module/mock-builders/event/channelVisible.js.map +1 -1
  131. package/lib/module/mock-builders/event/connectionChanged.js +3 -2
  132. package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
  133. package/lib/module/mock-builders/event/connectionRecovered.js +3 -2
  134. package/lib/module/mock-builders/event/connectionRecovered.js.map +1 -1
  135. package/lib/module/mock-builders/event/memberAdded.js +3 -2
  136. package/lib/module/mock-builders/event/memberAdded.js.map +1 -1
  137. package/lib/module/mock-builders/event/memberRemoved.js +3 -2
  138. package/lib/module/mock-builders/event/memberRemoved.js.map +1 -1
  139. package/lib/module/mock-builders/event/memberUpdated.js +3 -2
  140. package/lib/module/mock-builders/event/memberUpdated.js.map +1 -1
  141. package/lib/module/mock-builders/event/messageDeleted.js +3 -2
  142. package/lib/module/mock-builders/event/messageDeleted.js.map +1 -1
  143. package/lib/module/mock-builders/event/messageNew.js +3 -2
  144. package/lib/module/mock-builders/event/messageNew.js.map +1 -1
  145. package/lib/module/mock-builders/event/messageRead.js +3 -2
  146. package/lib/module/mock-builders/event/messageRead.js.map +1 -1
  147. package/lib/module/mock-builders/event/messageUpdated.js +3 -2
  148. package/lib/module/mock-builders/event/messageUpdated.js.map +1 -1
  149. package/lib/module/mock-builders/event/notificationAddedToChannel.js +3 -2
  150. package/lib/module/mock-builders/event/notificationAddedToChannel.js.map +1 -1
  151. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
  152. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
  153. package/lib/module/mock-builders/event/notificationMarkRead.js +3 -2
  154. package/lib/module/mock-builders/event/notificationMarkRead.js.map +1 -1
  155. package/lib/module/mock-builders/event/notificationMarkUnread.js +3 -2
  156. package/lib/module/mock-builders/event/notificationMarkUnread.js.map +1 -1
  157. package/lib/module/mock-builders/event/notificationMessageNew.js +3 -2
  158. package/lib/module/mock-builders/event/notificationMessageNew.js.map +1 -1
  159. package/lib/module/mock-builders/event/notificationMutesUpdated.js +3 -2
  160. package/lib/module/mock-builders/event/notificationMutesUpdated.js.map +1 -1
  161. package/lib/module/mock-builders/event/notificationRemovedFromChannel.js +3 -2
  162. package/lib/module/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
  163. package/lib/module/mock-builders/event/reactionDeleted.js +3 -2
  164. package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -1
  165. package/lib/module/mock-builders/event/reactionNew.js +3 -2
  166. package/lib/module/mock-builders/event/reactionNew.js.map +1 -1
  167. package/lib/module/mock-builders/event/reactionUpdated.js +3 -2
  168. package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -1
  169. package/lib/module/mock-builders/event/typing.js +3 -2
  170. package/lib/module/mock-builders/event/typing.js.map +1 -1
  171. package/lib/module/mock-builders/event/userPresence.js +3 -2
  172. package/lib/module/mock-builders/event/userPresence.js.map +1 -1
  173. package/lib/module/mock-builders/event/userUpdated.js +3 -2
  174. package/lib/module/mock-builders/event/userUpdated.js.map +1 -1
  175. package/lib/module/mock-builders/generator/attachment.js +0 -3
  176. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  177. package/lib/module/mock-builders/generator/channel.js +10 -12
  178. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  179. package/lib/module/mock-builders/generator/member.js +3 -2
  180. package/lib/module/mock-builders/generator/member.js.map +1 -1
  181. package/lib/module/mock-builders/generator/message.js +12 -7
  182. package/lib/module/mock-builders/generator/message.js.map +1 -1
  183. package/lib/module/mock-builders/generator/reaction.js +3 -2
  184. package/lib/module/mock-builders/generator/reaction.js.map +1 -1
  185. package/lib/module/mock-builders/generator/user.js +4 -3
  186. package/lib/module/mock-builders/generator/user.js.map +1 -1
  187. package/lib/module/mock-builders/mock.js +15 -11
  188. package/lib/module/mock-builders/mock.js.map +1 -1
  189. package/lib/module/store/apis/addPendingTask.js.map +1 -1
  190. package/lib/module/store/apis/deleteMessage.js.map +1 -1
  191. package/lib/module/store/apis/upsertDraft.js.map +1 -1
  192. package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -1
  193. package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  194. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  195. package/lib/module/test-utils/BetterSqlite.js +11 -7
  196. package/lib/module/test-utils/BetterSqlite.js.map +1 -1
  197. package/lib/module/version.json +1 -1
  198. package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts +1 -1
  199. package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts.map +1 -1
  200. package/lib/typescript/store/OfflineDB.d.ts +1 -1
  201. package/lib/typescript/store/OfflineDB.d.ts.map +1 -1
  202. package/lib/typescript/store/apis/addPendingTask.d.ts.map +1 -1
  203. package/lib/typescript/store/apis/deleteMessage.d.ts +2 -1
  204. package/lib/typescript/store/apis/deleteMessage.d.ts.map +1 -1
  205. package/lib/typescript/store/apis/upsertDraft.d.ts +1 -1
  206. package/lib/typescript/store/apis/upsertDraft.d.ts.map +1 -1
  207. package/lib/typescript/store/sqlite-utils/createCreateTableQuery.d.ts.map +1 -1
  208. package/lib/typescript/test-utils/BetterSqlite.d.ts +4 -3
  209. package/lib/typescript/test-utils/BetterSqlite.d.ts.map +1 -1
  210. package/package.json +5 -3
  211. package/src/__tests__/offline-support/{offline-feature.js → offline-feature.tsx} +282 -139
  212. package/src/__tests__/offline-support/{optimistic-update.js → optimistic-update.tsx} +154 -84
  213. package/src/components/Attachment/__tests__/{Attachment.test.js → Attachment.test.tsx} +12 -8
  214. package/src/components/Attachment/__tests__/{Gallery.test.js → Gallery.test.tsx} +10 -3
  215. package/src/components/Attachment/__tests__/{Giphy.test.js → Giphy.test.tsx} +48 -19
  216. package/src/components/Attachment/__tests__/{buildGallery.test.js → buildGallery.test.ts} +4 -2
  217. package/src/components/AutoCompleteInput/__tests__/{AutoCompleteInput.test.js → AutoCompleteInput.test.tsx} +21 -11
  218. package/src/components/Channel/__tests__/{Channel.test.js → Channel.test.tsx} +129 -89
  219. package/src/components/Channel/__tests__/{isAttachmentEqualHandler.test.js → isAttachmentEqualHandler.test.tsx} +25 -8
  220. package/src/components/Channel/__tests__/{ownCapabilities.test.js → ownCapabilities.test.tsx} +16 -12
  221. package/src/components/Channel/__tests__/{useMessageListPagination.test.js → useMessageListPagination.test.tsx} +105 -63
  222. package/src/components/ChannelList/__tests__/{ChannelList.test.js → ChannelList.test.tsx} +63 -29
  223. package/src/components/ChannelList/__tests__/{ChannelListView.test.js → ChannelListView.test.tsx} +30 -20
  224. package/src/components/ChannelList/hooks/__tests__/useChannelActionItems.test.tsx +6 -6
  225. package/src/components/ChannelList/hooks/__tests__/useChannelActionItemsById.test.tsx +2 -2
  226. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +17 -14
  227. package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +14 -4
  228. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +23 -12
  229. package/src/components/ChannelPreview/__tests__/{ChannelPreviewView.test.js → ChannelPreviewView.test.tsx} +9 -34
  230. package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +4 -2
  231. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayPresence.test.tsx +1 -1
  232. package/src/components/Chat/__tests__/{Chat.test.js → Chat.test.tsx} +37 -30
  233. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +10 -14
  234. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -3
  235. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +5 -4
  236. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +7 -6
  237. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +9 -13
  238. package/src/components/Message/MessageItemView/__tests__/{Message.test.js → Message.test.tsx} +20 -11
  239. package/src/components/Message/MessageItemView/__tests__/{MessageAuthor.test.js → MessageAuthor.test.tsx} +10 -12
  240. package/src/components/Message/MessageItemView/__tests__/{MessageContent.test.js → MessageContent.test.tsx} +22 -12
  241. package/src/components/Message/MessageItemView/__tests__/{MessageItemView.test.js → MessageItemView.test.tsx} +11 -4
  242. package/src/components/Message/MessageItemView/__tests__/{MessagePinnedHeader.test.js → MessagePinnedHeader.test.tsx} +5 -3
  243. package/src/components/Message/MessageItemView/__tests__/{MessageReplies.test.js → MessageReplies.test.tsx} +15 -36
  244. package/src/components/Message/MessageItemView/__tests__/{MessageStatus.test.js → MessageStatus.test.tsx} +20 -10
  245. package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -8
  246. package/src/components/Message/MessageItemView/__tests__/{ReactionListBottom.test.js → ReactionListBottom.test.tsx} +19 -8
  247. package/src/components/Message/MessageItemView/__tests__/{ReactionListTop.test.js → ReactionListTop.test.tsx} +8 -4
  248. package/src/components/Message/MessageItemView/utils/renderText.test.tsx +2 -4
  249. package/src/components/Message/MessageItemView/utils/renderText.tsx +1 -1
  250. package/src/components/Message/hooks/__tests__/useShouldUseOverlayStyles.test.tsx +2 -2
  251. package/src/components/MessageInput/__tests__/{AttachButton.test.js → AttachButton.test.tsx} +14 -4
  252. package/src/components/MessageInput/__tests__/{AttachmentUploadPreviewList.test.js → AttachmentUploadPreviewList.test.tsx} +27 -8
  253. package/src/components/MessageInput/__tests__/{AudioAttachmentUploadPreview.test.js → AudioAttachmentUploadPreview.test.tsx} +18 -5
  254. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +47 -15
  255. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +57 -17
  256. package/src/components/MessageInput/__tests__/{InputButtons.test.js → InputButtons.test.tsx} +14 -4
  257. package/src/components/MessageInput/__tests__/{MessageComposer.test.js → MessageComposer.test.tsx} +28 -20
  258. package/src/components/MessageInput/__tests__/{SendButton.test.js → SendButton.test.tsx} +13 -4
  259. package/src/components/MessageInput/__tests__/{SendMessageDisallowedIndicator.test.js → SendMessageDisallowedIndicator.test.tsx} +47 -31
  260. package/src/components/MessageList/__tests__/{MessageList.test.js → MessageList.test.tsx} +31 -34
  261. package/src/components/MessageList/__tests__/{MessageSystem.test.js → MessageSystem.test.tsx} +13 -5
  262. package/src/components/MessageList/__tests__/{ScrollToBottomButton.test.js → ScrollToBottomButton.test.tsx} +8 -12
  263. package/src/components/MessageList/__tests__/{TypingIndicator.test.js → TypingIndicator.test.tsx} +6 -4
  264. package/src/components/MessageList/__tests__/useMessageList.test.tsx +2 -2
  265. package/src/components/MessageList/hooks/useMessageList.ts +1 -1
  266. package/src/components/MessageMenu/__tests__/MessageActionList.test.tsx +4 -1
  267. package/src/components/MessageMenu/__tests__/MessageActionListItem.test.tsx +1 -0
  268. package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +6 -2
  269. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +3 -3
  270. package/src/components/MessageMenu/__tests__/MessageUserReactionsAvatar.test.tsx +7 -3
  271. package/src/components/MessageMenu/__tests__/MessageUserReactionsItem.test.tsx +2 -1
  272. package/src/components/Thread/__tests__/{Thread.test.js → Thread.test.tsx} +41 -13
  273. package/src/components/Thread/__tests__/__snapshots__/{Thread.test.js.snap → Thread.test.tsx.snap} +0 -21
  274. package/src/components/UIComponents/SwipableWrapper.tsx +1 -1
  275. package/src/components/UIComponents/__tests__/SwipableWrapper.test.tsx +1 -1
  276. package/src/contexts/messageInputContext/__tests__/filePickers.test.tsx +31 -10
  277. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +24 -12
  278. package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +2 -2
  279. package/src/hooks/__tests__/useTranslatedMessage.test.tsx +4 -4
  280. package/src/mock-builders/DB/mock.ts +1 -1
  281. package/src/mock-builders/api/channelMocks.tsx +39 -29
  282. package/src/mock-builders/api/deleteMessage.ts +21 -0
  283. package/src/mock-builders/api/deleteReaction.ts +23 -0
  284. package/src/mock-builders/api/{error.js → error.ts} +13 -5
  285. package/src/mock-builders/api/getOrCreateChannel.ts +22 -11
  286. package/src/mock-builders/api/{initiateClientWithChannels.js → initiateClientWithChannels.ts} +21 -3
  287. package/src/mock-builders/api/{queryChannels.js → queryChannels.ts} +2 -4
  288. package/src/mock-builders/api/{queryMembers.js → queryMembers.ts} +29 -27
  289. package/src/mock-builders/api/sendMessage.ts +25 -0
  290. package/src/mock-builders/api/sendReaction.ts +9 -5
  291. package/src/mock-builders/api/threadReplies.ts +18 -0
  292. package/src/mock-builders/api/{useMockedApis.js → useMockedApis.ts} +5 -4
  293. package/src/mock-builders/api/utils.ts +16 -0
  294. package/src/mock-builders/{attachments.js → attachments.ts} +24 -8
  295. package/src/mock-builders/event/channelDeleted.ts +12 -0
  296. package/src/mock-builders/event/channelHidden.ts +12 -0
  297. package/src/mock-builders/event/channelTruncated.ts +12 -0
  298. package/src/mock-builders/event/channelUpdated.ts +12 -0
  299. package/src/mock-builders/event/channelVisible.ts +12 -0
  300. package/src/mock-builders/event/connectionChanged.ts +11 -0
  301. package/src/mock-builders/event/connectionRecovered.ts +10 -0
  302. package/src/mock-builders/event/memberAdded.ts +19 -0
  303. package/src/mock-builders/event/memberRemoved.ts +18 -0
  304. package/src/mock-builders/event/memberUpdated.ts +18 -0
  305. package/src/mock-builders/event/messageDeleted.ts +23 -0
  306. package/src/mock-builders/event/messageNew.ts +26 -0
  307. package/src/mock-builders/event/messageRead.ts +23 -0
  308. package/src/mock-builders/event/messageUpdated.ts +23 -0
  309. package/src/mock-builders/event/notificationAddedToChannel.ts +12 -0
  310. package/src/mock-builders/event/notificationChannelMutesUpdated.ts +12 -0
  311. package/src/mock-builders/event/notificationMarkRead.ts +12 -0
  312. package/src/mock-builders/event/notificationMarkUnread.ts +22 -0
  313. package/src/mock-builders/event/notificationMessageNew.ts +12 -0
  314. package/src/mock-builders/event/notificationMutesUpdated.ts +16 -0
  315. package/src/mock-builders/event/notificationRemovedFromChannel.ts +12 -0
  316. package/src/mock-builders/event/reactionDeleted.ts +26 -0
  317. package/src/mock-builders/event/reactionNew.ts +26 -0
  318. package/src/mock-builders/event/reactionUpdated.ts +26 -0
  319. package/src/mock-builders/event/typing.ts +18 -0
  320. package/src/mock-builders/event/userPresence.ts +13 -0
  321. package/src/mock-builders/event/userUpdated.ts +13 -0
  322. package/src/mock-builders/generator/{attachment.js → attachment.ts} +17 -13
  323. package/src/mock-builders/generator/channel.ts +70 -39
  324. package/src/mock-builders/generator/member.ts +18 -0
  325. package/src/mock-builders/generator/message.ts +50 -0
  326. package/src/mock-builders/generator/reaction.ts +15 -0
  327. package/src/mock-builders/generator/{user.js → user.ts} +20 -16
  328. package/src/mock-builders/mock.ts +79 -0
  329. package/src/state-store/__tests__/audio-player.test.ts +3 -1
  330. package/src/state-store/__tests__/image-gallery-state-store.test.ts +31 -28
  331. package/src/state-store/__tests__/video-player-pool.test.ts +9 -9
  332. package/src/store/apis/__tests__/updatePendingTask.test.ts +17 -6
  333. package/src/store/apis/addPendingTask.ts +2 -1
  334. package/src/store/apis/deleteMessage.ts +2 -1
  335. package/src/store/apis/upsertDraft.ts +2 -2
  336. package/src/store/sqlite-utils/appendOrderByClause.ts +1 -1
  337. package/src/store/sqlite-utils/appendWhereCluase.ts +1 -1
  338. package/src/store/sqlite-utils/createCreateTableQuery.ts +7 -5
  339. package/src/test-utils/BetterSqlite.ts +38 -0
  340. package/src/utils/__tests__/{Streami18n.test.js → Streami18n.test.ts} +66 -31
  341. package/src/utils/__tests__/getResizedImageUrl.test.ts +10 -8
  342. package/src/utils/__tests__/{utils.test.js → utils.test.ts} +1 -1
  343. package/src/version.json +1 -1
  344. package/src/mock-builders/api/deleteMessage.js +0 -18
  345. package/src/mock-builders/api/deleteReaction.js +0 -19
  346. package/src/mock-builders/api/sendMessage.js +0 -18
  347. package/src/mock-builders/api/threadReplies.js +0 -16
  348. package/src/mock-builders/api/utils.js +0 -7
  349. package/src/mock-builders/event/channelDeleted.js +0 -7
  350. package/src/mock-builders/event/channelHidden.js +0 -7
  351. package/src/mock-builders/event/channelTruncated.js +0 -7
  352. package/src/mock-builders/event/channelUpdated.js +0 -7
  353. package/src/mock-builders/event/channelVisible.js +0 -7
  354. package/src/mock-builders/event/connectionChanged.js +0 -6
  355. package/src/mock-builders/event/connectionRecovered.js +0 -5
  356. package/src/mock-builders/event/memberAdded.js +0 -10
  357. package/src/mock-builders/event/memberRemoved.js +0 -9
  358. package/src/mock-builders/event/memberUpdated.js +0 -9
  359. package/src/mock-builders/event/messageDeleted.js +0 -8
  360. package/src/mock-builders/event/messageNew.js +0 -11
  361. package/src/mock-builders/event/messageRead.js +0 -15
  362. package/src/mock-builders/event/messageUpdated.js +0 -8
  363. package/src/mock-builders/event/notificationAddedToChannel.js +0 -7
  364. package/src/mock-builders/event/notificationChannelMutesUpdated.js +0 -7
  365. package/src/mock-builders/event/notificationMarkRead.js +0 -7
  366. package/src/mock-builders/event/notificationMarkUnread.js +0 -12
  367. package/src/mock-builders/event/notificationMessageNew.js +0 -7
  368. package/src/mock-builders/event/notificationMutesUpdated.js +0 -11
  369. package/src/mock-builders/event/notificationRemovedFromChannel.js +0 -7
  370. package/src/mock-builders/event/reactionDeleted.js +0 -9
  371. package/src/mock-builders/event/reactionNew.js +0 -9
  372. package/src/mock-builders/event/reactionUpdated.js +0 -9
  373. package/src/mock-builders/event/typing.js +0 -9
  374. package/src/mock-builders/event/userPresence.js +0 -8
  375. package/src/mock-builders/event/userUpdated.js +0 -8
  376. package/src/mock-builders/generator/member.js +0 -13
  377. package/src/mock-builders/generator/message.js +0 -32
  378. package/src/mock-builders/generator/reaction.js +0 -12
  379. package/src/mock-builders/mock.js +0 -57
  380. package/src/test-utils/BetterSqlite.js +0 -36
  381. /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessageAuthor.test.js.snap → MessageAuthor.test.tsx.snap} +0 -0
  382. /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessagePinnedHeader.test.js.snap → MessagePinnedHeader.test.tsx.snap} +0 -0
  383. /package/src/components/MessageInput/__tests__/__snapshots__/{AttachButton.test.js.snap → AttachButton.test.tsx.snap} +0 -0
  384. /package/src/components/MessageInput/__tests__/__snapshots__/{SendButton.test.js.snap → SendButton.test.tsx.snap} +0 -0
  385. /package/src/components/MessageList/__tests__/__snapshots__/{MessageSystem.test.js.snap → MessageSystem.test.tsx.snap} +0 -0
  386. /package/src/components/MessageList/__tests__/__snapshots__/{ScrollToBottomButton.test.js.snap → ScrollToBottomButton.test.tsx.snap} +0 -0
  387. /package/src/components/MessageList/__tests__/__snapshots__/{TypingIndicator.test.js.snap → TypingIndicator.test.tsx.snap} +0 -0
@@ -0,0 +1,79 @@
1
+ /* eslint no-underscore-dangle: 0 */
2
+ /* eslint no-param-reassign: 0 */
3
+
4
+ import { StreamChat, type OwnUserResponse, type UserResponse } from 'stream-chat';
5
+
6
+ const apiKey = 'API_KEY';
7
+ const token = 'dummy_token';
8
+
9
+ type MockClientOptions = { disableAppSettings?: boolean };
10
+
11
+ // Tests reach into private/internal StreamChat fields to set up a mocked
12
+ // authenticated client without going through the real network handshake.
13
+ type MockableStreamChat = StreamChat & {
14
+ connectionId?: string;
15
+ user?: OwnUserResponse;
16
+ _user?: OwnUserResponse;
17
+ userToken?: string;
18
+ setUser?: (user: UserResponse) => Promise<void>;
19
+ wsPromise?: Promise<unknown>;
20
+ _setToken?: (...args: unknown[]) => unknown;
21
+ _setupConnection?: (...args: unknown[]) => unknown;
22
+ };
23
+
24
+ export const setUser = (client: StreamChat, user: UserResponse): Promise<void> =>
25
+ new Promise<void>((resolve) => {
26
+ const c = client as MockableStreamChat;
27
+ c.connectionId = 'dumm_connection_id';
28
+ c.user = { ...user, mutes: [] } as unknown as OwnUserResponse;
29
+ c._user = { ...c.user };
30
+ c.userID = user.id;
31
+ c.userToken = token;
32
+ resolve();
33
+ });
34
+
35
+ function mockClient(client: StreamChat, options: MockClientOptions = {}): StreamChat {
36
+ const { disableAppSettings = true } = options;
37
+ const c = client as MockableStreamChat;
38
+
39
+ type WithPrivates = { _setToken: () => void; _setupConnection: () => void };
40
+ const withPrivates = c as unknown as WithPrivates;
41
+ jest.spyOn(withPrivates, '_setToken').mockImplementation();
42
+ jest.spyOn(withPrivates, '_setupConnection').mockImplementation();
43
+ c.tokenManager = {
44
+ getToken: jest.fn(() => token),
45
+ tokenReady: jest.fn(() => true),
46
+ } as unknown as StreamChat['tokenManager'];
47
+ c.setUser = setUser.bind(null, client);
48
+
49
+ if (disableAppSettings) {
50
+ c.getAppSettings = jest.fn(() => ({})) as unknown as StreamChat['getAppSettings'];
51
+ }
52
+
53
+ return client;
54
+ }
55
+
56
+ export const getTestClient = (options: MockClientOptions = {}): StreamChat =>
57
+ mockClient(new StreamChat(apiKey), options);
58
+
59
+ export const getTestClientWithUser = async (
60
+ user: UserResponse,
61
+ options: MockClientOptions = {},
62
+ ): Promise<StreamChat> => {
63
+ const { disableAppSettings = true } = options;
64
+ const client = mockClient(new StreamChat(apiKey));
65
+ await setUser(client, user);
66
+ (client as MockableStreamChat).wsPromise = Promise.resolve();
67
+
68
+ if (disableAppSettings) {
69
+ client.getAppSettings = jest.fn(() => ({})) as unknown as StreamChat['getAppSettings'];
70
+ }
71
+
72
+ return client;
73
+ };
74
+
75
+ export const getRandomInt = (min: number, max: number): number => {
76
+ min = Math.ceil(min);
77
+ max = Math.floor(max);
78
+ return Math.floor(Math.random() * (max - min)) + min; // The maximum is exclusive and the minimum is inclusive
79
+ };
@@ -190,7 +190,9 @@ describe('AudioPlayer', () => {
190
190
 
191
191
  it('updates playback state from the native playback callback', async () => {
192
192
  const playerRef = createMockNativePlayerRef();
193
- let onPlaybackStatusUpdate;
193
+ let onPlaybackStatusUpdate: (
194
+ status: ReturnType<typeof getLoadedPlaybackStatus>,
195
+ ) => unknown = () => undefined;
194
196
  (NativeHandlers as { Sound: unknown }).Sound = {
195
197
  Player: null,
196
198
  initializeSound: jest.fn().mockImplementation((_source, _initialStatus, callback) => {
@@ -1,4 +1,4 @@
1
- import type { Attachment, LocalMessage, UserResponse } from 'stream-chat';
1
+ import type { Attachment, UserResponse } from 'stream-chat';
2
2
 
3
3
  import {
4
4
  generateImageAttachment,
@@ -31,11 +31,11 @@ const { isVideoPlayerAvailable } = jest.requireMock('../../native') as {
31
31
  const createGiphyAttachment = (overrides: Partial<Attachment> = {}): Attachment => ({
32
32
  giphy: {
33
33
  fixed_height: {
34
- height: 200,
34
+ height: '200',
35
35
  url: 'https://giphy.com/test.gif',
36
- width: 200,
36
+ width: '200',
37
37
  },
38
- },
38
+ } as unknown as Attachment['giphy'],
39
39
  thumb_url: 'https://giphy.com/thumb.gif',
40
40
  type: 'giphy',
41
41
  ...overrides,
@@ -103,7 +103,7 @@ describe('ImageGalleryStateStore', () => {
103
103
  describe('messages getter and setter', () => {
104
104
  it('should get messages from state', () => {
105
105
  const store = new ImageGalleryStateStore();
106
- const messages = [generateMessage({ id: 1 }), generateMessage({ id: 2 })];
106
+ const messages = [generateMessage({ id: '1' }), generateMessage({ id: '2' })];
107
107
 
108
108
  store.messages = messages;
109
109
 
@@ -112,7 +112,7 @@ describe('ImageGalleryStateStore', () => {
112
112
 
113
113
  it('should update state when setting messages', () => {
114
114
  const store = new ImageGalleryStateStore();
115
- const messages = [generateMessage({ id: 1 })];
115
+ const messages = [generateMessage({ id: '1' })];
116
116
 
117
117
  store.messages = messages;
118
118
 
@@ -192,7 +192,7 @@ describe('ImageGalleryStateStore', () => {
192
192
  const imageAttachment = generateImageAttachment({
193
193
  image_url: 'https://example.com/image.jpg',
194
194
  });
195
- const message = generateMessage({ attachments: [imageAttachment], id: 1 });
195
+ const message = generateMessage({ attachments: [imageAttachment], id: '1' });
196
196
 
197
197
  store.messages = [message];
198
198
 
@@ -205,7 +205,7 @@ describe('ImageGalleryStateStore', () => {
205
205
  const videoAttachment = generateVideoAttachment({
206
206
  asset_url: 'https://example.com/video.mp4',
207
207
  });
208
- const message = generateMessage({ attachments: [videoAttachment], id: 1 });
208
+ const message = generateMessage({ attachments: [videoAttachment], id: '1' });
209
209
 
210
210
  store.messages = [message];
211
211
 
@@ -216,7 +216,7 @@ describe('ImageGalleryStateStore', () => {
216
216
  it('should filter messages with giphy attachments', () => {
217
217
  const store = new ImageGalleryStateStore();
218
218
  const giphyAttachment = createGiphyAttachment();
219
- const message = generateMessage({ attachments: [giphyAttachment], id: 1 });
219
+ const message = generateMessage({ attachments: [giphyAttachment], id: '1' });
220
220
 
221
221
  store.messages = [message];
222
222
 
@@ -230,7 +230,7 @@ describe('ImageGalleryStateStore', () => {
230
230
  const videoAttachment = generateVideoAttachment({
231
231
  asset_url: 'https://example.com/video.mp4',
232
232
  });
233
- const message = generateMessage({ attachments: [videoAttachment], id: 1 });
233
+ const message = generateMessage({ attachments: [videoAttachment], id: '1' });
234
234
 
235
235
  store.messages = [message];
236
236
 
@@ -243,7 +243,7 @@ describe('ImageGalleryStateStore', () => {
243
243
  image_url: 'https://example.com/image.jpg',
244
244
  title_link: 'https://example.com',
245
245
  });
246
- const message = generateMessage({ attachments: [linkPreviewAttachment], id: 1 });
246
+ const message = generateMessage({ attachments: [linkPreviewAttachment], id: '1' });
247
247
 
248
248
  store.messages = [message];
249
249
 
@@ -256,7 +256,7 @@ describe('ImageGalleryStateStore', () => {
256
256
  image_url: 'https://example.com/image.jpg',
257
257
  og_scrape_url: 'https://example.com',
258
258
  });
259
- const message = generateMessage({ attachments: [linkAttachment], id: 1 });
259
+ const message = generateMessage({ attachments: [linkAttachment], id: '1' });
260
260
 
261
261
  store.messages = [message];
262
262
 
@@ -270,7 +270,7 @@ describe('ImageGalleryStateStore', () => {
270
270
  image_url: 'https://example.com/preview.jpg',
271
271
  title_link: 'https://example.com',
272
272
  });
273
- const message = generateMessage({ attachments: [viewableImage, linkPreview], id: 1 });
273
+ const message = generateMessage({ attachments: [viewableImage, linkPreview], id: '1' });
274
274
 
275
275
  store.messages = [message];
276
276
 
@@ -283,7 +283,7 @@ describe('ImageGalleryStateStore', () => {
283
283
  asset_url: 'https://example.com/file.pdf',
284
284
  type: 'file',
285
285
  };
286
- const message = generateMessage({ attachments: [fileAttachment], id: 1 });
286
+ const message = generateMessage({ attachments: [fileAttachment], id: '1' });
287
287
 
288
288
  store.messages = [message];
289
289
 
@@ -292,7 +292,7 @@ describe('ImageGalleryStateStore', () => {
292
292
 
293
293
  it('should handle null attachments gracefully', () => {
294
294
  const store = new ImageGalleryStateStore();
295
- const message = generateMessage({ attachments: [null as unknown as Attachment], id: 1 });
295
+ const message = generateMessage({ attachments: [null as unknown as Attachment], id: '1' });
296
296
 
297
297
  store.messages = [message];
298
298
 
@@ -301,7 +301,7 @@ describe('ImageGalleryStateStore', () => {
301
301
 
302
302
  it('should handle messages without attachments array', () => {
303
303
  const store = new ImageGalleryStateStore();
304
- const message = generateMessage({ attachments: undefined, id: 1 });
304
+ const message = generateMessage({ attachments: undefined, id: '1' });
305
305
 
306
306
  store.messages = [message];
307
307
 
@@ -340,7 +340,7 @@ describe('ImageGalleryStateStore', () => {
340
340
  original_width: 800,
341
341
  thumb_url: 'https://example.com/thumb.jpg',
342
342
  });
343
- const user: Partial<UserResponse> = { id: 'user-1', name: 'Test User' };
343
+ const user: UserResponse = { id: 'user-1', name: 'Test User' } as UserResponse;
344
344
  const message = generateMessage({
345
345
  attachments: [imageAttachment],
346
346
  cid: 'channel-msg-1',
@@ -372,7 +372,7 @@ describe('ImageGalleryStateStore', () => {
372
372
  asset_url: 'https://example.com/video.mp4',
373
373
  thumb_url: 'https://example.com/video-thumb.jpg',
374
374
  });
375
- const message = generateMessage({ attachments: [videoAttachment], id: 1 });
375
+ const message = generateMessage({ attachments: [videoAttachment], id: '1' });
376
376
 
377
377
  store.messages = [message];
378
378
 
@@ -388,7 +388,7 @@ describe('ImageGalleryStateStore', () => {
388
388
  it('should transform giphy attachments with correct mime type', () => {
389
389
  const store = new ImageGalleryStateStore();
390
390
  const giphyAttachment = createGiphyAttachment();
391
- const message = generateMessage({ attachments: [giphyAttachment], id: 1 });
391
+ const message = generateMessage({ attachments: [giphyAttachment], id: '1' });
392
392
 
393
393
  store.messages = [message];
394
394
 
@@ -405,7 +405,7 @@ describe('ImageGalleryStateStore', () => {
405
405
  const store = new ImageGalleryStateStore();
406
406
  const attachment1 = generateImageAttachment({ image_url: 'https://example.com/image1.jpg' });
407
407
  const attachment2 = generateImageAttachment({ image_url: 'https://example.com/image2.jpg' });
408
- const message = generateMessage({ attachments: [attachment1, attachment2], id: 1 });
408
+ const message = generateMessage({ attachments: [attachment1, attachment2], id: '1' });
409
409
 
410
410
  store.messages = [message];
411
411
 
@@ -418,12 +418,12 @@ describe('ImageGalleryStateStore', () => {
418
418
  const store = new ImageGalleryStateStore({ giphyVersion: 'original' });
419
419
  const giphyAttachment: Attachment = {
420
420
  giphy: {
421
- fixed_height: { height: 200, url: 'https://giphy.com/fixed.gif', width: 200 },
422
- original: { height: 400, url: 'https://giphy.com/original.gif', width: 400 },
423
- },
421
+ fixed_height: { height: '200', url: 'https://giphy.com/fixed.gif', width: '200' },
422
+ original: { height: '400', url: 'https://giphy.com/original.gif', width: '400' },
423
+ } as unknown as Attachment['giphy'],
424
424
  type: 'giphy',
425
425
  };
426
- const message = generateMessage({ attachments: [giphyAttachment], id: 1 });
426
+ const message = generateMessage({ attachments: [giphyAttachment], id: '1' });
427
427
 
428
428
  store.messages = [message];
429
429
 
@@ -439,11 +439,11 @@ describe('ImageGalleryStateStore', () => {
439
439
  generateImageAttachment({ image_url: 'https://example.com/image1.jpg' }),
440
440
  generateImageAttachment({ image_url: 'https://example.com/image2.jpg' }),
441
441
  ],
442
- id: 1,
442
+ id: '1',
443
443
  });
444
444
  const message2 = generateMessage({
445
445
  attachments: [generateVideoAttachment({ asset_url: 'https://example.com/video.mp4' })],
446
- id: 2,
446
+ id: '2',
447
447
  });
448
448
 
449
449
  store.messages = [message1, message2];
@@ -547,7 +547,10 @@ describe('ImageGalleryStateStore', () => {
547
547
  ];
548
548
  const selectedUrl = 'https://example.com/1.jpg';
549
549
 
550
- store.openImageGallery({ messages, selectedAttachmentUrl: selectedUrl });
550
+ store.openImageGallery({
551
+ messages,
552
+ selectedAttachmentUrl: selectedUrl,
553
+ });
551
554
 
552
555
  expect(store.messages).toEqual(messages);
553
556
  expect(store.selectedAttachmentUrl).toBe(selectedUrl);
@@ -795,7 +798,7 @@ describe('ImageGalleryStateStore', () => {
795
798
  id: 'msg-1',
796
799
  }),
797
800
  user: undefined,
798
- } as LocalMessage;
801
+ };
799
802
 
800
803
  store.messages = [message];
801
804
 
@@ -20,7 +20,7 @@ const createMockPlayer = (id: string, overrides: Partial<VideoPlayer> = {}): Vid
20
20
  pause: jest.fn(),
21
21
  play: jest.fn(),
22
22
  ...overrides,
23
- }) as unknown as VideoPlayer;
23
+ }) as VideoPlayer;
24
24
 
25
25
  describe('VideoPlayerPool', () => {
26
26
  beforeEach(() => {
@@ -175,7 +175,7 @@ describe('VideoPlayerPool', () => {
175
175
  const pool = new VideoPlayerPool();
176
176
  const player = pool.getOrAddPlayer({ id: 'active-player' });
177
177
 
178
- pool.setActivePlayer(player as unknown as VideoPlayer);
178
+ pool.setActivePlayer(player);
179
179
  expect(pool.getActivePlayer()).toBe(player);
180
180
 
181
181
  pool.removePlayer('active-player');
@@ -188,7 +188,7 @@ describe('VideoPlayerPool', () => {
188
188
  const activePlayer = pool.getOrAddPlayer({ id: 'active-player' });
189
189
  pool.getOrAddPlayer({ id: 'other-player' });
190
190
 
191
- pool.setActivePlayer(activePlayer as unknown as VideoPlayer);
191
+ pool.setActivePlayer(activePlayer);
192
192
  pool.removePlayer('other-player');
193
193
 
194
194
  expect(pool.getActivePlayer()).toBe(activePlayer);
@@ -255,7 +255,7 @@ describe('VideoPlayerPool', () => {
255
255
  const pool = new VideoPlayerPool();
256
256
  const player = pool.getOrAddPlayer({ id: 'active-player' });
257
257
 
258
- pool.setActivePlayer(player as unknown as VideoPlayer);
258
+ pool.setActivePlayer(player);
259
259
  expect(pool.getActivePlayer()).toBe(player);
260
260
 
261
261
  pool.clear();
@@ -277,7 +277,7 @@ describe('VideoPlayerPool', () => {
277
277
  it('should not change active player when player does not exist', () => {
278
278
  const pool = new VideoPlayerPool();
279
279
  const existingPlayer = pool.getOrAddPlayer({ id: 'existing-player' });
280
- pool.setActivePlayer(existingPlayer as unknown as VideoPlayer);
280
+ pool.setActivePlayer(existingPlayer);
281
281
 
282
282
  pool.requestPlay('non-existent-player');
283
283
 
@@ -336,7 +336,7 @@ describe('VideoPlayerPool', () => {
336
336
  const pool = new VideoPlayerPool();
337
337
  const player = pool.getOrAddPlayer({ id: 'active-player' });
338
338
 
339
- pool.setActivePlayer(player as unknown as VideoPlayer);
339
+ pool.setActivePlayer(player);
340
340
  expect(pool.getActivePlayer()).toBe(player);
341
341
 
342
342
  pool.notifyPaused();
@@ -369,7 +369,7 @@ describe('VideoPlayerPool', () => {
369
369
  ({ activeVideoPlayer }) => callback(activeVideoPlayer),
370
370
  );
371
371
 
372
- pool.setActivePlayer(player as unknown as VideoPlayer);
372
+ pool.setActivePlayer(player);
373
373
 
374
374
  expect(callback).toHaveBeenCalledWith(player);
375
375
  });
@@ -377,7 +377,7 @@ describe('VideoPlayerPool', () => {
377
377
  it('should notify subscribers when active player is cleared', () => {
378
378
  const pool = new VideoPlayerPool();
379
379
  const player = pool.getOrAddPlayer({ id: 'player-1' });
380
- pool.setActivePlayer(player as unknown as VideoPlayer);
380
+ pool.setActivePlayer(player);
381
381
 
382
382
  const callback = jest.fn();
383
383
  pool.state.subscribeWithSelector(
@@ -420,7 +420,7 @@ describe('VideoPlayerPool', () => {
420
420
  const player1 = pool.getOrAddPlayer({ id: 'player-1' });
421
421
  pool.getOrAddPlayer({ id: 'player-2' });
422
422
 
423
- pool.setActivePlayer(player1 as unknown as VideoPlayer);
423
+ pool.setActivePlayer(player1);
424
424
 
425
425
  pool.removePlayer('player-1');
426
426
  expect(pool.getActivePlayer()).toBeNull();
@@ -1,3 +1,4 @@
1
+ import type { PendingTask } from 'stream-chat';
1
2
  import { v4 as uuidv4 } from 'uuid';
2
3
 
3
4
  import { addPendingTask, getPendingTasks, updatePendingTask } from '..';
@@ -31,9 +32,14 @@ describe('updatePendingTask', () => {
31
32
  messageId: originalMessage.id,
32
33
  payload: [originalMessage, {}],
33
34
  type: 'send-message',
34
- });
35
+ } as unknown as PendingTask);
35
36
 
36
- const [originalRow] = await BetterSqlite.selectFromTable('pendingTasks');
37
+ const [originalRow] = await BetterSqlite.selectFromTable<{
38
+ id: number;
39
+ createdAt: string;
40
+ type: string;
41
+ payload: string;
42
+ }>('pendingTasks');
37
43
  const [originalTask] = await getPendingTasks({ messageId: originalMessage.id });
38
44
 
39
45
  const editedMessage = {
@@ -42,17 +48,22 @@ describe('updatePendingTask', () => {
42
48
  };
43
49
 
44
50
  await updatePendingTask({
45
- id: originalTask.id,
51
+ id: originalTask.id as number,
46
52
  task: {
47
53
  channelId,
48
54
  channelType: 'messaging',
49
55
  messageId: originalMessage.id,
50
56
  payload: [editedMessage, {}],
51
57
  type: 'send-message',
52
- },
58
+ } as unknown as PendingTask,
53
59
  });
54
60
 
55
- const [updatedRow] = await BetterSqlite.selectFromTable('pendingTasks');
61
+ const [updatedRow] = await BetterSqlite.selectFromTable<{
62
+ id: number;
63
+ createdAt: string;
64
+ type: string;
65
+ payload: string;
66
+ }>('pendingTasks');
56
67
  const [updatedTask] = await getPendingTasks({ messageId: originalMessage.id });
57
68
 
58
69
  expect(updatedRow.id).toBe(originalRow.id);
@@ -61,6 +72,6 @@ describe('updatePendingTask', () => {
61
72
  expect(JSON.parse(updatedRow.payload)[0].text).toBe('edited text');
62
73
  expect(updatedTask.id).toBe(originalTask.id);
63
74
  expect(updatedTask.type).toBe('send-message');
64
- expect(updatedTask.payload[0].text).toBe('edited text');
75
+ expect((updatedTask.payload as [{ text: string }, object])[0].text).toBe('edited text');
65
76
  });
66
77
  });
@@ -4,6 +4,7 @@ import { mapTaskToStorable } from '../mappers/mapTaskToStorable';
4
4
  import { createDeleteQuery } from '../sqlite-utils/createDeleteQuery';
5
5
  import { createUpsertQuery } from '../sqlite-utils/createUpsertQuery';
6
6
  import { SqliteClient } from '../SqliteClient';
7
+ import type { PreparedQueries } from '../types';
7
8
 
8
9
  /*
9
10
  * addPendingTask - Adds a pending task to the database
@@ -15,7 +16,7 @@ import { SqliteClient } from '../SqliteClient';
15
16
  export const addPendingTask = async (task: PendingTask) => {
16
17
  const storable = mapTaskToStorable(task);
17
18
  const { channelId, channelType, threadId, payload, type } = storable;
18
- const queries = [];
19
+ const queries: PreparedQueries[] = [];
19
20
  if (type === 'create-draft' || type === 'delete-draft') {
20
21
  // Only one draft pending task is allowed per entity (i.e thread, channel etc).
21
22
  // If multiple arrive, we'll simply take the last one (since deleteDraft does not
@@ -1,8 +1,9 @@
1
1
  import { createDeleteQuery } from '../sqlite-utils/createDeleteQuery';
2
2
  import { SqliteClient } from '../SqliteClient';
3
+ import type { PreparedQueries } from '../types';
3
4
 
4
5
  export const deleteMessage = async ({ execute = true, id }: { id: string; execute?: boolean }) => {
5
- const queries = [];
6
+ const queries: PreparedQueries[] = [];
6
7
 
7
8
  queries.push(
8
9
  createDeleteQuery('messages', {
@@ -1,4 +1,4 @@
1
- import { DraftResponse } from 'stream-chat';
1
+ import type { DraftResponse, MessageResponseBase } from 'stream-chat';
2
2
 
3
3
  import { upsertMessages } from './upsertMessages';
4
4
 
@@ -40,7 +40,7 @@ export const upsertDraft = async ({
40
40
  draftMessage: storableDraftMessage,
41
41
  });
42
42
 
43
- const messagesToUpsert = [];
43
+ const messagesToUpsert: MessageResponseBase[] = [];
44
44
 
45
45
  if (draft.quoted_message) {
46
46
  messagesToUpsert.push(draft.quoted_message);
@@ -9,7 +9,7 @@ export const appendOrderByClause = <T extends keyof Schema>(
9
9
  return [selectQuery, []];
10
10
  }
11
11
 
12
- const orderByClause = [];
12
+ const orderByClause: string[] = [];
13
13
 
14
14
  for (const key in orderBy) {
15
15
  const order = orderBy[key];
@@ -9,7 +9,7 @@ export const appendWhereClause = <T extends keyof Schema>(
9
9
  return [selectQuery, []];
10
10
  }
11
11
 
12
- const whereClause = [];
12
+ const whereClause: string[] = [];
13
13
  const whereParams: TableColumnValue[] = [];
14
14
 
15
15
  for (const key in whereCondition) {
@@ -20,11 +20,13 @@ export const createCreateTableQuery = (tableName: Table): PreparedQueries[] => {
20
20
  ) || [];
21
21
 
22
22
  const indexQueries: PreparedQueries[] =
23
- tables[tableName].indexes?.map((index) => [
24
- `CREATE ${index.unique ? 'UNIQUE' : ''} INDEX IF NOT EXISTS ${
25
- index.name
26
- } ON ${tableName}(${index.columns.join(',')})`,
27
- ]) || [];
23
+ tables[tableName].indexes?.map(
24
+ (index): PreparedQueries => [
25
+ `CREATE ${index.unique ? 'UNIQUE' : ''} INDEX IF NOT EXISTS ${
26
+ index.name
27
+ } ON ${tableName}(${index.columns.join(',')})`,
28
+ ],
29
+ ) || [];
28
30
 
29
31
  return [
30
32
  [
@@ -0,0 +1,38 @@
1
+ import Database, { type Database as DatabaseType } from 'better-sqlite3';
2
+
3
+ import { tables } from '../store/schema';
4
+
5
+ export class BetterSqlite {
6
+ static db: DatabaseType | null = null;
7
+
8
+ static openDB = (): void => {
9
+ BetterSqlite.db = new Database('foobar.db');
10
+ };
11
+
12
+ static closeDB = (): void => {
13
+ BetterSqlite.db?.close();
14
+ };
15
+
16
+ static getTables = async (): Promise<unknown> => {
17
+ const tablesInDb = await BetterSqlite.db?.pragma('table_list;');
18
+ return tablesInDb;
19
+ };
20
+
21
+ static dropAllTables = (): void => {
22
+ const tableNames = Object.keys(tables);
23
+
24
+ tableNames.forEach((name) => {
25
+ const stmt = BetterSqlite.db?.prepare(`DROP TABLE IF EXISTS ${name}`);
26
+ stmt?.run();
27
+ });
28
+ };
29
+
30
+ static selectFromTable = async <TRow = Record<string, unknown>>(
31
+ table: string,
32
+ ): Promise<TRow[]> => {
33
+ const stmt = await BetterSqlite.db?.prepare(`SELECT * FROM ${table}`);
34
+ const result = (stmt?.all() ?? []) as TRow[];
35
+
36
+ return result;
37
+ };
38
+ }