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
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import { Text } from 'react-native';
4
4
 
5
5
  import { act, cleanup, render, waitFor } from '@testing-library/react-native';
6
+ import type { Attachment, Channel as ChannelType, StreamChat } from 'stream-chat';
6
7
 
7
8
  import { WithComponents } from '../../../contexts/componentsContext/ComponentsContext';
8
9
  import { OverlayProvider } from '../../../contexts/overlayContext/OverlayProvider';
@@ -19,14 +20,16 @@ import { Channel } from '../../Channel/Channel';
19
20
  import { Chat } from '../../Chat/Chat';
20
21
  import { MessageList } from '../../MessageList/MessageList';
21
22
 
23
+ type AttachmentWithCustomField = Attachment & { customField?: string };
24
+
22
25
  describe('isAttachmentEqualHandler', () => {
23
- let channel;
24
- let chatClient;
26
+ let channel: ChannelType;
27
+ let chatClient: StreamChat;
25
28
 
26
29
  const user = generateUser({ id: 'id', name: 'name' });
27
30
  const messages = [
28
31
  generateMessage({
29
- attachments: [{ customField: 'custom-field', type: 'test' }],
32
+ attachments: [{ customField: 'custom-field', type: 'test' } as AttachmentWithCustomField],
30
33
  user,
31
34
  }),
32
35
  ];
@@ -40,7 +43,7 @@ describe('isAttachmentEqualHandler', () => {
40
43
 
41
44
  chatClient = await getTestClientWithUser(user);
42
45
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
43
- channel = chatClient.channel('messaging', mockedChannel.id);
46
+ channel = chatClient.channel('messaging', mockedChannel.channel.id);
44
47
  await channel.watch();
45
48
  });
46
49
 
@@ -50,7 +53,10 @@ describe('isAttachmentEqualHandler', () => {
50
53
  });
51
54
 
52
55
  const getMessageWithCustomFields = () => {
53
- const isAttachmentEqualHandler = (prevProps, nextProps) => {
56
+ const isAttachmentEqualHandler = (
57
+ prevProps: AttachmentWithCustomField,
58
+ nextProps: AttachmentWithCustomField,
59
+ ) => {
54
60
  const propsEqual =
55
61
  prevProps.customField === nextProps.customField && prevProps.type === nextProps.type;
56
62
  if (!propsEqual) {
@@ -64,14 +70,23 @@ describe('isAttachmentEqualHandler', () => {
64
70
  <Chat client={chatClient}>
65
71
  <WithComponents
66
72
  overrides={{
67
- UnsupportedAttachment: ({ attachment: { customField, type } }) => {
73
+ UnsupportedAttachment: ({ attachment }) => {
74
+ const { customField, type } = attachment as AttachmentWithCustomField;
68
75
  if (type === 'test') {
69
76
  return <Text testID='attachment-custom-field'>{customField}</Text>;
70
77
  }
78
+ return null;
71
79
  },
72
80
  }}
73
81
  >
74
- <Channel channel={channel} isAttachmentEqual={isAttachmentEqualHandler}>
82
+ <Channel
83
+ channel={channel}
84
+ isAttachmentEqual={
85
+ isAttachmentEqualHandler as unknown as React.ComponentProps<
86
+ typeof Channel
87
+ >['isAttachmentEqual']
88
+ }
89
+ >
75
90
  <MessageList />
76
91
  </Channel>
77
92
  </WithComponents>
@@ -92,7 +107,9 @@ describe('isAttachmentEqualHandler', () => {
92
107
  chatClient,
93
108
  {
94
109
  ...messages[0],
95
- attachments: [{ customField: 'custom-field-2', type: 'test' }],
110
+ attachments: [
111
+ { customField: 'custom-field-2', type: 'test' } as AttachmentWithCustomField,
112
+ ],
96
113
  updated_at: new Date(),
97
114
  },
98
115
  channel,
@@ -4,6 +4,7 @@ import { FlatList } from 'react-native';
4
4
  import { SafeAreaProvider } from 'react-native-safe-area-context';
5
5
 
6
6
  import { act, fireEvent, render, waitFor } from '@testing-library/react-native';
7
+ import type { Channel as ChannelType, LocalMessage, StreamChat } from 'stream-chat';
7
8
 
8
9
  import { OverlayProvider } from '../../../contexts/overlayContext/OverlayProvider';
9
10
  import { allOwnCapabilities } from '../../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';
@@ -31,10 +32,10 @@ describe('Own capabilities', () => {
31
32
  user: otherUser,
32
33
  });
33
34
 
34
- let chatClient;
35
- let channel;
35
+ let chatClient: StreamChat;
36
+ let channel: ChannelType;
36
37
 
37
- const initializeChannel = async (c) => {
38
+ const initializeChannel = async (c: ReturnType<typeof generateChannelResponse>) => {
38
39
  useMockedApis(chatClient, [getOrCreateChannelApi(c)]);
39
40
  channel = chatClient.channel('messaging');
40
41
 
@@ -48,7 +49,7 @@ describe('Own capabilities', () => {
48
49
  });
49
50
  });
50
51
 
51
- const getComponent = (props = {}) => (
52
+ const getComponent = (props: Partial<React.ComponentProps<typeof Channel>> = {}) => (
52
53
  <SafeAreaProvider>
53
54
  <OverlayProvider>
54
55
  <Chat client={chatClient}>
@@ -61,7 +62,7 @@ describe('Own capabilities', () => {
61
62
  </SafeAreaProvider>
62
63
  );
63
64
 
64
- const generateChannelWithCapabilities = async (capabilities = []) => {
65
+ const generateChannelWithCapabilities = async (capabilities: string[] = []) => {
65
66
  const c = generateChannelResponse({
66
67
  channel: {
67
68
  own_capabilities: capabilities,
@@ -71,12 +72,15 @@ describe('Own capabilities', () => {
71
72
  await initializeChannel(c);
72
73
  };
73
74
 
74
- const renderChannelAndOpenMessageActionsList = async (targetMessage, props = {}) => {
75
+ const renderChannelAndOpenMessageActionsList = async (
76
+ targetMessage: LocalMessage,
77
+ props: Partial<React.ComponentProps<typeof Channel>> = {},
78
+ ) => {
75
79
  const { findByTestId, queryByLabelText, queryByText, unmount } = render(getComponent(props));
76
- await waitFor(() => queryByText(targetMessage.text));
80
+ await waitFor(() => queryByText(targetMessage.text as string));
77
81
 
78
82
  act(() => {
79
- fireEvent(queryByText(targetMessage.text), 'onLongPress');
83
+ fireEvent(queryByText(targetMessage.text as string)!, 'onLongPress');
80
84
  });
81
85
 
82
86
  await waitFor(() => expect(!!queryByLabelText('Message action list')).toBeTruthy());
@@ -363,7 +367,7 @@ describe('Own capabilities', () => {
363
367
  const sendMessage = jest.fn();
364
368
  channel.sendMessage = sendMessage;
365
369
  act(() => {
366
- fireEvent(queryByTestId('send-button'), 'onPress');
370
+ fireEvent(queryByTestId('send-button')!, 'onPress');
367
371
  });
368
372
 
369
373
  await waitFor(() => expect(sendMessage).toHaveBeenCalledTimes(0));
@@ -378,10 +382,10 @@ describe('Own capabilities', () => {
378
382
  const mockFn = jest.fn();
379
383
  const { queryByTestId } = render(
380
384
  getComponent({
381
- doSendMessageRequest: () => {
385
+ doSendMessageRequest: (() => {
382
386
  mockFn();
383
387
  return sendMessageApi();
384
- },
388
+ }) as unknown as React.ComponentProps<typeof Channel>['doSendMessageRequest'],
385
389
  }),
386
390
  );
387
391
 
@@ -397,7 +401,7 @@ describe('Own capabilities', () => {
397
401
  });
398
402
 
399
403
  act(() => {
400
- fireEvent(queryByTestId('send-button'), 'onPress');
404
+ fireEvent(queryByTestId('send-button')!, 'onPress');
401
405
  });
402
406
 
403
407
  await waitFor(() => expect(mockFn).toHaveBeenCalledTimes(1));
@@ -1,4 +1,5 @@
1
1
  import { act, cleanup, renderHook, waitFor } from '@testing-library/react-native';
2
+ import type { Channel as ChannelType, LocalMessage, StreamChat } from 'stream-chat';
2
3
 
3
4
  import { getOrCreateChannelApi } from '../../../mock-builders/api/getOrCreateChannel';
4
5
  import { useMockedApis } from '../../../mock-builders/api/useMockedApis';
@@ -11,23 +12,29 @@ import * as ChannelStateHooks from '../hooks/useChannelDataState';
11
12
  import { useMessageListPagination } from '../hooks/useMessageListPagination';
12
13
 
13
14
  describe('useMessageListPagination', () => {
14
- let chatClient;
15
- let channel;
16
-
17
- const mockedHook = (state, values) =>
18
- jest.spyOn(ChannelStateHooks, 'useChannelMessageDataState').mockImplementation(() => ({
19
- copyMessagesStateFromChannel: jest.fn(),
20
- jumpToLatestMessage: jest.fn(),
21
- jumpToMessageFinished: jest.fn(),
22
- loadInitialMessagesStateFromChannel: jest.fn(),
23
- loadMoreFinished: jest.fn(),
24
- loadMoreRecentFinished: jest.fn(),
25
- setLoading: jest.fn(),
26
- setLoadingMore: jest.fn(),
27
- setLoadingMoreRecent: jest.fn(),
28
- state: { ...channelInitialState, ...state },
29
- ...values,
30
- }));
15
+ let chatClient: StreamChat;
16
+ let channel: ChannelType;
17
+
18
+ const mockedHook = (
19
+ state: Partial<typeof channelInitialState>,
20
+ values?: Partial<ReturnType<typeof ChannelStateHooks.useChannelMessageDataState>>,
21
+ ) =>
22
+ jest.spyOn(ChannelStateHooks, 'useChannelMessageDataState').mockImplementation(
23
+ () =>
24
+ ({
25
+ copyMessagesStateFromChannel: jest.fn(),
26
+ jumpToLatestMessage: jest.fn(),
27
+ jumpToMessageFinished: jest.fn(),
28
+ loadInitialMessagesStateFromChannel: jest.fn(),
29
+ loadMoreFinished: jest.fn(),
30
+ loadMoreRecentFinished: jest.fn(),
31
+ setLoading: jest.fn(),
32
+ setLoadingMore: jest.fn(),
33
+ setLoadingMoreRecent: jest.fn(),
34
+ state: { ...channelInitialState, ...state },
35
+ ...values,
36
+ }) as unknown as ReturnType<typeof ChannelStateHooks.useChannelMessageDataState>,
37
+ );
31
38
 
32
39
  beforeEach(async () => {
33
40
  // Reset all modules before each test
@@ -40,7 +47,7 @@ describe('useMessageListPagination', () => {
40
47
  });
41
48
 
42
49
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
43
- channel = chatClient.channel('messaging', mockedChannel.id);
50
+ channel = chatClient.channel('messaging', mockedChannel.channel.id);
44
51
  await channel.watch();
45
52
  });
46
53
 
@@ -57,7 +64,7 @@ describe('useMessageListPagination', () => {
57
64
  channel.state.messages = Array.from({ length: 20 }, (_, i) =>
58
65
  generateMessage({ text: `message-${i}` }),
59
66
  );
60
- channel.state.messagePagination.hasPrev = true;
67
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
61
68
  });
62
69
  channel.state = {
63
70
  ...channelInitialState,
@@ -66,7 +73,7 @@ describe('useMessageListPagination', () => {
66
73
  hasNext: true,
67
74
  hasPrev: true,
68
75
  },
69
- };
76
+ } as unknown as typeof channel.state;
70
77
  const { result } = renderHook(() => useMessageListPagination({ channel }));
71
78
 
72
79
  await act(async () => {
@@ -76,7 +83,7 @@ describe('useMessageListPagination', () => {
76
83
  await waitFor(() => {
77
84
  expect(loadMessageIntoState).toHaveBeenCalledTimes(1);
78
85
  expect(result.current.state.hasMore).toBe(true);
79
- expect(result.current.state.messages.length).toBe(20);
86
+ expect(result.current.state.messages!.length).toBe(20);
80
87
  });
81
88
  });
82
89
 
@@ -96,8 +103,8 @@ describe('useMessageListPagination', () => {
96
103
  hasNext: true,
97
104
  hasPrev: false,
98
105
  },
99
- };
100
- channel.query = queryFn;
106
+ } as unknown as typeof channel.state;
107
+ channel.query = queryFn as typeof channel.query;
101
108
  const { result } = renderHook(() => useMessageListPagination({ channel }));
102
109
 
103
110
  await act(async () => {
@@ -117,8 +124,8 @@ describe('useMessageListPagination', () => {
117
124
  hasNext: true,
118
125
  hasPrev: true,
119
126
  },
120
- };
121
- channel.query = queryFn;
127
+ } as unknown as typeof channel.state;
128
+ channel.query = queryFn as typeof channel.query;
122
129
 
123
130
  mockedHook({ loadingMore: true, loadingMoreRecent: true });
124
131
 
@@ -141,7 +148,7 @@ describe('useMessageListPagination', () => {
141
148
  channel.state.messages = Array.from({ length: 40 }, (_, i) =>
142
149
  generateMessage({ text: `message-${i}` }),
143
150
  );
144
- channel.state.messagePagination.hasPrev = true;
151
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
145
152
  });
146
153
  channel.state = {
147
154
  ...channelInitialState,
@@ -150,8 +157,8 @@ describe('useMessageListPagination', () => {
150
157
  hasPrev: true,
151
158
  },
152
159
  messages,
153
- };
154
- channel.query = queryFn;
160
+ } as unknown as typeof channel.state;
161
+ channel.query = queryFn as unknown as typeof channel.query;
155
162
 
156
163
  const { result } = renderHook(() => useMessageListPagination({ channel }));
157
164
 
@@ -167,7 +174,7 @@ describe('useMessageListPagination', () => {
167
174
  },
168
175
  });
169
176
  expect(result.current.state.hasMore).toBe(true);
170
- expect(result.current.state.messages.length).toBe(40);
177
+ expect(result.current.state.messages!.length).toBe(40);
171
178
  });
172
179
  });
173
180
  });
@@ -189,8 +196,8 @@ describe('useMessageListPagination', () => {
189
196
  hasNext: false,
190
197
  hasPrev: true,
191
198
  },
192
- };
193
- channel.query = queryFn;
199
+ } as unknown as typeof channel.state;
200
+ channel.query = queryFn as typeof channel.query;
194
201
  const { result } = renderHook(() => useMessageListPagination({ channel }));
195
202
 
196
203
  await act(async () => {
@@ -210,8 +217,8 @@ describe('useMessageListPagination', () => {
210
217
  hasNext: true,
211
218
  hasPrev: true,
212
219
  },
213
- };
214
- channel.query = queryFn;
220
+ } as unknown as typeof channel.state;
221
+ channel.query = queryFn as typeof channel.query;
215
222
 
216
223
  mockedHook({ loadingMore: true, loadingMoreRecent: true });
217
224
 
@@ -234,7 +241,7 @@ describe('useMessageListPagination', () => {
234
241
  channel.state.messages = Array.from({ length: 40 }, (_, i) =>
235
242
  generateMessage({ text: `message-${i}` }),
236
243
  );
237
- channel.state.messagePagination.hasPrev = true;
244
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
238
245
  });
239
246
  channel.state = {
240
247
  ...channelInitialState,
@@ -243,8 +250,8 @@ describe('useMessageListPagination', () => {
243
250
  hasPrev: true,
244
251
  },
245
252
  messages,
246
- };
247
- channel.query = queryFn;
253
+ } as unknown as typeof channel.state;
254
+ channel.query = queryFn as unknown as typeof channel.query;
248
255
 
249
256
  const { result } = renderHook(() => useMessageListPagination({ channel }));
250
257
 
@@ -258,7 +265,7 @@ describe('useMessageListPagination', () => {
258
265
  watchers: { limit: 10 },
259
266
  });
260
267
  expect(result.current.state.hasMore).toBe(true);
261
- expect(result.current.state.messages.length).toBe(40);
268
+ expect(result.current.state.messages!.length).toBe(40);
262
269
  });
263
270
  });
264
271
  });
@@ -277,7 +284,7 @@ describe('useMessageListPagination', () => {
277
284
  channel.state.messages = Array.from({ length: 20 }, (_, i) =>
278
285
  generateMessage({ text: `message-${i}` }),
279
286
  );
280
- channel.state.messagePagination.hasPrev = true;
287
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
281
288
  });
282
289
  channel.state = {
283
290
  ...channelInitialState,
@@ -286,7 +293,7 @@ describe('useMessageListPagination', () => {
286
293
  hasNext: true,
287
294
  hasPrev: true,
288
295
  },
289
- };
296
+ } as unknown as typeof channel.state;
290
297
  const { result } = renderHook(() => useMessageListPagination({ channel }));
291
298
 
292
299
  await act(async () => {
@@ -303,7 +310,7 @@ describe('useMessageListPagination', () => {
303
310
  channel.state.messages = Array.from({ length: 20 }, (_, i) =>
304
311
  generateMessage({ text: `message-${i}` }),
305
312
  );
306
- channel.state.messagePagination.hasPrev = true;
313
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
307
314
  });
308
315
  channel.state = {
309
316
  ...channelInitialState,
@@ -312,7 +319,7 @@ describe('useMessageListPagination', () => {
312
319
  hasNext: false,
313
320
  hasPrev: true,
314
321
  },
315
- };
322
+ } as unknown as typeof channel.state;
316
323
  const { result } = renderHook(() => useMessageListPagination({ channel }));
317
324
 
318
325
  await act(async () => {
@@ -323,7 +330,7 @@ describe('useMessageListPagination', () => {
323
330
  expect(loadMessageIntoState).toHaveBeenCalledTimes(1);
324
331
  expect(result.current.state.hasMore).toBe(true);
325
332
  expect(result.current.state.hasMoreNewer).toBe(false);
326
- expect(result.current.state.messages.length).toBe(20);
333
+ expect(result.current.state.messages!.length).toBe(20);
327
334
  expect(result.current.state.targetedMessageId).toBe('message-5');
328
335
  });
329
336
  });
@@ -344,7 +351,7 @@ describe('useMessageListPagination', () => {
344
351
  );
345
352
  const loadMessageIntoState = jest.fn(() => {
346
353
  channel.state.messages = messages;
347
- channel.state.messagePagination.hasPrev = true;
354
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
348
355
  });
349
356
  channel.state = {
350
357
  ...channelInitialState,
@@ -353,7 +360,7 @@ describe('useMessageListPagination', () => {
353
360
  hasNext: true,
354
361
  hasPrev: true,
355
362
  },
356
- };
363
+ } as unknown as typeof channel.state;
357
364
 
358
365
  const user = generateUser();
359
366
  const channelUnreadState = {
@@ -367,7 +374,11 @@ describe('useMessageListPagination', () => {
367
374
  const { result } = renderHook(() => useMessageListPagination({ channel }));
368
375
 
369
376
  await act(async () => {
370
- await result.current.loadChannelAtFirstUnreadMessage({ channelUnreadState });
377
+ await result.current.loadChannelAtFirstUnreadMessage({
378
+ channelUnreadState: channelUnreadState as unknown as Parameters<
379
+ typeof result.current.loadChannelAtFirstUnreadMessage
380
+ >[0]['channelUnreadState'],
381
+ });
371
382
  });
372
383
 
373
384
  await waitFor(() => {
@@ -376,10 +387,30 @@ describe('useMessageListPagination', () => {
376
387
  });
377
388
 
378
389
  const generateMessageArray = (length = 20) =>
379
- Array.from({ length }, (_, i) => generateMessage({ id: i, text: `message-${i}` }));
390
+ Array.from({ length }, (_, i) => generateMessage({ id: String(i), text: `message-${i}` }));
391
+
392
+ type TestCaseUnreadState = {
393
+ first_unread_message_id?: string;
394
+ last_read_message_id?: string;
395
+ unread_messages: number;
396
+ };
397
+
398
+ type TestCase = {
399
+ channelUnreadState: (messages: LocalMessage[]) => TestCaseUnreadState;
400
+ expectedCalls: {
401
+ jumpToMessageFinishedCalls: number;
402
+ loadMessageIntoStateCalls: number;
403
+ setChannelUnreadStateCalls: number;
404
+ setTargetedMessageIdCalls: number;
405
+ targetedMessageId: (messages: LocalMessage[]) => string;
406
+ };
407
+ initialMessages: LocalMessage[];
408
+ name: string;
409
+ setupLoadMessageIntoState: ((channel: ChannelType) => jest.Mock) | null;
410
+ };
380
411
 
381
412
  // Test cases with different scenarios
382
- const testCases = [
413
+ const testCases: TestCase[] = [
383
414
  {
384
415
  channelUnreadState: (messages) => ({
385
416
  first_unread_message_id: messages[2].id,
@@ -398,7 +429,7 @@ describe('useMessageListPagination', () => {
398
429
  },
399
430
  {
400
431
  channelUnreadState: () => ({
401
- first_unread_message_id: 21,
432
+ first_unread_message_id: '21',
402
433
  unread_messages: 2,
403
434
  }),
404
435
  expectedCalls: {
@@ -406,19 +437,20 @@ describe('useMessageListPagination', () => {
406
437
  loadMessageIntoStateCalls: 1,
407
438
  setChannelUnreadStateCalls: 0,
408
439
  setTargetedMessageIdCalls: 1,
409
- targetedMessageId: () => 21,
440
+ targetedMessageId: () => '21',
410
441
  },
411
442
  initialMessages: generateMessageArray(),
412
443
  name: 'first_unread_message_id not present in current message set',
413
444
  setupLoadMessageIntoState: (channel) => {
414
445
  const loadMessageIntoState = jest.fn(() => {
415
446
  const newMessages = Array.from({ length: 20 }, (_, i) =>
416
- generateMessage({ id: i + 21, text: `message-${i + 21}` }),
447
+ generateMessage({ id: String(i + 21), text: `message-${i + 21}` }),
417
448
  );
418
449
  channel.state.messages = newMessages;
419
- channel.state.messagePagination.hasPrev = true;
450
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
420
451
  });
421
- channel.state.loadMessageIntoState = loadMessageIntoState;
452
+ (channel.state as unknown as { loadMessageIntoState: jest.Mock }).loadMessageIntoState =
453
+ loadMessageIntoState;
422
454
  return loadMessageIntoState;
423
455
  },
424
456
  },
@@ -440,7 +472,7 @@ describe('useMessageListPagination', () => {
440
472
  },
441
473
  {
442
474
  channelUnreadState: () => ({
443
- last_read_message_id: 21,
475
+ last_read_message_id: '21',
444
476
  unread_messages: 2,
445
477
  }),
446
478
  expectedCalls: {
@@ -448,19 +480,20 @@ describe('useMessageListPagination', () => {
448
480
  loadMessageIntoStateCalls: 1,
449
481
  setChannelUnreadStateCalls: 1,
450
482
  setTargetedMessageIdCalls: 1,
451
- targetedMessageId: () => 22,
483
+ targetedMessageId: () => '22',
452
484
  },
453
485
  initialMessages: generateMessageArray(),
454
486
  name: 'last_read_message_id not present in current message set',
455
487
  setupLoadMessageIntoState: (channel) => {
456
488
  const loadMessageIntoState = jest.fn(() => {
457
489
  const newMessages = Array.from({ length: 20 }, (_, i) =>
458
- generateMessage({ id: i + 21, text: `message-${i + 21}` }),
490
+ generateMessage({ id: String(i + 21), text: `message-${i + 21}` }),
459
491
  );
460
492
  channel.state.messages = newMessages;
461
- channel.state.messagePagination.hasPrev = true;
493
+ (channel.state.messagePagination as { hasPrev: boolean }).hasPrev = true;
462
494
  });
463
- channel.state.loadMessageIntoState = loadMessageIntoState;
495
+ (channel.state as unknown as { loadMessageIntoState: jest.Mock }).loadMessageIntoState =
496
+ loadMessageIntoState;
464
497
  return loadMessageIntoState;
465
498
  },
466
499
  },
@@ -476,7 +509,7 @@ describe('useMessageListPagination', () => {
476
509
  hasPrev: true,
477
510
  },
478
511
  messages,
479
- };
512
+ } as unknown as typeof channel.state;
480
513
 
481
514
  // Setup additional mocks if needed
482
515
  const loadMessageIntoStateMock = testCase.setupLoadMessageIntoState
@@ -502,7 +535,9 @@ describe('useMessageListPagination', () => {
502
535
  // Execute the method
503
536
  await act(async () => {
504
537
  await result.current.loadChannelAtFirstUnreadMessage({
505
- channelUnreadState,
538
+ channelUnreadState: channelUnreadState as unknown as Parameters<
539
+ typeof result.current.loadChannelAtFirstUnreadMessage
540
+ >[0]['channelUnreadState'],
506
541
  setChannelUnreadState: setChannelUnreadStateMock,
507
542
  setTargetedMessage: setTargetedMessageIdMock,
508
543
  });
@@ -538,7 +573,7 @@ describe('useMessageListPagination', () => {
538
573
  const messages = Array.from({ length: 20 }, (_, i) =>
539
574
  generateMessage({
540
575
  created_at: new Date('2021-09-01T00:00:00.000Z'),
541
- id: i,
576
+ id: String(i),
542
577
  text: `message-${i}`,
543
578
  }),
544
579
  );
@@ -547,7 +582,7 @@ describe('useMessageListPagination', () => {
547
582
 
548
583
  it.each`
549
584
  scenario | last_read | expectedQueryCalls | expectedJumpToMessageFinishedCalls | expectedSetChannelUnreadStateCalls | expectedSetTargetedMessageCalls | expectedTargetedMessageId
550
- ${'when last_read matches a message'} | ${new Date(messages[10].created_at)} | ${0} | ${1} | ${1} | ${1} | ${10}
585
+ ${'when last_read matches a message'} | ${new Date(messages[10].created_at)} | ${0} | ${1} | ${1} | ${1} | ${'10'}
551
586
  ${'when last_read does not match any message'} | ${new Date('2021-09-02T00:00:00.000Z')} | ${1} | ${0} | ${0} | ${0} | ${undefined}
552
587
  `(
553
588
  '$scenario',
@@ -558,6 +593,13 @@ describe('useMessageListPagination', () => {
558
593
  expectedSetTargetedMessageCalls,
559
594
  expectedTargetedMessageId,
560
595
  last_read,
596
+ }: {
597
+ expectedJumpToMessageFinishedCalls: number;
598
+ expectedQueryCalls: number;
599
+ expectedSetChannelUnreadStateCalls: number;
600
+ expectedSetTargetedMessageCalls: number;
601
+ expectedTargetedMessageId: string | undefined;
602
+ last_read: Date;
561
603
  }) => {
562
604
  // Set up channel state
563
605
  channel.state = {
@@ -567,7 +609,7 @@ describe('useMessageListPagination', () => {
567
609
  hasPrev: true,
568
610
  },
569
611
  messages,
570
- };
612
+ } as unknown as typeof channel.state;
571
613
 
572
614
  const channelUnreadState = {
573
615
  last_read,
@@ -577,7 +619,7 @@ describe('useMessageListPagination', () => {
577
619
 
578
620
  // Mock query if needed
579
621
  const queryMock = jest.fn();
580
- channel.query = queryMock;
622
+ channel.query = queryMock as unknown as typeof channel.query;
581
623
 
582
624
  // Set up mocks
583
625
  const jumpToMessageFinishedMock = jest.fn();