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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.test.js +1 -1
  3. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
  4. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  5. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  6. package/lib/commonjs/mock-builders/api/channelMocks.js +38 -31
  7. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  8. package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -1
  9. package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -1
  10. package/lib/commonjs/mock-builders/api/error.js.map +1 -1
  11. package/lib/commonjs/mock-builders/api/getOrCreateChannel.js.map +1 -1
  12. package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js +1 -1
  13. package/lib/commonjs/mock-builders/api/initiateClientWithChannels.js.map +1 -1
  14. package/lib/commonjs/mock-builders/api/queryChannels.js.map +1 -1
  15. package/lib/commonjs/mock-builders/api/queryMembers.js +12 -11
  16. package/lib/commonjs/mock-builders/api/queryMembers.js.map +1 -1
  17. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  18. package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -1
  19. package/lib/commonjs/mock-builders/api/threadReplies.js.map +1 -1
  20. package/lib/commonjs/mock-builders/api/useMockedApis.js.map +1 -1
  21. package/lib/commonjs/mock-builders/api/utils.js.map +1 -1
  22. package/lib/commonjs/mock-builders/attachments.js.map +1 -1
  23. package/lib/commonjs/mock-builders/event/channelDeleted.js +3 -2
  24. package/lib/commonjs/mock-builders/event/channelDeleted.js.map +1 -1
  25. package/lib/commonjs/mock-builders/event/channelHidden.js +3 -2
  26. package/lib/commonjs/mock-builders/event/channelHidden.js.map +1 -1
  27. package/lib/commonjs/mock-builders/event/channelTruncated.js +3 -2
  28. package/lib/commonjs/mock-builders/event/channelTruncated.js.map +1 -1
  29. package/lib/commonjs/mock-builders/event/channelUpdated.js +3 -2
  30. package/lib/commonjs/mock-builders/event/channelUpdated.js.map +1 -1
  31. package/lib/commonjs/mock-builders/event/channelVisible.js +3 -2
  32. package/lib/commonjs/mock-builders/event/channelVisible.js.map +1 -1
  33. package/lib/commonjs/mock-builders/event/connectionChanged.js +3 -2
  34. package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
  35. package/lib/commonjs/mock-builders/event/connectionRecovered.js +3 -2
  36. package/lib/commonjs/mock-builders/event/connectionRecovered.js.map +1 -1
  37. package/lib/commonjs/mock-builders/event/memberAdded.js +3 -2
  38. package/lib/commonjs/mock-builders/event/memberAdded.js.map +1 -1
  39. package/lib/commonjs/mock-builders/event/memberRemoved.js +3 -2
  40. package/lib/commonjs/mock-builders/event/memberRemoved.js.map +1 -1
  41. package/lib/commonjs/mock-builders/event/memberUpdated.js +3 -2
  42. package/lib/commonjs/mock-builders/event/memberUpdated.js.map +1 -1
  43. package/lib/commonjs/mock-builders/event/messageDeleted.js +3 -2
  44. package/lib/commonjs/mock-builders/event/messageDeleted.js.map +1 -1
  45. package/lib/commonjs/mock-builders/event/messageNew.js +3 -2
  46. package/lib/commonjs/mock-builders/event/messageNew.js.map +1 -1
  47. package/lib/commonjs/mock-builders/event/messageRead.js +3 -2
  48. package/lib/commonjs/mock-builders/event/messageRead.js.map +1 -1
  49. package/lib/commonjs/mock-builders/event/messageUpdated.js +3 -2
  50. package/lib/commonjs/mock-builders/event/messageUpdated.js.map +1 -1
  51. package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js +3 -2
  52. package/lib/commonjs/mock-builders/event/notificationAddedToChannel.js.map +1 -1
  53. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
  54. package/lib/commonjs/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
  55. package/lib/commonjs/mock-builders/event/notificationMarkRead.js +3 -2
  56. package/lib/commonjs/mock-builders/event/notificationMarkRead.js.map +1 -1
  57. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js +3 -2
  58. package/lib/commonjs/mock-builders/event/notificationMarkUnread.js.map +1 -1
  59. package/lib/commonjs/mock-builders/event/notificationMessageNew.js +3 -2
  60. package/lib/commonjs/mock-builders/event/notificationMessageNew.js.map +1 -1
  61. package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js +3 -2
  62. package/lib/commonjs/mock-builders/event/notificationMutesUpdated.js.map +1 -1
  63. package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js +3 -2
  64. package/lib/commonjs/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
  65. package/lib/commonjs/mock-builders/event/reactionDeleted.js +3 -2
  66. package/lib/commonjs/mock-builders/event/reactionDeleted.js.map +1 -1
  67. package/lib/commonjs/mock-builders/event/reactionNew.js +3 -2
  68. package/lib/commonjs/mock-builders/event/reactionNew.js.map +1 -1
  69. package/lib/commonjs/mock-builders/event/reactionUpdated.js +3 -2
  70. package/lib/commonjs/mock-builders/event/reactionUpdated.js.map +1 -1
  71. package/lib/commonjs/mock-builders/event/typing.js +3 -2
  72. package/lib/commonjs/mock-builders/event/typing.js.map +1 -1
  73. package/lib/commonjs/mock-builders/event/userPresence.js +3 -2
  74. package/lib/commonjs/mock-builders/event/userPresence.js.map +1 -1
  75. package/lib/commonjs/mock-builders/event/userUpdated.js +3 -2
  76. package/lib/commonjs/mock-builders/event/userUpdated.js.map +1 -1
  77. package/lib/commonjs/mock-builders/generator/attachment.js +0 -3
  78. package/lib/commonjs/mock-builders/generator/attachment.js.map +1 -1
  79. package/lib/commonjs/mock-builders/generator/channel.js +10 -12
  80. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  81. package/lib/commonjs/mock-builders/generator/member.js +3 -2
  82. package/lib/commonjs/mock-builders/generator/member.js.map +1 -1
  83. package/lib/commonjs/mock-builders/generator/message.js +12 -7
  84. package/lib/commonjs/mock-builders/generator/message.js.map +1 -1
  85. package/lib/commonjs/mock-builders/generator/reaction.js +3 -2
  86. package/lib/commonjs/mock-builders/generator/reaction.js.map +1 -1
  87. package/lib/commonjs/mock-builders/generator/user.js +4 -3
  88. package/lib/commonjs/mock-builders/generator/user.js.map +1 -1
  89. package/lib/commonjs/mock-builders/mock.js +15 -11
  90. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  91. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
  92. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
  93. package/lib/commonjs/store/apis/upsertDraft.js.map +1 -1
  94. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -1
  95. package/lib/commonjs/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  96. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  97. package/lib/commonjs/test-utils/BetterSqlite.js +11 -7
  98. package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
  99. package/lib/commonjs/version.json +1 -1
  100. package/lib/module/components/Message/MessageItemView/utils/renderText.test.js +1 -1
  101. package/lib/module/components/Message/MessageItemView/utils/renderText.test.js.map +1 -1
  102. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  103. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  104. package/lib/module/mock-builders/api/channelMocks.js +38 -31
  105. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  106. package/lib/module/mock-builders/api/deleteMessage.js.map +1 -1
  107. package/lib/module/mock-builders/api/deleteReaction.js.map +1 -1
  108. package/lib/module/mock-builders/api/error.js.map +1 -1
  109. package/lib/module/mock-builders/api/getOrCreateChannel.js.map +1 -1
  110. package/lib/module/mock-builders/api/initiateClientWithChannels.js +1 -1
  111. package/lib/module/mock-builders/api/initiateClientWithChannels.js.map +1 -1
  112. package/lib/module/mock-builders/api/queryChannels.js.map +1 -1
  113. package/lib/module/mock-builders/api/queryMembers.js +12 -11
  114. package/lib/module/mock-builders/api/queryMembers.js.map +1 -1
  115. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  116. package/lib/module/mock-builders/api/sendReaction.js.map +1 -1
  117. package/lib/module/mock-builders/api/threadReplies.js.map +1 -1
  118. package/lib/module/mock-builders/api/useMockedApis.js.map +1 -1
  119. package/lib/module/mock-builders/api/utils.js.map +1 -1
  120. package/lib/module/mock-builders/attachments.js.map +1 -1
  121. package/lib/module/mock-builders/event/channelDeleted.js +3 -2
  122. package/lib/module/mock-builders/event/channelDeleted.js.map +1 -1
  123. package/lib/module/mock-builders/event/channelHidden.js +3 -2
  124. package/lib/module/mock-builders/event/channelHidden.js.map +1 -1
  125. package/lib/module/mock-builders/event/channelTruncated.js +3 -2
  126. package/lib/module/mock-builders/event/channelTruncated.js.map +1 -1
  127. package/lib/module/mock-builders/event/channelUpdated.js +3 -2
  128. package/lib/module/mock-builders/event/channelUpdated.js.map +1 -1
  129. package/lib/module/mock-builders/event/channelVisible.js +3 -2
  130. package/lib/module/mock-builders/event/channelVisible.js.map +1 -1
  131. package/lib/module/mock-builders/event/connectionChanged.js +3 -2
  132. package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
  133. package/lib/module/mock-builders/event/connectionRecovered.js +3 -2
  134. package/lib/module/mock-builders/event/connectionRecovered.js.map +1 -1
  135. package/lib/module/mock-builders/event/memberAdded.js +3 -2
  136. package/lib/module/mock-builders/event/memberAdded.js.map +1 -1
  137. package/lib/module/mock-builders/event/memberRemoved.js +3 -2
  138. package/lib/module/mock-builders/event/memberRemoved.js.map +1 -1
  139. package/lib/module/mock-builders/event/memberUpdated.js +3 -2
  140. package/lib/module/mock-builders/event/memberUpdated.js.map +1 -1
  141. package/lib/module/mock-builders/event/messageDeleted.js +3 -2
  142. package/lib/module/mock-builders/event/messageDeleted.js.map +1 -1
  143. package/lib/module/mock-builders/event/messageNew.js +3 -2
  144. package/lib/module/mock-builders/event/messageNew.js.map +1 -1
  145. package/lib/module/mock-builders/event/messageRead.js +3 -2
  146. package/lib/module/mock-builders/event/messageRead.js.map +1 -1
  147. package/lib/module/mock-builders/event/messageUpdated.js +3 -2
  148. package/lib/module/mock-builders/event/messageUpdated.js.map +1 -1
  149. package/lib/module/mock-builders/event/notificationAddedToChannel.js +3 -2
  150. package/lib/module/mock-builders/event/notificationAddedToChannel.js.map +1 -1
  151. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js +3 -2
  152. package/lib/module/mock-builders/event/notificationChannelMutesUpdated.js.map +1 -1
  153. package/lib/module/mock-builders/event/notificationMarkRead.js +3 -2
  154. package/lib/module/mock-builders/event/notificationMarkRead.js.map +1 -1
  155. package/lib/module/mock-builders/event/notificationMarkUnread.js +3 -2
  156. package/lib/module/mock-builders/event/notificationMarkUnread.js.map +1 -1
  157. package/lib/module/mock-builders/event/notificationMessageNew.js +3 -2
  158. package/lib/module/mock-builders/event/notificationMessageNew.js.map +1 -1
  159. package/lib/module/mock-builders/event/notificationMutesUpdated.js +3 -2
  160. package/lib/module/mock-builders/event/notificationMutesUpdated.js.map +1 -1
  161. package/lib/module/mock-builders/event/notificationRemovedFromChannel.js +3 -2
  162. package/lib/module/mock-builders/event/notificationRemovedFromChannel.js.map +1 -1
  163. package/lib/module/mock-builders/event/reactionDeleted.js +3 -2
  164. package/lib/module/mock-builders/event/reactionDeleted.js.map +1 -1
  165. package/lib/module/mock-builders/event/reactionNew.js +3 -2
  166. package/lib/module/mock-builders/event/reactionNew.js.map +1 -1
  167. package/lib/module/mock-builders/event/reactionUpdated.js +3 -2
  168. package/lib/module/mock-builders/event/reactionUpdated.js.map +1 -1
  169. package/lib/module/mock-builders/event/typing.js +3 -2
  170. package/lib/module/mock-builders/event/typing.js.map +1 -1
  171. package/lib/module/mock-builders/event/userPresence.js +3 -2
  172. package/lib/module/mock-builders/event/userPresence.js.map +1 -1
  173. package/lib/module/mock-builders/event/userUpdated.js +3 -2
  174. package/lib/module/mock-builders/event/userUpdated.js.map +1 -1
  175. package/lib/module/mock-builders/generator/attachment.js +0 -3
  176. package/lib/module/mock-builders/generator/attachment.js.map +1 -1
  177. package/lib/module/mock-builders/generator/channel.js +10 -12
  178. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  179. package/lib/module/mock-builders/generator/member.js +3 -2
  180. package/lib/module/mock-builders/generator/member.js.map +1 -1
  181. package/lib/module/mock-builders/generator/message.js +12 -7
  182. package/lib/module/mock-builders/generator/message.js.map +1 -1
  183. package/lib/module/mock-builders/generator/reaction.js +3 -2
  184. package/lib/module/mock-builders/generator/reaction.js.map +1 -1
  185. package/lib/module/mock-builders/generator/user.js +4 -3
  186. package/lib/module/mock-builders/generator/user.js.map +1 -1
  187. package/lib/module/mock-builders/mock.js +15 -11
  188. package/lib/module/mock-builders/mock.js.map +1 -1
  189. package/lib/module/store/apis/addPendingTask.js.map +1 -1
  190. package/lib/module/store/apis/deleteMessage.js.map +1 -1
  191. package/lib/module/store/apis/upsertDraft.js.map +1 -1
  192. package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -1
  193. package/lib/module/store/sqlite-utils/appendWhereCluase.js.map +1 -1
  194. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  195. package/lib/module/test-utils/BetterSqlite.js +11 -7
  196. package/lib/module/test-utils/BetterSqlite.js.map +1 -1
  197. package/lib/module/version.json +1 -1
  198. package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts +1 -1
  199. package/lib/typescript/components/UIComponents/SwipableWrapper.d.ts.map +1 -1
  200. package/lib/typescript/store/OfflineDB.d.ts +1 -1
  201. package/lib/typescript/store/OfflineDB.d.ts.map +1 -1
  202. package/lib/typescript/store/apis/addPendingTask.d.ts.map +1 -1
  203. package/lib/typescript/store/apis/deleteMessage.d.ts +2 -1
  204. package/lib/typescript/store/apis/deleteMessage.d.ts.map +1 -1
  205. package/lib/typescript/store/apis/upsertDraft.d.ts +1 -1
  206. package/lib/typescript/store/apis/upsertDraft.d.ts.map +1 -1
  207. package/lib/typescript/store/sqlite-utils/createCreateTableQuery.d.ts.map +1 -1
  208. package/lib/typescript/test-utils/BetterSqlite.d.ts +4 -3
  209. package/lib/typescript/test-utils/BetterSqlite.d.ts.map +1 -1
  210. package/package.json +5 -3
  211. package/src/__tests__/offline-support/{offline-feature.js → offline-feature.tsx} +282 -139
  212. package/src/__tests__/offline-support/{optimistic-update.js → optimistic-update.tsx} +154 -84
  213. package/src/components/Attachment/__tests__/{Attachment.test.js → Attachment.test.tsx} +12 -8
  214. package/src/components/Attachment/__tests__/{Gallery.test.js → Gallery.test.tsx} +10 -3
  215. package/src/components/Attachment/__tests__/{Giphy.test.js → Giphy.test.tsx} +48 -19
  216. package/src/components/Attachment/__tests__/{buildGallery.test.js → buildGallery.test.ts} +4 -2
  217. package/src/components/AutoCompleteInput/__tests__/{AutoCompleteInput.test.js → AutoCompleteInput.test.tsx} +21 -11
  218. package/src/components/Channel/__tests__/{Channel.test.js → Channel.test.tsx} +129 -89
  219. package/src/components/Channel/__tests__/{isAttachmentEqualHandler.test.js → isAttachmentEqualHandler.test.tsx} +25 -8
  220. package/src/components/Channel/__tests__/{ownCapabilities.test.js → ownCapabilities.test.tsx} +16 -12
  221. package/src/components/Channel/__tests__/{useMessageListPagination.test.js → useMessageListPagination.test.tsx} +105 -63
  222. package/src/components/ChannelList/__tests__/{ChannelList.test.js → ChannelList.test.tsx} +63 -29
  223. package/src/components/ChannelList/__tests__/{ChannelListView.test.js → ChannelListView.test.tsx} +30 -20
  224. package/src/components/ChannelList/hooks/__tests__/useChannelActionItems.test.tsx +6 -6
  225. package/src/components/ChannelList/hooks/__tests__/useChannelActionItemsById.test.tsx +2 -2
  226. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +17 -14
  227. package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +14 -4
  228. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +23 -12
  229. package/src/components/ChannelPreview/__tests__/{ChannelPreviewView.test.js → ChannelPreviewView.test.tsx} +9 -34
  230. package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +4 -2
  231. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayPresence.test.tsx +1 -1
  232. package/src/components/Chat/__tests__/{Chat.test.js → Chat.test.tsx} +37 -30
  233. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +10 -14
  234. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -3
  235. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +5 -4
  236. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +7 -6
  237. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +9 -13
  238. package/src/components/Message/MessageItemView/__tests__/{Message.test.js → Message.test.tsx} +20 -11
  239. package/src/components/Message/MessageItemView/__tests__/{MessageAuthor.test.js → MessageAuthor.test.tsx} +10 -12
  240. package/src/components/Message/MessageItemView/__tests__/{MessageContent.test.js → MessageContent.test.tsx} +22 -12
  241. package/src/components/Message/MessageItemView/__tests__/{MessageItemView.test.js → MessageItemView.test.tsx} +11 -4
  242. package/src/components/Message/MessageItemView/__tests__/{MessagePinnedHeader.test.js → MessagePinnedHeader.test.tsx} +5 -3
  243. package/src/components/Message/MessageItemView/__tests__/{MessageReplies.test.js → MessageReplies.test.tsx} +15 -36
  244. package/src/components/Message/MessageItemView/__tests__/{MessageStatus.test.js → MessageStatus.test.tsx} +20 -10
  245. package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -8
  246. package/src/components/Message/MessageItemView/__tests__/{ReactionListBottom.test.js → ReactionListBottom.test.tsx} +19 -8
  247. package/src/components/Message/MessageItemView/__tests__/{ReactionListTop.test.js → ReactionListTop.test.tsx} +8 -4
  248. package/src/components/Message/MessageItemView/utils/renderText.test.tsx +2 -4
  249. package/src/components/Message/MessageItemView/utils/renderText.tsx +1 -1
  250. package/src/components/Message/hooks/__tests__/useShouldUseOverlayStyles.test.tsx +2 -2
  251. package/src/components/MessageInput/__tests__/{AttachButton.test.js → AttachButton.test.tsx} +14 -4
  252. package/src/components/MessageInput/__tests__/{AttachmentUploadPreviewList.test.js → AttachmentUploadPreviewList.test.tsx} +27 -8
  253. package/src/components/MessageInput/__tests__/{AudioAttachmentUploadPreview.test.js → AudioAttachmentUploadPreview.test.tsx} +18 -5
  254. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +47 -15
  255. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +57 -17
  256. package/src/components/MessageInput/__tests__/{InputButtons.test.js → InputButtons.test.tsx} +14 -4
  257. package/src/components/MessageInput/__tests__/{MessageComposer.test.js → MessageComposer.test.tsx} +28 -20
  258. package/src/components/MessageInput/__tests__/{SendButton.test.js → SendButton.test.tsx} +13 -4
  259. package/src/components/MessageInput/__tests__/{SendMessageDisallowedIndicator.test.js → SendMessageDisallowedIndicator.test.tsx} +47 -31
  260. package/src/components/MessageList/__tests__/{MessageList.test.js → MessageList.test.tsx} +31 -34
  261. package/src/components/MessageList/__tests__/{MessageSystem.test.js → MessageSystem.test.tsx} +13 -5
  262. package/src/components/MessageList/__tests__/{ScrollToBottomButton.test.js → ScrollToBottomButton.test.tsx} +8 -12
  263. package/src/components/MessageList/__tests__/{TypingIndicator.test.js → TypingIndicator.test.tsx} +6 -4
  264. package/src/components/MessageList/__tests__/useMessageList.test.tsx +2 -2
  265. package/src/components/MessageList/hooks/useMessageList.ts +1 -1
  266. package/src/components/MessageMenu/__tests__/MessageActionList.test.tsx +4 -1
  267. package/src/components/MessageMenu/__tests__/MessageActionListItem.test.tsx +1 -0
  268. package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +6 -2
  269. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +3 -3
  270. package/src/components/MessageMenu/__tests__/MessageUserReactionsAvatar.test.tsx +7 -3
  271. package/src/components/MessageMenu/__tests__/MessageUserReactionsItem.test.tsx +2 -1
  272. package/src/components/Thread/__tests__/{Thread.test.js → Thread.test.tsx} +41 -13
  273. package/src/components/Thread/__tests__/__snapshots__/{Thread.test.js.snap → Thread.test.tsx.snap} +0 -21
  274. package/src/components/UIComponents/SwipableWrapper.tsx +1 -1
  275. package/src/components/UIComponents/__tests__/SwipableWrapper.test.tsx +1 -1
  276. package/src/contexts/messageInputContext/__tests__/filePickers.test.tsx +31 -10
  277. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +24 -12
  278. package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +2 -2
  279. package/src/hooks/__tests__/useTranslatedMessage.test.tsx +4 -4
  280. package/src/mock-builders/DB/mock.ts +1 -1
  281. package/src/mock-builders/api/channelMocks.tsx +39 -29
  282. package/src/mock-builders/api/deleteMessage.ts +21 -0
  283. package/src/mock-builders/api/deleteReaction.ts +23 -0
  284. package/src/mock-builders/api/{error.js → error.ts} +13 -5
  285. package/src/mock-builders/api/getOrCreateChannel.ts +22 -11
  286. package/src/mock-builders/api/{initiateClientWithChannels.js → initiateClientWithChannels.ts} +21 -3
  287. package/src/mock-builders/api/{queryChannels.js → queryChannels.ts} +2 -4
  288. package/src/mock-builders/api/{queryMembers.js → queryMembers.ts} +29 -27
  289. package/src/mock-builders/api/sendMessage.ts +25 -0
  290. package/src/mock-builders/api/sendReaction.ts +9 -5
  291. package/src/mock-builders/api/threadReplies.ts +18 -0
  292. package/src/mock-builders/api/{useMockedApis.js → useMockedApis.ts} +5 -4
  293. package/src/mock-builders/api/utils.ts +16 -0
  294. package/src/mock-builders/{attachments.js → attachments.ts} +24 -8
  295. package/src/mock-builders/event/channelDeleted.ts +12 -0
  296. package/src/mock-builders/event/channelHidden.ts +12 -0
  297. package/src/mock-builders/event/channelTruncated.ts +12 -0
  298. package/src/mock-builders/event/channelUpdated.ts +12 -0
  299. package/src/mock-builders/event/channelVisible.ts +12 -0
  300. package/src/mock-builders/event/connectionChanged.ts +11 -0
  301. package/src/mock-builders/event/connectionRecovered.ts +10 -0
  302. package/src/mock-builders/event/memberAdded.ts +19 -0
  303. package/src/mock-builders/event/memberRemoved.ts +18 -0
  304. package/src/mock-builders/event/memberUpdated.ts +18 -0
  305. package/src/mock-builders/event/messageDeleted.ts +23 -0
  306. package/src/mock-builders/event/messageNew.ts +26 -0
  307. package/src/mock-builders/event/messageRead.ts +23 -0
  308. package/src/mock-builders/event/messageUpdated.ts +23 -0
  309. package/src/mock-builders/event/notificationAddedToChannel.ts +12 -0
  310. package/src/mock-builders/event/notificationChannelMutesUpdated.ts +12 -0
  311. package/src/mock-builders/event/notificationMarkRead.ts +12 -0
  312. package/src/mock-builders/event/notificationMarkUnread.ts +22 -0
  313. package/src/mock-builders/event/notificationMessageNew.ts +12 -0
  314. package/src/mock-builders/event/notificationMutesUpdated.ts +16 -0
  315. package/src/mock-builders/event/notificationRemovedFromChannel.ts +12 -0
  316. package/src/mock-builders/event/reactionDeleted.ts +26 -0
  317. package/src/mock-builders/event/reactionNew.ts +26 -0
  318. package/src/mock-builders/event/reactionUpdated.ts +26 -0
  319. package/src/mock-builders/event/typing.ts +18 -0
  320. package/src/mock-builders/event/userPresence.ts +13 -0
  321. package/src/mock-builders/event/userUpdated.ts +13 -0
  322. package/src/mock-builders/generator/{attachment.js → attachment.ts} +17 -13
  323. package/src/mock-builders/generator/channel.ts +70 -39
  324. package/src/mock-builders/generator/member.ts +18 -0
  325. package/src/mock-builders/generator/message.ts +50 -0
  326. package/src/mock-builders/generator/reaction.ts +15 -0
  327. package/src/mock-builders/generator/{user.js → user.ts} +20 -16
  328. package/src/mock-builders/mock.ts +79 -0
  329. package/src/state-store/__tests__/audio-player.test.ts +3 -1
  330. package/src/state-store/__tests__/image-gallery-state-store.test.ts +31 -28
  331. package/src/state-store/__tests__/video-player-pool.test.ts +9 -9
  332. package/src/store/apis/__tests__/updatePendingTask.test.ts +17 -6
  333. package/src/store/apis/addPendingTask.ts +2 -1
  334. package/src/store/apis/deleteMessage.ts +2 -1
  335. package/src/store/apis/upsertDraft.ts +2 -2
  336. package/src/store/sqlite-utils/appendOrderByClause.ts +1 -1
  337. package/src/store/sqlite-utils/appendWhereCluase.ts +1 -1
  338. package/src/store/sqlite-utils/createCreateTableQuery.ts +7 -5
  339. package/src/test-utils/BetterSqlite.ts +38 -0
  340. package/src/utils/__tests__/{Streami18n.test.js → Streami18n.test.ts} +66 -31
  341. package/src/utils/__tests__/getResizedImageUrl.test.ts +10 -8
  342. package/src/utils/__tests__/{utils.test.js → utils.test.ts} +1 -1
  343. package/src/version.json +1 -1
  344. package/src/mock-builders/api/deleteMessage.js +0 -18
  345. package/src/mock-builders/api/deleteReaction.js +0 -19
  346. package/src/mock-builders/api/sendMessage.js +0 -18
  347. package/src/mock-builders/api/threadReplies.js +0 -16
  348. package/src/mock-builders/api/utils.js +0 -7
  349. package/src/mock-builders/event/channelDeleted.js +0 -7
  350. package/src/mock-builders/event/channelHidden.js +0 -7
  351. package/src/mock-builders/event/channelTruncated.js +0 -7
  352. package/src/mock-builders/event/channelUpdated.js +0 -7
  353. package/src/mock-builders/event/channelVisible.js +0 -7
  354. package/src/mock-builders/event/connectionChanged.js +0 -6
  355. package/src/mock-builders/event/connectionRecovered.js +0 -5
  356. package/src/mock-builders/event/memberAdded.js +0 -10
  357. package/src/mock-builders/event/memberRemoved.js +0 -9
  358. package/src/mock-builders/event/memberUpdated.js +0 -9
  359. package/src/mock-builders/event/messageDeleted.js +0 -8
  360. package/src/mock-builders/event/messageNew.js +0 -11
  361. package/src/mock-builders/event/messageRead.js +0 -15
  362. package/src/mock-builders/event/messageUpdated.js +0 -8
  363. package/src/mock-builders/event/notificationAddedToChannel.js +0 -7
  364. package/src/mock-builders/event/notificationChannelMutesUpdated.js +0 -7
  365. package/src/mock-builders/event/notificationMarkRead.js +0 -7
  366. package/src/mock-builders/event/notificationMarkUnread.js +0 -12
  367. package/src/mock-builders/event/notificationMessageNew.js +0 -7
  368. package/src/mock-builders/event/notificationMutesUpdated.js +0 -11
  369. package/src/mock-builders/event/notificationRemovedFromChannel.js +0 -7
  370. package/src/mock-builders/event/reactionDeleted.js +0 -9
  371. package/src/mock-builders/event/reactionNew.js +0 -9
  372. package/src/mock-builders/event/reactionUpdated.js +0 -9
  373. package/src/mock-builders/event/typing.js +0 -9
  374. package/src/mock-builders/event/userPresence.js +0 -8
  375. package/src/mock-builders/event/userUpdated.js +0 -8
  376. package/src/mock-builders/generator/member.js +0 -13
  377. package/src/mock-builders/generator/message.js +0 -32
  378. package/src/mock-builders/generator/reaction.js +0 -12
  379. package/src/mock-builders/mock.js +0 -57
  380. package/src/test-utils/BetterSqlite.js +0 -36
  381. /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessageAuthor.test.js.snap → MessageAuthor.test.tsx.snap} +0 -0
  382. /package/src/components/Message/MessageItemView/__tests__/__snapshots__/{MessagePinnedHeader.test.js.snap → MessagePinnedHeader.test.tsx.snap} +0 -0
  383. /package/src/components/MessageInput/__tests__/__snapshots__/{AttachButton.test.js.snap → AttachButton.test.tsx.snap} +0 -0
  384. /package/src/components/MessageInput/__tests__/__snapshots__/{SendButton.test.js.snap → SendButton.test.tsx.snap} +0 -0
  385. /package/src/components/MessageList/__tests__/__snapshots__/{MessageSystem.test.js.snap → MessageSystem.test.tsx.snap} +0 -0
  386. /package/src/components/MessageList/__tests__/__snapshots__/{ScrollToBottomButton.test.js.snap → ScrollToBottomButton.test.tsx.snap} +0 -0
  387. /package/src/components/MessageList/__tests__/__snapshots__/{TypingIndicator.test.js.snap → TypingIndicator.test.tsx.snap} +0 -0
