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
@@ -1,3 +1,5 @@
1
+ import type { Attachment } from 'stream-chat';
2
+
1
3
  import { generateImageAttachment } from '../../../mock-builders/generator/attachment';
2
4
  import { buildGallery } from '../utils/buildGallery/buildGallery';
3
5
 
@@ -20,7 +22,7 @@ describe('buildGallery', () => {
20
22
  ];
21
23
 
22
24
  imageSizeTestCases.forEach((size) => {
23
- const attachments = [];
25
+ const attachments: Attachment[] = [];
24
26
  for (let numOfImages = 0; numOfImages < 4; numOfImages++) {
25
27
  const a1 = generateImageAttachment({
26
28
  ...size,
@@ -77,7 +79,7 @@ describe('buildGallery', () => {
77
79
  });
78
80
 
79
81
  it('gallery size should default to gridHeight and gridWidth if original image size is unavailable', () => {
80
- const attachments = [];
82
+ const attachments: Attachment[] = [];
81
83
  for (let numOfImages = 0; numOfImages < 4; numOfImages++) {
82
84
  // During each iteration, size of attachments goes up.
83
85
  attachments.push(generateImageAttachment());
@@ -1,18 +1,28 @@
1
1
  import React from 'react';
2
2
 
3
3
  import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react-native';
4
+ import type { Channel as ChannelType, StreamChat } from 'stream-chat';
4
5
 
5
6
  import { OverlayProvider } from '../../../contexts';
6
7
  import { initiateClientWithChannels } from '../../../mock-builders/api/initiateClientWithChannels';
8
+ import type { ChannelProps } from '../../Channel/Channel';
7
9
  import { Channel } from '../../Channel/Channel';
8
10
  import { Chat } from '../../Chat/Chat';
9
11
  import { AutoCompleteInput } from '../AutoCompleteInput';
10
12
 
11
- const renderComponent = ({ channelProps, client, props }) => {
13
+ const renderComponent = ({
14
+ channelProps,
15
+ client,
16
+ props,
17
+ }: {
18
+ channelProps: Partial<ChannelProps>;
19
+ client: StreamChat;
20
+ props: React.ComponentProps<typeof AutoCompleteInput>;
21
+ }) => {
12
22
  return render(
13
23
  <OverlayProvider>
14
24
  <Chat client={client}>
15
- <Channel {...channelProps}>
25
+ <Channel {...(channelProps as ChannelProps)}>
16
26
  <AutoCompleteInput {...props} />
17
27
  </Channel>
18
28
  </Chat>
@@ -21,8 +31,8 @@ const renderComponent = ({ channelProps, client, props }) => {
21
31
  };
22
32
 
23
33
  describe('AutoCompleteInput', () => {
24
- let client;
25
- let channel;
34
+ let client: StreamChat;
35
+ let channel: ChannelType;
26
36
 
27
37
  beforeEach(async () => {
28
38
  const { client: chatClient, channels } = await initiateClientWithChannels();
@@ -43,7 +53,7 @@ describe('AutoCompleteInput', () => {
43
53
 
44
54
  const { queryByTestId } = screen;
45
55
 
46
- const input = queryByTestId('auto-complete-text-input');
56
+ const input = queryByTestId('auto-complete-text-input')!;
47
57
 
48
58
  await waitFor(() => {
49
59
  expect(input).toBeTruthy();
@@ -60,7 +70,7 @@ describe('AutoCompleteInput', () => {
60
70
 
61
71
  const { queryByTestId } = screen;
62
72
 
63
- const input = queryByTestId('auto-complete-text-input');
73
+ const input = queryByTestId('auto-complete-text-input')!;
64
74
 
65
75
  await waitFor(() => {
66
76
  expect(input.props.editable).toBeFalsy();
@@ -70,7 +80,7 @@ describe('AutoCompleteInput', () => {
70
80
  it('should have the maxLength same as the one on the config of channel', async () => {
71
81
  jest.spyOn(channel, 'getConfig').mockReturnValue({
72
82
  max_message_length: 10,
73
- });
83
+ } as unknown as ReturnType<typeof channel.getConfig>);
74
84
  const channelProps = { channel };
75
85
  const props = {};
76
86
 
@@ -78,7 +88,7 @@ describe('AutoCompleteInput', () => {
78
88
 
79
89
  const { queryByTestId } = screen;
80
90
 
81
- const input = queryByTestId('auto-complete-text-input');
91
+ const input = queryByTestId('auto-complete-text-input')!;
82
92
 
83
93
  await waitFor(() => {
84
94
  expect(input.props.maxLength).toBe(10);
@@ -97,7 +107,7 @@ describe('AutoCompleteInput', () => {
97
107
 
98
108
  const { queryByTestId } = screen;
99
109
 
100
- const input = queryByTestId('auto-complete-text-input');
110
+ const input = queryByTestId('auto-complete-text-input')!;
101
111
 
102
112
  act(() => {
103
113
  fireEvent.changeText(input, 'hello');
@@ -125,7 +135,7 @@ describe('AutoCompleteInput', () => {
125
135
 
126
136
  const { queryByTestId } = screen;
127
137
 
128
- const input = queryByTestId('auto-complete-text-input');
138
+ const input = queryByTestId('auto-complete-text-input')!;
129
139
 
130
140
  act(() => {
131
141
  fireEvent(input, 'selectionChange', {
@@ -155,7 +165,7 @@ describe('AutoCompleteInput', () => {
155
165
 
156
166
  const { queryByTestId } = screen;
157
167
 
158
- const input = queryByTestId('auto-complete-text-input');
168
+ const input = queryByTestId('auto-complete-text-input')!;
159
169
 
160
170
  await waitFor(() => {
161
171
  expect(input.props.placeholder).toBe(data.result);
@@ -1,16 +1,20 @@
1
- import React, { useContext, useEffect } from 'react';
1
+ import React, { type ComponentProps, useContext, useEffect } from 'react';
2
2
  import { View } from 'react-native';
3
3
 
4
4
  import { act, cleanup, render, renderHook, waitFor } from '@testing-library/react-native';
5
+ import type { Channel as ChannelType, StreamChat as StreamChatType } from 'stream-chat';
5
6
  import { StreamChat } from 'stream-chat';
6
7
 
8
+ import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
7
9
  import { ChannelContext, ChannelProvider } from '../../../contexts/channelContext/ChannelContext';
8
10
  import { ChannelsStateProvider } from '../../../contexts/channelsStateContext/ChannelsStateContext';
11
+ import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
9
12
  import {
10
13
  MessagesContext,
11
14
  MessagesProvider,
12
15
  } from '../../../contexts/messagesContext/MessagesContext';
13
16
 
17
+ import type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
14
18
  import { ThreadContext, ThreadProvider } from '../../../contexts/threadContext/ThreadContext';
15
19
 
16
20
  import { getOrCreateChannelApi } from '../../../mock-builders/api/getOrCreateChannel';
@@ -34,7 +38,13 @@ import * as MessageListPaginationHooks from '../hooks/useMessageListPagination';
34
38
  // This component is used for performing effects in a component that consumes ChannelContext,
35
39
  // i.e. making use of the callbacks & values provided by the Channel component.
36
40
  // the effect is called every time channelContext changes
37
- const CallbackEffectWithContext = ({ callback, context }) => {
41
+ const CallbackEffectWithContext = ({
42
+ callback,
43
+ context,
44
+ }: {
45
+ callback: (ctx: unknown) => void;
46
+ context: React.Context<unknown>;
47
+ }) => {
38
48
  const ctx = useContext(context);
39
49
  useEffect(() => {
40
50
  callback(ctx);
@@ -43,7 +53,13 @@ const CallbackEffectWithContext = ({ callback, context }) => {
43
53
  return <View />;
44
54
  };
45
55
 
46
- const ContextConsumer = ({ context, fn }) => {
56
+ const ContextConsumer = ({
57
+ context,
58
+ fn,
59
+ }: {
60
+ context: React.Context<unknown>;
61
+ fn: (ctx: unknown) => void;
62
+ }) => {
47
63
  fn(useContext(context));
48
64
  return <View testID='children' />;
49
65
  };
@@ -51,17 +67,26 @@ const ContextConsumer = ({ context, fn }) => {
51
67
  const channelType = 'messaging';
52
68
  const channelId = 'test-channel';
53
69
  const channelCid = `${channelType}:${channelId}`;
54
- let chatClient;
55
- let channel;
70
+ let chatClient: StreamChatType;
71
+ let channel: ChannelType;
56
72
 
57
73
  const user = generateUser({ id: 'id', name: 'name' });
58
74
  const messages = [generateMessage({ cid: channelCid, user })];
59
75
 
60
- const renderComponent = (props = {}, callback = () => {}, context = ChannelContext) =>
76
+ type RenderComponentProps = Partial<Omit<ComponentProps<typeof Channel>, 'channel'>> & {
77
+ channel?: unknown;
78
+ children?: React.ReactNode;
79
+ };
80
+
81
+ const renderComponent = (
82
+ props: RenderComponentProps = {},
83
+ callback: (ctx: unknown) => void = () => {},
84
+ context: React.Context<unknown> = ChannelContext as React.Context<unknown>,
85
+ ) =>
61
86
  render(
62
87
  <ChannelsStateProvider>
63
88
  <Chat client={chatClient}>
64
- <Channel {...props}>
89
+ <Channel {...(props as React.ComponentProps<typeof Channel>)}>
65
90
  {props.children}
66
91
  <CallbackEffectWithContext {...{ callback, context }} />
67
92
  </Channel>
@@ -73,7 +98,7 @@ describe('Channel', () => {
73
98
  beforeEach(async () => {
74
99
  const members = [generateMember({ user })];
75
100
  const mockedChannel = generateChannelResponse({
76
- cid: channelCid,
101
+ channel: { cid: channelCid },
77
102
  id: channelId,
78
103
  members,
79
104
  messages,
@@ -81,8 +106,8 @@ describe('Channel', () => {
81
106
  });
82
107
  chatClient = await getTestClientWithUser(user);
83
108
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
84
- channel = chatClient.channel('messaging', mockedChannel.id);
85
- channel.cid = mockedChannel.channel.cid;
109
+ channel = chatClient.channel('messaging', mockedChannel.channel.id);
110
+ channel.cid = mockedChannel.channel.cid as string;
86
111
  const getConfigSpy = jest.fn();
87
112
  channel.getConfig = getConfigSpy;
88
113
  });
@@ -158,14 +183,18 @@ describe('Channel', () => {
158
183
  // and then calls hasThread with the thread id if it was set.
159
184
  const { rerender } = renderComponent(
160
185
  { channel },
161
- ({ openThread, thread }) => {
186
+ (ctx) => {
187
+ const { openThread, thread } = ctx as {
188
+ openThread: (m: unknown) => void;
189
+ thread: { id: string } | null;
190
+ };
162
191
  if (!thread) {
163
192
  openThread(threadMessage);
164
193
  } else {
165
194
  hasThread(thread.id);
166
195
  }
167
196
  },
168
- ThreadContext,
197
+ ThreadContext as React.Context<unknown>,
169
198
  );
170
199
 
171
200
  rerender(
@@ -173,14 +202,18 @@ describe('Channel', () => {
173
202
  <Chat client={chatClient}>
174
203
  <Channel channel={channel}>
175
204
  <CallbackEffectWithContext
176
- callback={({ openThread, thread }) => {
205
+ callback={(ctx) => {
206
+ const { openThread, thread } = ctx as {
207
+ openThread: (m: unknown) => void;
208
+ thread: { id: string } | null;
209
+ };
177
210
  if (!thread) {
178
211
  openThread(threadMessage);
179
212
  } else {
180
213
  hasThread(thread.id);
181
214
  }
182
215
  }}
183
- context={ThreadContext}
216
+ context={ThreadContext as React.Context<unknown>}
184
217
  />
185
218
  </Channel>
186
219
  </Chat>
@@ -189,7 +222,7 @@ describe('Channel', () => {
189
222
  await waitFor(() => expect(hasThread).toHaveBeenCalledWith(threadMessage.id));
190
223
  });
191
224
 
192
- const queryChannelWithNewMessages = (newMessages) =>
225
+ const queryChannelWithNewMessages = (newMessages: ReturnType<typeof generateMessage>[]) =>
193
226
  // generate new channel mock from existing channel with new messages added
194
227
  getOrCreateChannelApi(
195
228
  generateChannelResponse({
@@ -212,7 +245,7 @@ describe('Channel', () => {
212
245
  () => {
213
246
  useMockedApis(chatClient, [queryChannelWithNewMessages(newMessages)]);
214
247
  },
215
- MessagesContext,
248
+ MessagesContext as React.Context<unknown>,
216
249
  );
217
250
 
218
251
  await waitFor(() => expect(channelQuerySpy).toHaveBeenCalled());
@@ -221,7 +254,7 @@ describe('Channel', () => {
221
254
  describe('ChannelContext', () => {
222
255
  it('renders children without crashing', async () => {
223
256
  const { getByTestId } = render(
224
- <ChannelProvider>
257
+ <ChannelProvider value={{} as ChannelContextValue}>
225
258
  <View testID='children' />
226
259
  </ChannelProvider>,
227
260
  );
@@ -230,7 +263,7 @@ describe('Channel', () => {
230
263
  });
231
264
 
232
265
  it('exposes the channel context', async () => {
233
- let context;
266
+ let context: ChannelContextValue | undefined;
234
267
 
235
268
  const mockContext = {
236
269
  channel,
@@ -240,11 +273,11 @@ describe('Channel', () => {
240
273
  };
241
274
 
242
275
  render(
243
- <ChannelProvider value={mockContext}>
276
+ <ChannelProvider value={mockContext as unknown as ChannelContextValue}>
244
277
  <ContextConsumer
245
- context={ChannelContext}
278
+ context={ChannelContext as React.Context<unknown>}
246
279
  fn={(ctx) => {
247
- context = ctx;
280
+ context = ctx as ChannelContextValue;
248
281
  }}
249
282
  />
250
283
  </ChannelProvider>,
@@ -252,10 +285,11 @@ describe('Channel', () => {
252
285
 
253
286
  await waitFor(() => {
254
287
  expect(context).toBeInstanceOf(Object);
255
- expect(context.channel).toBeInstanceOf(Object);
256
- expect(context.client).toBeInstanceOf(StreamChat);
257
- expect(context.markRead).toBeInstanceOf(Function);
258
- expect(context.watcherCount).toBe(5);
288
+ const ctx = context as unknown as typeof mockContext;
289
+ expect(ctx.channel).toBeInstanceOf(Object);
290
+ expect(ctx.client).toBeInstanceOf(StreamChat);
291
+ expect(ctx.markRead).toBeInstanceOf(Function);
292
+ expect(ctx.watcherCount).toBe(5);
259
293
  });
260
294
  });
261
295
  });
@@ -263,7 +297,7 @@ describe('Channel', () => {
263
297
  describe('MessagesContext', () => {
264
298
  it('renders children without crashing', async () => {
265
299
  const { getByTestId } = render(
266
- <MessagesProvider>
300
+ <MessagesProvider value={{} as MessagesContextValue}>
267
301
  <View testID='children' />
268
302
  </MessagesProvider>,
269
303
  );
@@ -272,7 +306,7 @@ describe('Channel', () => {
272
306
  });
273
307
 
274
308
  it('exposes the messages context', async () => {
275
- let context;
309
+ let context: MessagesContextValue | undefined;
276
310
 
277
311
  const mockContext = {
278
312
  Attachment,
@@ -282,11 +316,11 @@ describe('Channel', () => {
282
316
  };
283
317
 
284
318
  render(
285
- <MessagesProvider value={mockContext}>
319
+ <MessagesProvider value={mockContext as unknown as MessagesContextValue}>
286
320
  <ContextConsumer
287
- context={MessagesContext}
321
+ context={MessagesContext as React.Context<unknown>}
288
322
  fn={(ctx) => {
289
- context = ctx;
323
+ context = ctx as MessagesContextValue;
290
324
  }}
291
325
  />
292
326
  </MessagesProvider>,
@@ -294,10 +328,11 @@ describe('Channel', () => {
294
328
 
295
329
  await waitFor(() => {
296
330
  expect(context).toBeInstanceOf(Object);
297
- expect(context.Attachment).toBeInstanceOf(Function);
298
- expect(context.editing).toBe(false);
299
- expect(context.messages).toBeInstanceOf(Array);
300
- expect(context.sendMessage).toBeInstanceOf(Function);
331
+ const ctx = context as unknown as typeof mockContext;
332
+ expect(ctx.Attachment).toBeInstanceOf(Function);
333
+ expect(ctx.editing).toBe(false);
334
+ expect(ctx.messages).toBeInstanceOf(Array);
335
+ expect(ctx.sendMessage).toBeInstanceOf(Function);
301
336
  });
302
337
  });
303
338
  });
@@ -305,7 +340,7 @@ describe('Channel', () => {
305
340
  describe('ThreadContext', () => {
306
341
  it('renders children without crashing', async () => {
307
342
  const { getByTestId } = render(
308
- <ThreadProvider>
343
+ <ThreadProvider value={{} as ThreadContextValue}>
309
344
  <View testID='children' />
310
345
  </ThreadProvider>,
311
346
  );
@@ -314,7 +349,7 @@ describe('Channel', () => {
314
349
  });
315
350
 
316
351
  it('exposes the thread context', async () => {
317
- let context;
352
+ let context: ThreadContextValue | undefined;
318
353
 
319
354
  const mockContext = {
320
355
  openThread: () => {},
@@ -324,11 +359,11 @@ describe('Channel', () => {
324
359
  };
325
360
 
326
361
  render(
327
- <ThreadProvider value={mockContext}>
362
+ <ThreadProvider value={mockContext as unknown as ThreadContextValue}>
328
363
  <ContextConsumer
329
- context={ThreadContext}
364
+ context={ThreadContext as React.Context<unknown>}
330
365
  fn={(ctx) => {
331
- context = ctx;
366
+ context = ctx as ThreadContextValue;
332
367
  }}
333
368
  />
334
369
  </ThreadProvider>,
@@ -336,22 +371,22 @@ describe('Channel', () => {
336
371
 
337
372
  await waitFor(() => {
338
373
  expect(context).toBeInstanceOf(Object);
339
- expect(context.openThread).toBeInstanceOf(Function);
340
- expect(context.thread).toBeInstanceOf(Object);
341
- expect(context.threadHasMore).toBe(true);
342
- expect(context.threadLoadingMore).toBe(false);
374
+ expect(context!.openThread).toBeInstanceOf(Function);
375
+ expect(context!.thread).toBeInstanceOf(Object);
376
+ expect(context!.threadHasMore).toBe(true);
377
+ expect(context!.threadLoadingMore).toBe(false);
343
378
  });
344
379
  });
345
380
  });
346
381
  });
347
382
 
348
383
  describe('Channel initial load useEffect', () => {
349
- let chatClient;
384
+ let chatClient: StreamChatType;
350
385
 
351
- const renderComponent = (props = {}) =>
386
+ const renderComponent = (props: RenderComponentProps = {}) =>
352
387
  render(
353
388
  <Chat client={chatClient}>
354
- <Channel {...props}>{props.children}</Channel>
389
+ <Channel {...(props as React.ComponentProps<typeof Channel>)}>{props.children}</Channel>
355
390
  </Chat>,
356
391
  );
357
392
 
@@ -365,13 +400,13 @@ describe('Channel initial load useEffect', () => {
365
400
  });
366
401
 
367
402
  it('should still call channel.watch if we are online and DB channels are loaded', async () => {
368
- const messages = Array.from({ length: 10 }, (_, i) => generateMessage({ id: i }));
403
+ const messages = Array.from({ length: 10 }, (_, i) => generateMessage({ id: String(i) }));
369
404
  const mockedChannel = generateChannelResponse({
370
405
  messages,
371
406
  });
372
407
 
373
408
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
374
- const channel = chatClient.channel('messaging', mockedChannel.id);
409
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
375
410
  await channel.watch();
376
411
  channel.offlineMode = true;
377
412
  channel.state = {
@@ -379,7 +414,7 @@ describe('Channel initial load useEffect', () => {
379
414
  messagePagination: {
380
415
  hasPrev: true,
381
416
  },
382
- };
417
+ } as unknown as typeof channel.state;
383
418
  const watchSpy = jest.fn();
384
419
  channel.watch = watchSpy;
385
420
 
@@ -389,29 +424,29 @@ describe('Channel initial load useEffect', () => {
389
424
  });
390
425
 
391
426
  it("should call channel.watch if channel is initialized and it's not in offline mode", async () => {
392
- const messages = Array.from({ length: 10 }, (_, i) => generateMessage({ id: i }));
427
+ const messages = Array.from({ length: 10 }, (_, i) => generateMessage({ id: String(i) }));
393
428
  const mockedChannel = generateChannelResponse({
394
429
  messages,
395
430
  });
396
431
 
397
432
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
398
- const channel = chatClient.channel('messaging', mockedChannel.id);
433
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
399
434
  await channel.watch();
400
435
 
401
436
  channel.state = {
402
437
  ...channelInitialState,
403
438
  members: Object.fromEntries(
404
- Array.from({ length: 10 }, (_, i) => [i, generateMember({ id: i })]),
439
+ Array.from({ length: 10 }, (_, i) => [i, generateMember({ user_id: String(i) })]),
405
440
  ),
406
441
  messagePagination: {
407
442
  hasPrev: true,
408
443
  },
409
- messages: Array.from({ length: 10 }, (_, i) => generateMessage({ id: i })),
410
- };
444
+ messages: Array.from({ length: 10 }, (_, i) => generateMessage({ id: String(i) })),
445
+ } as unknown as typeof channel.state;
411
446
  const watchSpy = jest.fn();
412
447
 
413
448
  channel.offlineMode = false;
414
- channel.initialied = false;
449
+ (channel as unknown as { initialied: boolean }).initialied = false;
415
450
  channel.watch = watchSpy;
416
451
 
417
452
  renderComponent({ channel });
@@ -420,11 +455,11 @@ describe('Channel initial load useEffect', () => {
420
455
  const { result: channelState } = renderHook(() => useChannelDataState(channel));
421
456
 
422
457
  await waitFor(() => expect(watchSpy).toHaveBeenCalled());
423
- await waitFor(() => expect(channelMessageState.current.state.messages).toHaveLength(10));
424
- await waitFor(() => expect(Object.keys(channelState.current.state.members)).toHaveLength(10));
458
+ await waitFor(() => expect(channelMessageState.current.state.messages!).toHaveLength(10));
459
+ await waitFor(() => expect(Object.keys(channelState.current.state.members!)).toHaveLength(10));
425
460
  });
426
461
 
427
- function getElementsAround(array, key, id) {
462
+ function getElementsAround<T extends object>(array: T[], key: keyof T, id: unknown) {
428
463
  const index = array.findIndex((obj) => obj[key] === id);
429
464
 
430
465
  if (index === -1) {
@@ -437,14 +472,14 @@ describe('Channel initial load useEffect', () => {
437
472
  }
438
473
 
439
474
  it('should call the loadChannelAroundMessage when messageId is passed to a channel', async () => {
440
- const messages = Array.from({ length: 105 }, (_, i) => generateMessage({ id: i }));
475
+ const messages = Array.from({ length: 105 }, (_, i) => generateMessage({ id: String(i) }));
441
476
  const messageToSearch = messages[50];
442
477
  const mockedChannel = generateChannelResponse({
443
478
  messages,
444
479
  });
445
480
 
446
481
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
447
- const channel = chatClient.channel('messaging', mockedChannel.id);
482
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
448
483
  await channel.watch();
449
484
 
450
485
  const loadMessageIntoState = jest.fn(() => {
@@ -460,7 +495,7 @@ describe('Channel initial load useEffect', () => {
460
495
  hasPrev: true,
461
496
  },
462
497
  messages,
463
- };
498
+ } as unknown as typeof channel.state;
464
499
 
465
500
  renderComponent({ channel, messageId: messageToSearch.id });
466
501
 
@@ -469,10 +504,10 @@ describe('Channel initial load useEffect', () => {
469
504
  });
470
505
 
471
506
  const { result: channelMessageState } = renderHook(() => useChannelMessageDataState(channel));
472
- await waitFor(() => expect(channelMessageState.current.state.messages).toHaveLength(25));
507
+ await waitFor(() => expect(channelMessageState.current.state.messages!).toHaveLength(25));
473
508
  await waitFor(() =>
474
509
  expect(
475
- channelMessageState.current.state.messages.find(
510
+ channelMessageState.current.state.messages!.find(
476
511
  (message) => message.id === messageToSearch.id,
477
512
  ),
478
513
  ).toBeTruthy(),
@@ -487,38 +522,43 @@ describe('Channel initial load useEffect', () => {
487
522
  jest.restoreAllMocks();
488
523
  cleanup();
489
524
  });
490
- const mockedHook = (values) =>
491
- jest.spyOn(MessageListPaginationHooks, 'useMessageListPagination').mockImplementation(() => ({
492
- copyMessagesStateFromChannel: jest.fn(),
493
- loadChannelAroundMessage: jest.fn(),
494
- loadChannelAtFirstUnreadMessage: jest.fn(),
495
- loadInitialMessagesStateFromChannel: jest.fn(),
496
- loadLatestMessages: jest.fn(),
497
- loadMore: jest.fn(),
498
- loadMoreRecent: jest.fn(),
499
- state: { ...channelInitialState },
500
- ...values,
501
- }));
525
+ const mockedHook = (
526
+ values: Partial<ReturnType<typeof MessageListPaginationHooks.useMessageListPagination>>,
527
+ ) =>
528
+ jest.spyOn(MessageListPaginationHooks, 'useMessageListPagination').mockImplementation(
529
+ () =>
530
+ ({
531
+ copyMessagesStateFromChannel: jest.fn(),
532
+ loadChannelAroundMessage: jest.fn(),
533
+ loadChannelAtFirstUnreadMessage: jest.fn(),
534
+ loadInitialMessagesStateFromChannel: jest.fn(),
535
+ loadLatestMessages: jest.fn(),
536
+ loadMore: jest.fn(),
537
+ loadMoreRecent: jest.fn(),
538
+ state: { ...channelInitialState },
539
+ ...values,
540
+ }) as unknown as ReturnType<typeof MessageListPaginationHooks.useMessageListPagination>,
541
+ );
502
542
  it("should not call loadChannelAtFirstUnreadMessage if channel's unread count is 0", async () => {
503
543
  const mockedChannel = generateChannelResponse({
504
544
  messages: Array.from({ length: 10 }, (_, i) => generateMessage({ text: `message-${i}` })),
505
545
  });
506
546
 
507
547
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
508
- const channel = chatClient.channel('messaging', mockedChannel.id);
548
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
509
549
  await channel.watch();
510
550
  const user = generateUser();
511
- const read_data = {};
551
+ const read_data: typeof channel.state.read = {};
512
552
 
513
- read_data[chatClient.user.id] = {
553
+ read_data[chatClient.user!.id] = {
514
554
  last_read: new Date(),
515
555
  user,
516
- };
556
+ } as unknown as (typeof channel.state.read)[string];
517
557
 
518
558
  channel.state = {
519
559
  ...channelInitialState,
520
560
  read: read_data,
521
- };
561
+ } as unknown as typeof channel.state;
522
562
  jest.spyOn(channel, 'countUnread').mockImplementation(() => 0);
523
563
 
524
564
  const loadChannelAtFirstUnreadMessageFn = jest.fn();
@@ -538,14 +578,14 @@ describe('Channel initial load useEffect', () => {
538
578
  });
539
579
 
540
580
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
541
- const channel = chatClient.channel('messaging', mockedChannel.id);
581
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
542
582
  await channel.watch();
543
583
 
544
584
  const user = generateUser();
545
585
  const numberOfUnreadMessages = 15;
546
- const read_data = {};
586
+ const read_data: typeof channel.state.read = {};
547
587
 
548
- read_data[chatClient.user.id] = {
588
+ read_data[chatClient.user!.id] = {
549
589
  last_read: new Date(),
550
590
  unread_messages: numberOfUnreadMessages,
551
591
  user,
@@ -553,7 +593,7 @@ describe('Channel initial load useEffect', () => {
553
593
  channel.state = {
554
594
  ...channelInitialState,
555
595
  read: read_data,
556
- };
596
+ } as unknown as typeof channel.state;
557
597
 
558
598
  jest.spyOn(channel, 'countUnread').mockImplementation(() => numberOfUnreadMessages);
559
599
  const loadChannelAtFirstUnreadMessageFn = jest.fn();
@@ -573,14 +613,14 @@ describe('Channel initial load useEffect', () => {
573
613
  });
574
614
 
575
615
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
576
- const channel = chatClient.channel('messaging', mockedChannel.id);
616
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
577
617
  await channel.watch();
578
618
 
579
619
  const user = generateUser();
580
620
  const numberOfUnreadMessages = 2;
581
- const read_data = {};
621
+ const read_data: typeof channel.state.read = {};
582
622
 
583
- read_data[chatClient.user.id] = {
623
+ read_data[chatClient.user!.id] = {
584
624
  last_read: new Date(),
585
625
  unread_messages: numberOfUnreadMessages,
586
626
  user,
@@ -588,7 +628,7 @@ describe('Channel initial load useEffect', () => {
588
628
  channel.state = {
589
629
  ...channelInitialState,
590
630
  read: read_data,
591
- };
631
+ } as unknown as typeof channel.state;
592
632
 
593
633
  jest.spyOn(channel, 'countUnread').mockImplementation(() => numberOfUnreadMessages);
594
634
  const loadChannelAtFirstUnreadMessageFn = jest.fn();
@@ -609,7 +649,7 @@ describe('Channel initial load useEffect', () => {
609
649
  });
610
650
 
611
651
  useMockedApis(chatClient, [getOrCreateChannelApi(mockedChannel)]);
612
- const channel = chatClient.channel('messaging', mockedChannel.id);
652
+ const channel = chatClient.channel('messaging', mockedChannel.channel.id);
613
653
  await channel.watch();
614
654
 
615
655
  renderComponent({ channel });