@@ -0,0 +1,23 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type {
3
+ ChannelResponse,
4
+ Event,
5
+ LocalMessage,
6
+ MessageResponse,
7
+ StreamChat,
8
+ } from 'stream-chat';
9
+
10
+ export default (
11
+ client: StreamChat,
12
+ newMessage: MessageResponse | LocalMessage,
13
+ channel: Partial<ChannelResponse> = {},
14
+ ) => {
15
+ client.dispatchEvent(
16
+ fromPartial<Event>({
17
+ channel,
18
+ cid: channel.cid,
19
+ message: newMessage as MessageResponse,
20
+ type: 'message.updated',
21
+ }),
22
+ );
23
+ };
@@ -0,0 +1,12 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'notification.added_to_channel',
10
+ }),
11
+ );
12
+ };
@@ -0,0 +1,12 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'notification.channel_mutes_updated',
10
+ }),
11
+ );
12
+ };
@@ -0,0 +1,12 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'notification.mark_read',
10
+ }),
11
+ );
12
+ };
@@ -0,0 +1,22 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat, UserResponse } from 'stream-chat';
3
+
4
+ export default (
5
+ client: StreamChat,
6
+ channel: Partial<ChannelResponse> = {},
7
+ payload: Partial<Event> = {},
8
+ user: Partial<UserResponse> = {},
9
+ ) => {
10
+ const newDate = new Date() as unknown as string;
11
+ client.dispatchEvent(
12
+ fromPartial<Event>({
13
+ channel,
14
+ cid: channel.cid,
15
+ created_at: newDate,
16
+ received_at: newDate,
17
+ type: 'notification.mark_unread',
18
+ user,
19
+ ...payload,
20
+ }),
21
+ );
22
+ };
@@ -0,0 +1,12 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'notification.message_new',
10
+ }),
11
+ );
12
+ };
@@ -0,0 +1,16 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { Event, Mute, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, mutes: Mute[] = []) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ created_at: '2020-05-26T07:11:57.968294216Z',
8
+ me: {
9
+ ...client.user,
10
+ channel_mutes: [],
11
+ mutes,
12
+ },
13
+ type: 'notification.mutes_updated',
14
+ }),
15
+ );
16
+ };
@@ -0,0 +1,12 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'notification.removed_from_channel',
10
+ }),
11
+ );
12
+ };
@@ -0,0 +1,26 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type {
3
+ ChannelResponse,
4
+ Event,
5
+ LocalMessage,
6
+ MessageResponse,
7
+ ReactionResponse,
8
+ StreamChat,
9
+ } from 'stream-chat';
10
+
11
+ export default (
12
+ client: StreamChat,
13
+ reaction: ReactionResponse,
14
+ message: MessageResponse | LocalMessage,
15
+ channel: Partial<ChannelResponse> = {},
16
+ ) => {
17
+ client.dispatchEvent(
18
+ fromPartial<Event>({
19
+ channel,
20
+ cid: channel.cid,
21
+ message: message as MessageResponse,
22
+ reaction,
23
+ type: 'reaction.deleted',
24
+ }),
25
+ );
26
+ };
@@ -0,0 +1,26 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type {
3
+ ChannelResponse,
4
+ Event,
5
+ LocalMessage,
6
+ MessageResponse,
7
+ ReactionResponse,
8
+ StreamChat,
9
+ } from 'stream-chat';
10
+
11
+ export default (
12
+ client: StreamChat,
13
+ reaction: ReactionResponse,
14
+ message: MessageResponse | LocalMessage,
15
+ channel: Partial<ChannelResponse> = {},
16
+ ) => {
17
+ client.dispatchEvent(
18
+ fromPartial<Event>({
19
+ channel,
20
+ cid: channel.cid,
21
+ message: message as MessageResponse,
22
+ reaction,
23
+ type: 'reaction.new',
24
+ }),
25
+ );
26
+ };
@@ -0,0 +1,26 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type {
3
+ ChannelResponse,
4
+ Event,
5
+ LocalMessage,
6
+ MessageResponse,
7
+ ReactionResponse,
8
+ StreamChat,
9
+ } from 'stream-chat';
10
+
11
+ export default (
12
+ client: StreamChat,
13
+ reaction: ReactionResponse,
14
+ message: MessageResponse | LocalMessage,
15
+ channel: Partial<ChannelResponse> = {},
16
+ ) => {
17
+ client.dispatchEvent(
18
+ fromPartial<Event>({
19
+ channel,
20
+ cid: channel.cid,
21
+ message: message as MessageResponse,
22
+ reaction,
23
+ type: 'reaction.updated',
24
+ }),
25
+ );
26
+ };
@@ -0,0 +1,18 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat, UserResponse } from 'stream-chat';
3
+
4
+ export default (
5
+ client: StreamChat,
6
+ user: Partial<UserResponse> = {},
7
+ channel: Partial<ChannelResponse> = {},
8
+ ) => {
9
+ client.dispatchEvent(
10
+ fromPartial<Event>({
11
+ channel,
12
+ cid: channel.cid,
13
+ type: 'typing.start',
14
+ user,
15
+ user_id: user.id,
16
+ }),
17
+ );
18
+ };
@@ -0,0 +1,13 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat, UserResponse } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, user: UserResponse, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'user.presence.changed',
10
+ user,
11
+ }),
12
+ );
13
+ };
@@ -0,0 +1,13 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelResponse, Event, StreamChat, UserResponse } from 'stream-chat';
3
+
4
+ export default (client: StreamChat, user: UserResponse, channel: Partial<ChannelResponse> = {}) => {
5
+ client.dispatchEvent(
6
+ fromPartial<Event>({
7
+ channel,
8
+ cid: channel.cid,
9
+ type: 'user.updated',
10
+ user,
11
+ }),
12
+ );
13
+ };
@@ -1,15 +1,16 @@
1
+ import type { Action, Attachment } from 'stream-chat';
1
2
  import { v4 as uuidv4 } from 'uuid';
2
3
 
3
4
  const image_url = 'http://www.jackblack.com/tenac_iousd.bmp';
4
5
 
5
- export const generateAttachmentAction = (a) => ({
6
+ export const generateAttachmentAction = (a?: Partial<Action>): Action => ({
6
7
  name: uuidv4(),
7
8
  text: uuidv4(),
8
9
  value: uuidv4(),
9
10
  ...a,
10
11
  });
11
12
 
12
- export const generateVideoAttachment = (a) => ({
13
+ export const generateVideoAttachment = (a?: Partial<Attachment>): Attachment => ({
13
14
  asset_url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
14
15
  mime_type: 'video/mp4',
15
16
  thumb_url:
@@ -19,15 +20,20 @@ export const generateVideoAttachment = (a) => ({
19
20
  ...a,
20
21
  });
21
22
 
22
- export const generateImageAttachment = (a) => ({
23
- id: uuidv4(),
23
+ export const generateImageAttachment = (a?: Partial<Attachment>): Attachment => ({
24
24
  image_url: uuidv4(),
25
25
  title: uuidv4(),
26
26
  type: 'image',
27
27
  ...a,
28
28
  });
29
29
 
30
- export const generateImageUploadPreview = (a) => ({
30
+ type UploadPreview = {
31
+ file: { uri?: string; name?: string; type?: string };
32
+ id: string;
33
+ state: string;
34
+ };
35
+
36
+ export const generateImageUploadPreview = (a?: Partial<UploadPreview>): UploadPreview => ({
31
37
  file: {
32
38
  uri: image_url,
33
39
  },
@@ -36,9 +42,8 @@ export const generateImageUploadPreview = (a) => ({
36
42
  ...a,
37
43
  });
38
44
 
39
- export const generateAudioAttachment = (a) => ({
45
+ export const generateAudioAttachment = (a?: Partial<Attachment>): Attachment => ({
40
46
  asset_url: 'http://www.jackblack.com/tribute.mp3',
41
- description: uuidv4(),
42
47
  image_url,
43
48
  text: uuidv4(),
44
49
  title: uuidv4(),
@@ -46,9 +51,8 @@ export const generateAudioAttachment = (a) => ({
46
51
  ...a,
47
52
  });
48
53
 
49
- export const generateFileAttachment = (a) => ({
54
+ export const generateFileAttachment = (a?: Partial<Attachment>): Attachment => ({
50
55
  asset_url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
51
- description: uuidv4(),
52
56
  file_size: 1337,
53
57
  mime_type: uuidv4(),
54
58
  text: uuidv4(),
@@ -57,7 +61,7 @@ export const generateFileAttachment = (a) => ({
57
61
  ...a,
58
62
  });
59
63
 
60
- export const generateFileUploadPreview = (a) => ({
64
+ export const generateFileUploadPreview = (a?: Partial<UploadPreview>): UploadPreview => ({
61
65
  file: {
62
66
  name: 'dummy.pdf',
63
67
  type: 'file',
@@ -68,7 +72,7 @@ export const generateFileUploadPreview = (a) => ({
68
72
  ...a,
69
73
  });
70
74
 
71
- export const generateCardAttachment = (a) => ({
75
+ export const generateCardAttachment = (a?: Partial<Attachment>): Attachment => ({
72
76
  image_url,
73
77
  og_scrape_url: uuidv4(),
74
78
  text: uuidv4(),
@@ -78,6 +82,6 @@ export const generateCardAttachment = (a) => ({
78
82
  ...a,
79
83
  });
80
84
 
81
- export const generateImgurAttachment = () => generateCardAttachment({ type: 'imgur' });
85
+ export const generateImgurAttachment = (): Attachment => generateCardAttachment({ type: 'imgur' });
82
86
 
83
- export const generateGiphyAttachment = () => generateCardAttachment({ type: 'giphy' });
87
+ export const generateGiphyAttachment = (): Attachment => generateCardAttachment({ type: 'giphy' });
@@ -1,4 +1,10 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
1
+ import type {
2
+ ChannelMemberResponse,
3
+ ChannelResponse,
4
+ LocalMessage,
5
+ MessageResponse,
6
+ ReadResponse,
7
+ } from 'stream-chat';
2
8
  import { v4 as uuidv4 } from 'uuid';
3
9
 
4
10
  import { generateUser, getUserDefaults } from './user';
@@ -29,8 +35,8 @@ const defaultConfig = {
29
35
  {
30
36
  args: '[text]',
31
37
  description: 'Post a random gif to the channel',
32
- name: 'giphy',
33
- set: 'fun_set',
38
+ name: 'giphy' as const,
39
+ set: 'fun_set' as const,
34
40
  },
35
41
  ],
36
42
  connect_events: true,
@@ -41,6 +47,7 @@ const defaultConfig = {
41
47
  name: 'messaging',
42
48
  reactions: true,
43
49
  read_events: true,
50
+ reminders: false,
44
51
  replies: true,
45
52
  search: true,
46
53
  typing_events: true,
@@ -54,54 +61,78 @@ const defaultState = {
54
61
  setIsUpToDate: jest.fn(),
55
62
  };
56
63
 
57
- const getChannelDefaults = (
58
- { id, type }: { [key: string]: any } = { id: uuidv4(), type: 'messaging' },
59
- ) => ({
60
- _client: {},
61
- channel: {
62
- cid: `${type}:${id}`,
63
- config: {
64
- ...defaultConfig,
65
- name: type,
64
+ export type GeneratedChannel = {
65
+ channel: Partial<ChannelResponse> & { config: typeof defaultConfig };
66
+ cid: string;
67
+ id: string;
68
+ messages: Partial<MessageResponse>[];
69
+ state: typeof defaultState;
70
+ type: string;
71
+ };
72
+
73
+ type GeneratedChannelIdType = { id?: string; type?: string };
74
+
75
+ const getChannelDefaults = (opts: GeneratedChannelIdType = {}): GeneratedChannel => {
76
+ const id = opts.id ?? uuidv4();
77
+ const type = opts.type ?? 'messaging';
78
+ return {
79
+ channel: {
80
+ cid: `${type}:${id}`,
81
+ config: {
82
+ ...defaultConfig,
83
+ name: type,
84
+ },
85
+ created_at: '2020-04-28T11:20:48.578147Z',
86
+ created_by: getUserDefaults(),
87
+ frozen: false,
88
+ id,
89
+ own_capabilities: defaultCapabilities,
66
90
  type,
91
+ updated_at: '2020-04-28T11:20:48.578147Z',
67
92
  },
68
- created_at: '2020-04-28T11:20:48.578147Z',
69
- created_by: getUserDefaults(),
70
- frozen: false,
93
+ cid: `${type}:${id}`,
71
94
  id,
72
- own_capabilities: defaultCapabilities,
95
+ messages: [],
96
+ state: defaultState,
73
97
  type,
74
- updated_at: '2020-04-28T11:20:48.578147Z',
75
- },
76
- cid: `${type}:${id}`,
77
- id,
78
- messages: [],
79
- state: defaultState,
80
- type,
81
- });
98
+ };
99
+ };
82
100
 
83
- export const generateChannel = (customValues: { [key: string]: any }) =>
84
- Object.keys(customValues).reduce((accumulated, current) => {
101
+ export const generateChannel = (
102
+ customValues: Partial<GeneratedChannel> & Record<string, unknown> = {},
103
+ ): GeneratedChannel =>
104
+ Object.keys(customValues).reduce<GeneratedChannel>((accumulated, current) => {
105
+ const key = current as keyof GeneratedChannel;
85
106
  if (current in accumulated) {
86
- const key = current as keyof typeof accumulated;
87
- accumulated[key] =
107
+ (accumulated as Record<string, unknown>)[current] =
88
108
  typeof accumulated[key] === 'object'
89
- ? { ...accumulated[key], ...customValues[key] }
90
- : (accumulated[key] = customValues[key]);
109
+ ? { ...(accumulated[key] as object), ...(customValues[current] as object) }
110
+ : customValues[current];
91
111
  return accumulated;
92
112
  }
93
- return { ...accumulated, [current]: customValues[current] };
113
+ return { ...accumulated, [current]: customValues[current] } as GeneratedChannel;
94
114
  }, getChannelDefaults());
95
115
 
116
+ type ChannelResponseMessage = Partial<MessageResponse> | LocalMessage;
117
+
118
+ export type GeneratedChannelResponseCustomValues = {
119
+ channel?: Partial<ChannelResponse>;
120
+ id?: string;
121
+ messages?: ChannelResponseMessage[];
122
+ members?: Partial<ChannelMemberResponse>[];
123
+ read?: Partial<ReadResponse>[];
124
+ type?: string;
125
+ };
126
+
96
127
  export const generateChannelResponse = (
97
- customValues: {
98
- channel?: Record<string, any>;
99
- id?: string;
100
- messages?: Record<string, any>[];
101
- members?: Record<string, any>[];
102
- read?: Record<string, any>[];
103
- type?: string;
104
- } = { channel: {}, id: uuidv4(), members: [], messages: [], read: [], type: 'messaging' },
128
+ customValues: GeneratedChannelResponseCustomValues = {
129
+ channel: {},
130
+ id: uuidv4(),
131
+ members: [],
132
+ messages: [],
133
+ read: [],
134
+ type: 'messaging',
135
+ },
105
136
  ) => {
106
137
  const {
107
138
  channel = {},
@@ -0,0 +1,18 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ChannelMemberResponse } from 'stream-chat';
3
+
4
+ import { generateUser } from './user';
5
+
6
+ export const generateMember = (
7
+ options: Partial<ChannelMemberResponse> = {},
8
+ ): ChannelMemberResponse => {
9
+ const user = (options && options.user) || generateUser();
10
+ return fromPartial<ChannelMemberResponse>({
11
+ invited: false,
12
+ is_moderator: false,
13
+ role: 'member',
14
+ user,
15
+ user_id: user.id,
16
+ ...options,
17
+ });
18
+ };
@@ -0,0 +1,50 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { LocalMessage } from 'stream-chat';
3
+ import { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
4
+
5
+ import { generateUser } from './user';
6
+
7
+ type GenerateMessageOptions = Partial<LocalMessage> & { timestamp?: Date };
8
+
9
+ // Returns a `LocalMessage`-shaped mock. Components across this SDK consume
10
+ // `LocalMessage` (with `Date` objects for `created_at`/`updated_at`/`pinned_at`/
11
+ // `deleted_at`), so the mock matches that shape. For tests that feed mock data
12
+ // into an API response where the server returns `MessageResponse` (strings for
13
+ // dates), cast at the call site — runtime values are the same either way.
14
+ export const generateMessage = (options: GenerateMessageOptions = {}): LocalMessage => {
15
+ const timestamp =
16
+ options.timestamp || new Date(new Date().getTime() - Math.floor(Math.random() * 100000));
17
+
18
+ return fromPartial<LocalMessage>({
19
+ attachments: [],
20
+ created_at: timestamp,
21
+ deleted_at: null,
22
+ html: '<p>regular</p>',
23
+ id: uuidv4(),
24
+ message_text_updated_at: timestamp.toISOString(),
25
+ pinned_at: null,
26
+ status: 'received',
27
+ text: uuidv4(),
28
+ type: 'regular',
29
+ updated_at: timestamp,
30
+ user: generateUser(),
31
+ ...options,
32
+ });
33
+ };
34
+
35
+ const StreamReactNativeNamespace = '9b244ee4-7d69-4d7b-ae23-cf89e9f7b035';
36
+ export const generateStaticMessage = (
37
+ seed: string,
38
+ options?: GenerateMessageOptions,
39
+ date?: string | Date,
40
+ ): LocalMessage => {
41
+ const staticDate = date ? new Date(date) : new Date('2020-04-27T13:39:49.331742Z');
42
+ return generateMessage({
43
+ created_at: staticDate,
44
+ id: uuidv5(seed, StreamReactNativeNamespace),
45
+ message_text_updated_at: staticDate.toISOString(),
46
+ text: seed,
47
+ updated_at: staticDate,
48
+ ...options,
49
+ });
50
+ };
@@ -0,0 +1,15 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { ReactionResponse } from 'stream-chat';
3
+
4
+ import { generateUser } from './user';
5
+
6
+ export const generateReaction = (options: Partial<ReactionResponse> = {}): ReactionResponse => {
7
+ const user = options.user || generateUser();
8
+ return fromPartial<ReactionResponse>({
9
+ created_at: new Date() as unknown as string,
10
+ type: 'love',
11
+ user,
12
+ user_id: user.id,
13
+ ...options,
14
+ });
15
+ };
@@ -1,22 +1,26 @@
1
+ import { fromPartial } from '@total-typescript/shoehorn';
2
+ import type { UserResponse } from 'stream-chat';
1
3
  import { v4 as uuidv4 } from 'uuid';
2
4
 
3
- export const getUserDefaults = () => ({
4
- banned: false,
5
- created_at: '2020-04-27T13:39:49.331742Z',
6
- id: uuidv4(),
7
- image: uuidv4(),
8
- name: uuidv4(),
9
- online: false,
10
- role: 'user',
11
- updated_at: '2020-04-27T13:39:49.332087Z',
12
- });
5
+ export const getUserDefaults = (): UserResponse =>
6
+ fromPartial<UserResponse>({
7
+ banned: false,
8
+ created_at: '2020-04-27T13:39:49.331742Z',
9
+ id: uuidv4(),
10
+ image: uuidv4(),
11
+ name: uuidv4(),
12
+ online: false,
13
+ role: 'user',
14
+ updated_at: '2020-04-27T13:39:49.332087Z',
15
+ });
13
16
 
14
- export const generateUser = (options = {}) => ({
15
- ...getUserDefaults(),
16
- ...options,
17
- });
17
+ export const generateUser = (options: Partial<UserResponse> = {}): UserResponse =>
18
+ fromPartial<UserResponse>({
19
+ ...getUserDefaults(),
20
+ ...options,
21
+ });
18
22
 
19
- const staticUsers = [
23
+ const staticUsers: UserResponse[] = [
20
24
  // By the order of...
21
25
  generateUser({
22
26
  id: 'tommy',
@@ -40,7 +44,7 @@ const staticUsers = [
40
44
  }),
41
45
  ];
42
46
 
43
- export const generateStaticUser = (userNumber) => {
47
+ export const generateStaticUser = (userNumber: number): UserResponse => {
44
48
  if (userNumber - 1 > staticUsers.length) {
45
49
  throw new Error(`Tried getting a static user that doesn't exist.
46
50
  Index: ${userNumber} , number of users: ${staticUsers.length}`);