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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Attachment/Gallery.js +16 -3
  3. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +8 -5
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -1
  8. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  9. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  10. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  11. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  12. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  13. package/lib/commonjs/components/Message/Message.js +12 -6
  14. package/lib/commonjs/components/Message/Message.js.map +1 -1
  15. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  16. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +14 -6
  17. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  18. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  19. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  20. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +3 -1
  21. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  22. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  23. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  24. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  25. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  26. package/lib/commonjs/components/MessageList/MessageList.js +9 -7
  27. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  28. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +18 -24
  29. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  30. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +1 -1
  31. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  32. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  33. package/lib/commonjs/components/MessageList/utils/getReadState.js +20 -0
  34. package/lib/commonjs/components/MessageList/utils/getReadState.js.map +1 -0
  35. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  36. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  37. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  38. package/lib/commonjs/components/Reply/Reply.js +2 -2
  39. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  40. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +1 -0
  41. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  42. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  43. package/lib/commonjs/components/index.js +15 -4
  44. package/lib/commonjs/components/index.js.map +1 -1
  45. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +5 -1
  46. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  47. package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -1
  48. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  49. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  50. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  51. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  52. package/lib/commonjs/contexts/pollContext/pollContext.js.map +1 -1
  53. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  54. package/lib/commonjs/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  55. package/lib/commonjs/hooks/index.js +11 -0
  56. package/lib/commonjs/hooks/index.js.map +1 -1
  57. package/lib/commonjs/i18n/en.json +3 -0
  58. package/lib/commonjs/i18n/es.json +3 -0
  59. package/lib/commonjs/i18n/fr.json +3 -0
  60. package/lib/commonjs/i18n/he.json +3 -0
  61. package/lib/commonjs/i18n/hi.json +2 -0
  62. package/lib/commonjs/i18n/it.json +3 -0
  63. package/lib/commonjs/i18n/ja.json +1 -0
  64. package/lib/commonjs/i18n/ko.json +1 -0
  65. package/lib/commonjs/i18n/nl.json +2 -0
  66. package/lib/commonjs/i18n/pt-br.json +3 -0
  67. package/lib/commonjs/i18n/ru.json +4 -0
  68. package/lib/commonjs/i18n/tr.json +2 -0
  69. package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
  70. package/lib/commonjs/utils/utils.js +1 -3
  71. package/lib/commonjs/utils/utils.js.map +1 -1
  72. package/lib/commonjs/version.json +1 -1
  73. package/lib/module/components/Attachment/Gallery.js +16 -3
  74. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  75. package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -1
  76. package/lib/module/components/Channel/Channel.js +8 -5
  77. package/lib/module/components/Channel/Channel.js.map +1 -1
  78. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -1
  79. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  80. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  81. package/lib/module/components/Chat/Chat.js.map +1 -1
  82. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +1 -1
  83. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  84. package/lib/module/components/Message/Message.js +12 -6
  85. package/lib/module/components/Message/Message.js.map +1 -1
  86. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  87. package/lib/module/components/Message/MessageSimple/MessageStatus.js +14 -6
  88. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  89. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  90. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  91. package/lib/module/components/Message/hooks/useCreateMessageContext.js +3 -1
  92. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  93. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  94. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  95. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  96. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  97. package/lib/module/components/MessageList/MessageList.js +9 -7
  98. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  99. package/lib/module/components/MessageList/hooks/useMessageList.js +18 -24
  100. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  101. package/lib/module/components/MessageList/utils/getGroupStyles.js +1 -1
  102. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  103. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  104. package/lib/module/components/MessageList/utils/getReadState.js +20 -0
  105. package/lib/module/components/MessageList/utils/getReadState.js.map +1 -0
  106. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  107. package/lib/module/components/Poll/components/Button.js.map +1 -1
  108. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  109. package/lib/module/components/Reply/Reply.js +2 -2
  110. package/lib/module/components/Reply/Reply.js.map +1 -1
  111. package/lib/module/components/Thread/components/ThreadFooterComponent.js +1 -0
  112. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  113. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  114. package/lib/module/components/index.js +15 -4
  115. package/lib/module/components/index.js.map +1 -1
  116. package/lib/module/contexts/channelsStateContext/useChannelState.js +5 -1
  117. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  118. package/lib/module/contexts/debugContext/DebugContext.js.map +1 -1
  119. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  120. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  121. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  122. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  123. package/lib/module/contexts/pollContext/pollContext.js.map +1 -1
  124. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  125. package/lib/module/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  126. package/lib/module/hooks/index.js +11 -0
  127. package/lib/module/hooks/index.js.map +1 -1
  128. package/lib/module/i18n/en.json +3 -0
  129. package/lib/module/i18n/es.json +3 -0
  130. package/lib/module/i18n/fr.json +3 -0
  131. package/lib/module/i18n/he.json +3 -0
  132. package/lib/module/i18n/hi.json +2 -0
  133. package/lib/module/i18n/it.json +3 -0
  134. package/lib/module/i18n/ja.json +1 -0
  135. package/lib/module/i18n/ko.json +1 -0
  136. package/lib/module/i18n/nl.json +2 -0
  137. package/lib/module/i18n/pt-br.json +3 -0
  138. package/lib/module/i18n/ru.json +4 -0
  139. package/lib/module/i18n/tr.json +2 -0
  140. package/lib/module/utils/removeReservedFields.js.map +1 -1
  141. package/lib/module/utils/utils.js +1 -3
  142. package/lib/module/utils/utils.js.map +1 -1
  143. package/lib/module/version.json +1 -1
  144. package/lib/typescript/components/Attachment/Gallery.d.ts +3 -3
  145. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  146. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +4 -3
  147. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts.map +1 -1
  148. package/lib/typescript/components/Channel/Channel.d.ts +3 -4
  149. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  150. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +2 -3
  151. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -1
  152. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  153. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  154. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts +4 -4
  155. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +1 -1
  156. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +1 -1
  157. package/lib/typescript/components/Chat/Chat.d.ts +0 -9
  158. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  159. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
  160. package/lib/typescript/components/Message/Message.d.ts +4 -5
  161. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  162. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -3
  163. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  164. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  165. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts.map +1 -1
  166. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
  167. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +2 -2
  168. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
  169. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  170. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  171. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts.map +1 -1
  172. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +2 -2
  173. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
  174. package/lib/typescript/components/MessageList/MessageList.d.ts +3 -3
  175. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  176. package/lib/typescript/components/MessageList/MessageSystem.d.ts +2 -2
  177. package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
  178. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +11 -10
  179. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  180. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
  181. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
  182. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts.map +1 -1
  183. package/lib/typescript/components/MessageList/utils/getReadState.d.ts +9 -0
  184. package/lib/typescript/components/MessageList/utils/getReadState.d.ts.map +1 -0
  185. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +2 -3
  186. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  187. package/lib/typescript/components/Poll/components/Button.d.ts +2 -3
  188. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  189. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +2 -3
  190. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  191. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  192. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
  193. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  194. package/lib/typescript/components/index.d.ts +2 -1
  195. package/lib/typescript/components/index.d.ts.map +1 -1
  196. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  197. package/lib/typescript/contexts/debugContext/DebugContext.d.ts +2 -3
  198. package/lib/typescript/contexts/debugContext/DebugContext.d.ts.map +1 -1
  199. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +3 -3
  200. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  201. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +6 -4
  202. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  203. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +4 -5
  204. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  205. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +24 -20
  206. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  207. package/lib/typescript/contexts/pollContext/pollContext.d.ts +2 -3
  208. package/lib/typescript/contexts/pollContext/pollContext.d.ts.map +1 -1
  209. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +4 -5
  210. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
  211. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts +3 -4
  212. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts.map +1 -1
  213. package/lib/typescript/hooks/index.d.ts +1 -0
  214. package/lib/typescript/hooks/index.d.ts.map +1 -1
  215. package/lib/typescript/hooks/useTranslatedMessage.d.ts +55 -55
  216. package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
  217. package/lib/typescript/i18n/en.json +3 -0
  218. package/lib/typescript/i18n/es.json +3 -0
  219. package/lib/typescript/i18n/fr.json +3 -0
  220. package/lib/typescript/i18n/he.json +3 -0
  221. package/lib/typescript/i18n/hi.json +2 -0
  222. package/lib/typescript/i18n/it.json +3 -0
  223. package/lib/typescript/i18n/ja.json +1 -0
  224. package/lib/typescript/i18n/ko.json +1 -0
  225. package/lib/typescript/i18n/nl.json +2 -0
  226. package/lib/typescript/i18n/pt-br.json +3 -0
  227. package/lib/typescript/i18n/ru.json +4 -0
  228. package/lib/typescript/i18n/tr.json +2 -0
  229. package/lib/typescript/utils/i18n/Streami18n.d.ts +3 -0
  230. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  231. package/lib/typescript/utils/removeReservedFields.d.ts +2 -3
  232. package/lib/typescript/utils/removeReservedFields.d.ts.map +1 -1
  233. package/lib/typescript/utils/utils.d.ts +5 -6
  234. package/lib/typescript/utils/utils.d.ts.map +1 -1
  235. package/package.json +2 -2
  236. package/src/components/Attachment/Gallery.tsx +22 -7
  237. package/src/components/Attachment/ImageReloadIndicator.tsx +4 -5
  238. package/src/components/Channel/Channel.tsx +12 -9
  239. package/src/components/Channel/__tests__/Channel.test.js +2 -0
  240. package/src/components/Channel/hooks/useChannelDataState.ts +2 -4
  241. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  242. package/src/components/Chat/Chat.tsx +0 -9
  243. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +8 -7
  244. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +5 -4
  245. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +5 -4
  246. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +3 -2
  247. package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +6 -1
  248. package/src/components/Message/Message.tsx +10 -13
  249. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -3
  250. package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -17
  251. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +3 -3
  252. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +11 -5
  253. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +5 -4
  254. package/src/components/Message/MessageSimple/utils/renderText.tsx +2 -3
  255. package/src/components/Message/hooks/useCreateMessageContext.ts +3 -0
  256. package/src/components/Message/hooks/useMessageActionHandlers.ts +1 -3
  257. package/src/components/Message/hooks/useMessageActions.tsx +4 -3
  258. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +1 -0
  259. package/src/components/MessageList/MessageList.tsx +24 -25
  260. package/src/components/MessageList/MessageSystem.tsx +2 -2
  261. package/src/components/MessageList/hooks/useMessageList.ts +48 -59
  262. package/src/components/MessageList/utils/getGroupStyles.ts +7 -5
  263. package/src/components/MessageList/utils/getLastReceivedMessage.ts +3 -3
  264. package/src/components/MessageList/utils/getReadState.ts +27 -0
  265. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +2 -3
  266. package/src/components/MessageMenu/hooks/useFetchReactions.ts +2 -3
  267. package/src/components/Poll/components/Button.tsx +2 -4
  268. package/src/components/Poll/components/PollResults/PollResultItem.tsx +2 -3
  269. package/src/components/Reply/Reply.tsx +1 -2
  270. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +0 -15
  271. package/src/components/Thread/components/ThreadFooterComponent.tsx +1 -0
  272. package/src/components/ThreadList/ThreadListItem.tsx +6 -4
  273. package/src/components/index.ts +2 -1
  274. package/src/contexts/channelsStateContext/useChannelState.ts +5 -1
  275. package/src/contexts/debugContext/DebugContext.tsx +2 -4
  276. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +5 -4
  277. package/src/contexts/messageContext/MessageContext.tsx +6 -4
  278. package/src/contexts/messageInputContext/MessageInputContext.tsx +5 -5
  279. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +6 -5
  280. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +3 -5
  281. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +14 -9
  282. package/src/contexts/messagesContext/MessagesContext.tsx +25 -20
  283. package/src/contexts/pollContext/pollContext.tsx +2 -4
  284. package/src/contexts/threadContext/ThreadContext.tsx +4 -6
  285. package/src/contexts/threadsContext/ThreadListItemContext.tsx +3 -5
  286. package/src/hooks/index.ts +1 -0
  287. package/src/i18n/en.json +3 -0
  288. package/src/i18n/es.json +3 -0
  289. package/src/i18n/fr.json +3 -0
  290. package/src/i18n/he.json +3 -0
  291. package/src/i18n/hi.json +2 -0
  292. package/src/i18n/it.json +3 -0
  293. package/src/i18n/ja.json +1 -0
  294. package/src/i18n/ko.json +1 -0
  295. package/src/i18n/nl.json +2 -0
  296. package/src/i18n/pt-br.json +3 -0
  297. package/src/i18n/ru.json +4 -0
  298. package/src/i18n/tr.json +2 -0
  299. package/src/utils/removeReservedFields.ts +3 -5
  300. package/src/utils/utils.ts +5 -10
  301. package/src/version.json +1 -1
  302. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js +0 -20
  303. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js.map +0 -1
  304. package/lib/commonjs/components/MessageList/utils/getReadStates.js +0 -34
  305. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +0 -1
  306. package/lib/module/components/MessageList/hooks/useLastReadData.js +0 -20
  307. package/lib/module/components/MessageList/hooks/useLastReadData.js.map +0 -1
  308. package/lib/module/components/MessageList/utils/getReadStates.js +0 -34
  309. package/lib/module/components/MessageList/utils/getReadStates.js.map +0 -1
  310. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts +0 -12
  311. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts.map +0 -1
  312. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +0 -5
  313. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +0 -1
  314. package/src/components/MessageList/hooks/useLastReadData.ts +0 -29
  315. package/src/components/MessageList/utils/getReadStates.ts +0 -55
@@ -45,6 +45,7 @@ export const useCreateMessagesContext = ({
45
45
  hasCreatePoll,
46
46
  ImageLoadingFailedIndicator,
47
47
  ImageLoadingIndicator,
48
+ ImageReloadIndicator,
48
49
  initialScrollToFirstUnreadMessage,
49
50
  InlineDateSeparator,
50
51
  InlineUnreadIndicator,
@@ -162,6 +163,7 @@ export const useCreateMessagesContext = ({
162
163
  hasCreatePoll,
163
164
  ImageLoadingFailedIndicator,
164
165
  ImageLoadingIndicator,
166
+ ImageReloadIndicator,
165
167
  initialScrollToFirstUnreadMessage,
166
168
  InlineDateSeparator,
167
169
  InlineUnreadIndicator,
@@ -308,15 +308,6 @@ const ChatWithContext = (props: PropsWithChildren<ChatProps>) => {
308
308
  * - connectionRecovering - whether or not websocket is reconnecting
309
309
  * - isOnline - whether or not set user is active
310
310
  * - setActiveChannel - function to set the currently active channel
311
- *
312
- * The Chat Component takes the following generics in order:
313
- * - At (AttachmentType) - custom Attachment object extension
314
- * - Ct (ChannelType) - custom Channel object extension
315
- * - Co (CommandType) - custom Command string union extension
316
- * - Ev (EventType) - custom Event object extension
317
- * - Me (MessageType) - custom Message object extension
318
- * - Re (ReactionType) - custom Reaction object extension
319
- * - Us (UserType) - custom User object extension
320
311
  */
321
312
  export const Chat = (props: PropsWithChildren<ChatProps>) => {
322
313
  const { style } = useOverlayContext();
@@ -4,6 +4,8 @@ import type { SharedValue } from 'react-native-reanimated';
4
4
 
5
5
  import { act, fireEvent, render, screen, waitFor } from '@testing-library/react-native';
6
6
 
7
+ import { LocalMessage } from 'stream-chat';
8
+
7
9
  import {
8
10
  ImageGalleryContext,
9
11
  ImageGalleryContextValue,
@@ -18,7 +20,6 @@ import {
18
20
  } from '../../../mock-builders/generator/attachment';
19
21
  import { generateMessage } from '../../../mock-builders/generator/message';
20
22
 
21
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
22
23
  import { ImageGallery } from '../ImageGallery';
23
24
 
24
25
  jest.mock('../../../native.ts', () => {
@@ -56,7 +57,7 @@ describe('ImageGallery', () => {
56
57
  generateVideoAttachment({ type: 'video' }),
57
58
  ],
58
59
  }),
59
- ] as unknown as MessageType[],
60
+ ] as unknown as LocalMessage[],
60
61
  }),
61
62
  );
62
63
 
@@ -73,7 +74,7 @@ describe('ImageGallery', () => {
73
74
  });
74
75
  render(
75
76
  getComponent({
76
- messages: [message] as unknown as MessageType[],
77
+ messages: [message] as unknown as LocalMessage[],
77
78
  }),
78
79
  );
79
80
 
@@ -102,7 +103,7 @@ describe('ImageGallery', () => {
102
103
  generateMessage({
103
104
  attachments: [generateVideoAttachment({ type: 'video' })],
104
105
  }),
105
- ] as unknown as MessageType[],
106
+ ] as unknown as LocalMessage[],
106
107
  }),
107
108
  );
108
109
 
@@ -128,7 +129,7 @@ describe('ImageGallery', () => {
128
129
 
129
130
  render(
130
131
  getComponent({
131
- messages: [message] as unknown as MessageType[],
132
+ messages: [message] as unknown as LocalMessage[],
132
133
  }),
133
134
  );
134
135
 
@@ -163,7 +164,7 @@ describe('ImageGallery', () => {
163
164
  generateMessage({
164
165
  attachments: [generateVideoAttachment({ type: 'video' })],
165
166
  }),
166
- ] as unknown as MessageType[],
167
+ ] as unknown as LocalMessage[],
167
168
  }),
168
169
  );
169
170
 
@@ -193,7 +194,7 @@ describe('ImageGallery', () => {
193
194
  });
194
195
  render(
195
196
  getComponent({
196
- messages: [message] as unknown as MessageType[],
197
+ messages: [message] as unknown as LocalMessage[],
197
198
  }),
198
199
  );
199
200
 
@@ -7,6 +7,8 @@ import { ReactTestInstance } from 'react-test-renderer';
7
7
 
8
8
  import { render, screen, userEvent, waitFor } from '@testing-library/react-native';
9
9
 
10
+ import { LocalMessage } from 'stream-chat';
11
+
10
12
  import { Chat } from '../../../components/Chat/Chat';
11
13
  import {
12
14
  ImageGalleryContext,
@@ -20,7 +22,6 @@ import {
20
22
  import { generateMessage } from '../../../mock-builders/generator/message';
21
23
  import { getTestClientWithUser } from '../../../mock-builders/mock';
22
24
  import { NativeHandlers } from '../../../native';
23
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
24
25
  import { ImageGallery, ImageGalleryCustomComponents } from '../ImageGallery';
25
26
 
26
27
  jest.mock('../../../native.ts', () => {
@@ -76,7 +77,7 @@ describe('ImageGalleryFooter', () => {
76
77
  generateMessage({
77
78
  attachments: [generateVideoAttachment({ type: 'video' })],
78
79
  }),
79
- ] as unknown as MessageType[],
80
+ ] as unknown as LocalMessage[],
80
81
  } as unknown as ImageGalleryContextValue
81
82
  }
82
83
  >
@@ -131,7 +132,7 @@ describe('ImageGalleryFooter', () => {
131
132
  generateMessage({
132
133
  attachments: [generateVideoAttachment({ type: 'video' })],
133
134
  }),
134
- ] as unknown as MessageType[],
135
+ ] as unknown as LocalMessage[],
135
136
  } as unknown as ImageGalleryContextValue
136
137
  }
137
138
  >
@@ -174,7 +175,7 @@ describe('ImageGalleryFooter', () => {
174
175
  generateMessage({
175
176
  attachments: [generateImageAttachment()],
176
177
  }),
177
- ] as unknown as MessageType[],
178
+ ] as unknown as LocalMessage[],
178
179
  } as unknown as ImageGalleryContextValue
179
180
  }
180
181
  >
@@ -7,6 +7,8 @@ import { act } from 'react-test-renderer';
7
7
 
8
8
  import { render, screen, userEvent, waitFor } from '@testing-library/react-native';
9
9
 
10
+ import { LocalMessage } from 'stream-chat';
11
+
10
12
  import { Chat } from '../../../components/Chat/Chat';
11
13
  import {
12
14
  ImageGalleryContext,
@@ -24,7 +26,6 @@ import {
24
26
  import { generateMessage } from '../../../mock-builders/generator/message';
25
27
  import { getTestClientWithUser } from '../../../mock-builders/mock';
26
28
 
27
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
28
29
  import { ImageGallery, ImageGalleryCustomComponents } from '../ImageGallery';
29
30
 
30
31
  jest.mock('../../../native.ts', () => {
@@ -71,7 +72,7 @@ describe('ImageGalleryHeader', () => {
71
72
  generateMessage({
72
73
  attachments: [generateImageAttachment()],
73
74
  }),
74
- ] as unknown as MessageType[],
75
+ ] as unknown as LocalMessage[],
75
76
  } as unknown as ImageGalleryContextValue
76
77
  }
77
78
  >
@@ -118,7 +119,7 @@ describe('ImageGalleryHeader', () => {
118
119
  generateMessage({
119
120
  attachments: [generateVideoAttachment({ type: 'video' })],
120
121
  }),
121
- ] as unknown as MessageType[],
122
+ ] as unknown as LocalMessage[],
122
123
  } as unknown as ImageGalleryContextValue
123
124
  }
124
125
  >
@@ -158,7 +159,7 @@ describe('ImageGalleryHeader', () => {
158
159
  generateMessage({
159
160
  attachments: [generateImageAttachment()],
160
161
  }),
161
- ] as unknown as MessageType[],
162
+ ] as unknown as LocalMessage[],
162
163
  } as unknown as ImageGalleryContextValue
163
164
  }
164
165
  >
@@ -7,6 +7,8 @@ import { act } from 'react-test-renderer';
7
7
 
8
8
  import { fireEvent, render, waitFor } from '@testing-library/react-native';
9
9
 
10
+ import { LocalMessage } from 'stream-chat';
11
+
10
12
  import { Chat } from '../../../components/Chat/Chat';
11
13
  import {
12
14
  ImageGalleryContext,
@@ -20,7 +22,6 @@ import { generateImageAttachment } from '../../../mock-builders/generator/attach
20
22
  import { generateMessage } from '../../../mock-builders/generator/message';
21
23
  import { getTestClientWithUser } from '../../../mock-builders/mock';
22
24
 
23
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
24
25
  import { ImageGalleryOverlay } from '../components/ImageGalleryOverlay';
25
26
 
26
27
  describe('ImageGalleryOverlay', () => {
@@ -39,7 +40,7 @@ describe('ImageGalleryOverlay', () => {
39
40
  generateMessage({
40
41
  attachments: [generateImageAttachment()],
41
42
  }),
42
- ] as unknown as MessageType[],
43
+ ] as unknown as LocalMessage[],
43
44
  } as unknown as ImageGalleryContextValue
44
45
  }
45
46
  >
@@ -58,7 +58,12 @@ export class KeyboardCompatibleView extends React.Component<
58
58
 
59
59
  _relativeKeyboardHeight(keyboardFrame: KeyboardMetrics) {
60
60
  const frame = this._frame;
61
- if (!frame || !keyboardFrame) {
61
+ /**
62
+ * With iOS 14 & Reduce Motion > Prefer Cross-Fade Transitions enabled, the keyboard position
63
+ * height is reported differently (0 instead of Y position value) which caused the view to take full height
64
+ * of the screen.
65
+ */
66
+ if (!frame || !keyboardFrame || keyboardFrame.screenY === 0) {
62
67
  return 0;
63
68
  }
64
69
 
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo, useState } from 'react';
2
2
  import { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';
3
3
 
4
- import type { Attachment, UserResponse } from 'stream-chat';
4
+ import type { Attachment, LocalMessage, UserResponse } from 'stream-chat';
5
5
 
6
6
  import { useCreateMessageContext } from './hooks/useCreateMessageContext';
7
7
  import { useMessageActionHandlers } from './hooks/useMessageActionHandlers';
@@ -41,11 +41,7 @@ import {
41
41
  MessageStatusTypes,
42
42
  } from '../../utils/utils';
43
43
  import type { Thumbnail } from '../Attachment/utils/buildGallery/types';
44
-
45
- import {
46
- isMessageWithStylesReadByAndDateSeparator,
47
- MessageType,
48
- } from '../MessageList/hooks/useMessageList';
44
+ import { getReadState } from '../MessageList/utils/getReadState';
49
45
 
50
46
  export type TouchableEmitter =
51
47
  | 'fileAttachment'
@@ -114,7 +110,7 @@ export type MessagePressableHandlerPayload = PressableHandlerPayload & {
114
110
  /**
115
111
  * Message object, on which interaction occurred.
116
112
  */
117
- message?: MessageType;
113
+ message?: LocalMessage;
118
114
  };
119
115
 
120
116
  export type MessageActionHandlers = {
@@ -130,7 +126,7 @@ export type MessageActionHandlers = {
130
126
  toggleMuteUser: () => Promise<void>;
131
127
  toggleReaction: (reactionType: string) => Promise<void>;
132
128
  unpinMessage: () => Promise<void>;
133
- threadReply?: (message: MessageType) => Promise<void>;
129
+ threadReply?: (message: LocalMessage) => Promise<void>;
134
130
  };
135
131
 
136
132
  export type MessagePropsWithContext = Pick<
@@ -194,7 +190,7 @@ export type MessagePropsWithContext = Pick<
194
190
  *
195
191
  * @param message A message object to open the thread upon.
196
192
  */
197
- onThreadSelect?: (message: MessageType) => void;
193
+ onThreadSelect?: (message: LocalMessage) => void;
198
194
  showUnreadUnderlay?: boolean;
199
195
  style?: StyleProp<ViewStyle>;
200
196
  };
@@ -267,6 +263,7 @@ const MessageWithContext = (props: MessagePropsWithContext) => {
267
263
  threadList = false,
268
264
  updateMessage,
269
265
  } = props;
266
+ const { read } = useChannelContext();
270
267
  const isMessageAIGenerated = messagesContext.isMessageAIGenerated;
271
268
  const isAIGenerated = useMemo(
272
269
  () => isMessageAIGenerated(message),
@@ -281,6 +278,7 @@ const MessageWithContext = (props: MessagePropsWithContext) => {
281
278
  screenPadding,
282
279
  },
283
280
  } = useTheme();
281
+ const readBy = useMemo(() => getReadState(message, read), [message, read]);
284
282
 
285
283
  const showMessageOverlay = async (showMessageReactions = false, selectedReaction?: string) => {
286
284
  await dismissKeyboard();
@@ -312,7 +310,7 @@ const MessageWithContext = (props: MessagePropsWithContext) => {
312
310
  }
313
311
  };
314
312
 
315
- const onPressQuotedMessage = (quotedMessage: MessageType) => {
313
+ const onPressQuotedMessage = (quotedMessage: LocalMessage) => {
316
314
  if (!goToMessage) {
317
315
  return;
318
316
  }
@@ -329,7 +327,7 @@ const MessageWithContext = (props: MessagePropsWithContext) => {
329
327
  if (isEditedMessage(message)) {
330
328
  setIsEditedMessageOpen((prevState) => !prevState);
331
329
  }
332
- const quotedMessage = message.quoted_message as MessageType;
330
+ const quotedMessage = message.quoted_message;
333
331
  if (error) {
334
332
  setIsErrorInMessage(true);
335
333
  /**
@@ -693,6 +691,7 @@ const MessageWithContext = (props: MessagePropsWithContext) => {
693
691
  otherAttachments: attachments.other,
694
692
  preventPress,
695
693
  reactions,
694
+ readBy,
696
695
  setIsEditedMessageOpen,
697
696
  showAvatar,
698
697
  showMessageOverlay,
@@ -814,8 +813,6 @@ const areEqual = (prevProps: MessagePropsWithContext, nextProps: MessagePropsWit
814
813
 
815
814
  const messageEqual =
816
815
  isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&
817
- (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===
818
- (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&
819
816
  prevMessage.status === nextMessage.status &&
820
817
  prevMessage.type === nextMessage.type &&
821
818
  prevMessage.text === nextMessage.text &&
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import { StyleSheet, Text, View } from 'react-native';
3
3
 
4
- import type { Attachment } from 'stream-chat';
4
+ import type { Attachment, LocalMessage } from 'stream-chat';
5
5
 
6
6
  import type { MessageStatusProps } from './MessageStatus';
7
7
 
@@ -21,7 +21,6 @@ import { useTranslationContext } from '../../../contexts/translationContext/Tran
21
21
  import { Eye } from '../../../icons';
22
22
 
23
23
  import { isEditedMessage, MessageStatusTypes } from '../../../utils/utils';
24
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
25
24
 
26
25
  type MessageFooterComponentProps = {
27
26
  date?: string | Date;
@@ -271,7 +270,7 @@ export type MessageFooterProps = Partial<Pick<ChannelContextValue, 'members'>> &
271
270
  MessageFooterComponentProps & {
272
271
  alignment?: Alignment;
273
272
  lastGroupMessage?: boolean;
274
- message?: MessageType;
273
+ message?: LocalMessage;
275
274
  MessageStatus?: React.ComponentType<MessageStatusProps>;
276
275
  otherAttachments?: Attachment[];
277
276
  showMessageStatus?: boolean;
@@ -10,16 +10,16 @@ import { useTheme } from '../../../contexts/themeContext/ThemeContext';
10
10
  import { Check } from '../../../icons/Check';
11
11
  import { CheckAll } from '../../../icons/CheckAll';
12
12
  import { Time } from '../../../icons/Time';
13
-
14
13
  import { MessageStatusTypes } from '../../../utils/utils';
15
14
 
16
- import { isMessageWithStylesReadByAndDateSeparator } from '../../MessageList/hooks/useMessageList';
17
-
18
- export type MessageStatusPropsWithContext = Pick<MessageContextValue, 'message' | 'threadList'>;
15
+ export type MessageStatusPropsWithContext = Pick<
16
+ MessageContextValue,
17
+ 'message' | 'readBy' | 'threadList'
18
+ >;
19
19
 
20
20
  const MessageStatusWithContext = (props: MessageStatusPropsWithContext) => {
21
21
  const { channel } = useChannelContext();
22
- const { message, threadList } = props;
22
+ const { message, readBy, threadList } = props;
23
23
 
24
24
  const {
25
25
  theme: {
@@ -42,17 +42,17 @@ const MessageStatusWithContext = (props: MessageStatusPropsWithContext) => {
42
42
  return null;
43
43
  }
44
44
 
45
- if (isMessageWithStylesReadByAndDateSeparator(message)) {
45
+ if (readBy) {
46
46
  const members = channel?.state.members;
47
47
  const otherMembers = Object.values(members).filter(
48
48
  (member) => member.user_id !== message.user?.id,
49
49
  );
50
50
  const hasOtherMembersGreaterThanOne = otherMembers.length > 1;
51
- const hasReadByGreaterThanOne = typeof message.readBy === 'number' && message.readBy > 1;
51
+ const hasReadByGreaterThanOne = typeof readBy === 'number' && readBy > 1;
52
52
  const shouldDisplayReadByCount = hasOtherMembersGreaterThanOne && hasReadByGreaterThanOne;
53
53
  const countOfReadBy =
54
- typeof message.readBy === 'number' && hasOtherMembersGreaterThanOne ? message.readBy - 1 : 0;
55
- const showDoubleCheck = hasReadByGreaterThanOne || message.readBy === true;
54
+ typeof readBy === 'number' && hasOtherMembersGreaterThanOne ? readBy - 1 : 0;
55
+ const showDoubleCheck = hasReadByGreaterThanOne || readBy === true;
56
56
 
57
57
  return (
58
58
  <View style={[styles.statusContainer, statusContainer]}>
@@ -90,19 +90,21 @@ const areEqual = (
90
90
  prevProps: MessageStatusPropsWithContext,
91
91
  nextProps: MessageStatusPropsWithContext,
92
92
  ) => {
93
- const { message: prevMessage, threadList: prevThreadList } = prevProps;
94
- const { message: nextMessage, threadList: nextThreadList } = nextProps;
93
+ const { message: prevMessage, readBy: prevReadBy, threadList: prevThreadList } = prevProps;
94
+ const { message: nextMessage, readBy: nextReadBy, threadList: nextThreadList } = nextProps;
95
95
 
96
96
  const threadListEqual = prevThreadList === nextThreadList;
97
97
  if (!threadListEqual) {
98
98
  return false;
99
99
  }
100
100
 
101
+ const readByEqual = prevReadBy === nextReadBy;
102
+ if (!readByEqual) {
103
+ return false;
104
+ }
105
+
101
106
  const messageEqual =
102
- prevMessage.status === nextMessage.status &&
103
- prevMessage.type === nextMessage.type &&
104
- (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===
105
- (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy);
107
+ prevMessage.status === nextMessage.status && prevMessage.type === nextMessage.type;
106
108
  if (!messageEqual) {
107
109
  return false;
108
110
  }
@@ -118,9 +120,9 @@ const MemoizedMessageStatus = React.memo(
118
120
  export type MessageStatusProps = Partial<MessageStatusPropsWithContext>;
119
121
 
120
122
  export const MessageStatus = (props: MessageStatusProps) => {
121
- const { message, threadList } = useMessageContext();
123
+ const { message, readBy, threadList } = useMessageContext();
122
124
 
123
- return <MemoizedMessageStatus {...{ message, threadList }} {...props} />;
125
+ return <MemoizedMessageStatus {...{ message, readBy, threadList }} {...props} />;
124
126
  };
125
127
 
126
128
  MessageStatus.displayName = 'MessageStatus{messageSimple{status}}';
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';
3
3
 
4
+ import { LocalMessage } from 'stream-chat';
5
+
4
6
  import { renderText, RenderTextParams } from './utils/renderText';
5
7
 
6
8
  import {
@@ -16,8 +18,6 @@ import { useTheme } from '../../../contexts/themeContext/ThemeContext';
16
18
  import type { MarkdownStyle, Theme } from '../../../contexts/themeContext/utils/theme';
17
19
  import { useTranslatedMessage } from '../../../hooks/useTranslatedMessage';
18
20
 
19
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
20
-
21
21
  const styles = StyleSheet.create({
22
22
  textContainer: { maxWidth: 250, paddingHorizontal: 16 },
23
23
  });
@@ -71,7 +71,7 @@ const MessageTextContainerWithContext = (props: MessageTextContainerPropsWithCon
71
71
  },
72
72
  } = theme;
73
73
 
74
- const translatedMessage = useTranslatedMessage(message) as MessageType;
74
+ const translatedMessage = useTranslatedMessage(message) as LocalMessage;
75
75
 
76
76
  if (!message.text) {
77
77
  return null;
@@ -72,26 +72,32 @@ describe('MessageStatus', () => {
72
72
 
73
73
  it('should render message status with read by container', async () => {
74
74
  const user = generateUser();
75
- const message = generateMessage({ readBy: 2, user });
75
+ const message = generateMessage({ user });
76
+ const readBy = 2;
76
77
 
77
78
  const { getByTestId, getByText, rerender, toJSON } = renderMessageStatus({
78
79
  lastReceivedId: message.id,
79
80
  message,
81
+ readBy,
80
82
  });
81
83
 
82
84
  await waitFor(() => {
83
85
  expect(getByTestId('read-by-container')).toBeTruthy();
84
- expect(getByText((message.readBy - 1).toString())).toBeTruthy();
86
+ expect(getByText((readBy - 1).toString())).toBeTruthy();
85
87
  });
86
88
 
87
89
  const staticUser = generateStaticUser(0);
88
- const staticMessage = generateMessage({ readBy: 2, staticUser });
90
+ const staticMessage = generateMessage({ readBy, user: staticUser });
89
91
 
90
92
  rerender(
91
93
  <ChannelsStateProvider>
92
94
  <Chat client={chatClient} i18nInstance={i18nInstance}>
93
95
  <Channel channel={channel}>
94
- <MessageStatus lastReceivedId={staticMessage.id} message={staticMessage} />
96
+ <MessageStatus
97
+ lastReceivedId={staticMessage.id}
98
+ message={staticMessage}
99
+ readBy={readBy}
100
+ />
95
101
  </Channel>
96
102
  </Chat>
97
103
  </ChannelsStateProvider>,
@@ -100,7 +106,7 @@ describe('MessageStatus', () => {
100
106
  await waitFor(() => {
101
107
  expect(toJSON()).toMatchSnapshot();
102
108
  expect(getByTestId('read-by-container')).toBeTruthy();
103
- expect(getByText((staticMessage.readBy - 1).toString())).toBeTruthy();
109
+ expect(getByText((readBy - 1).toString())).toBeTruthy();
104
110
  });
105
111
  });
106
112
 
@@ -3,6 +3,8 @@ import { Text } from 'react-native';
3
3
 
4
4
  import { cleanup, render, waitFor } from '@testing-library/react-native';
5
5
 
6
+ import { LocalMessage } from 'stream-chat';
7
+
6
8
  import { OverlayProvider } from '../../../../contexts/overlayContext/OverlayProvider';
7
9
  import { ThemeProvider } from '../../../../contexts/themeContext/ThemeContext';
8
10
  import { defaultTheme } from '../../../../contexts/themeContext/utils/theme';
@@ -17,7 +19,6 @@ import { generateStaticUser } from '../../../../mock-builders/generator/user';
17
19
  import { getTestClientWithUser } from '../../../../mock-builders/mock';
18
20
  import { Channel } from '../../../Channel/Channel';
19
21
  import { Chat } from '../../../Chat/Chat';
20
- import type { MessageType } from '../../../MessageList/hooks/useMessageList';
21
22
  import { MessageList } from '../../../MessageList/MessageList';
22
23
  import { MessageTextContainer } from '../MessageTextContainer';
23
24
 
@@ -31,7 +32,7 @@ describe('MessageTextContainer', () => {
31
32
  });
32
33
  const { getByTestId, getByText, rerender, toJSON } = render(
33
34
  <ThemeProvider theme={defaultTheme}>
34
- <MessageTextContainer message={message as unknown as MessageType} />
35
+ <MessageTextContainer message={message as unknown as LocalMessage} />
35
36
  </ThemeProvider>,
36
37
  );
37
38
 
@@ -43,7 +44,7 @@ describe('MessageTextContainer', () => {
43
44
  rerender(
44
45
  <ThemeProvider theme={defaultTheme}>
45
46
  <MessageTextContainer
46
- message={message as unknown as MessageType}
47
+ message={message as unknown as LocalMessage}
47
48
  MessageText={({ message }) => <Text testID='message-text'>{message?.text}</Text>}
48
49
  />
49
50
  </ThemeProvider>,
@@ -61,7 +62,7 @@ describe('MessageTextContainer', () => {
61
62
 
62
63
  rerender(
63
64
  <ThemeProvider theme={defaultTheme}>
64
- <MessageTextContainer message={staticMessage as unknown as MessageType} />
65
+ <MessageTextContainer message={staticMessage as unknown as LocalMessage} />
65
66
  </ThemeProvider>,
66
67
  );
67
68
 
@@ -26,7 +26,7 @@ import {
26
26
  State,
27
27
  } from 'simple-markdown';
28
28
 
29
- import type { UserResponse } from 'stream-chat';
29
+ import type { LocalMessage, UserResponse } from 'stream-chat';
30
30
 
31
31
  import { generateMarkdownText } from './generateMarkdownText';
32
32
 
@@ -34,7 +34,6 @@ import type { MessageContextValue } from '../../../../contexts/messageContext/Me
34
34
  import type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';
35
35
 
36
36
  import { escapeRegExp } from '../../../../utils/utils';
37
- import type { MessageType } from '../../../MessageList/hooks/useMessageList';
38
37
 
39
38
  type ReactNodeOutput = NodeOutput<React.ReactNode>;
40
39
  type ReactOutput = Output<React.ReactNode>;
@@ -162,7 +161,7 @@ export type RenderTextParams = Partial<
162
161
  Pick<MessageContextValue, 'onLongPress' | 'onPress' | 'preventPress'>
163
162
  > & {
164
163
  colors: typeof Colors;
165
- message: MessageType;
164
+ message: LocalMessage;
166
165
  markdownRules?: MarkdownRules;
167
166
  markdownStyles?: MarkdownStyle;
168
167
  messageOverlay?: boolean;
@@ -34,6 +34,7 @@ export const useCreateMessageContext = ({
34
34
  otherAttachments,
35
35
  preventPress,
36
36
  reactions,
37
+ readBy,
37
38
  setIsEditedMessageOpen,
38
39
  showAvatar,
39
40
  showMessageOverlay,
@@ -81,6 +82,7 @@ export const useCreateMessageContext = ({
81
82
  otherAttachments,
82
83
  preventPress,
83
84
  reactions,
85
+ readBy,
84
86
  setIsEditedMessageOpen,
85
87
  showAvatar,
86
88
  showMessageOverlay,
@@ -103,6 +105,7 @@ export const useCreateMessageContext = ({
103
105
  stringifiedMessage,
104
106
  myMessageThemeString,
105
107
  reactionsValue,
108
+ readBy,
106
109
  showAvatar,
107
110
  showMessageStatus,
108
111
  threadList,
@@ -1,7 +1,5 @@
1
1
  import { Alert } from 'react-native';
2
2
 
3
- import type { MessageResponse } from 'stream-chat';
4
-
5
3
  import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
6
4
  import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
7
5
  import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
@@ -62,7 +60,7 @@ export const useMessageActionHandlers = ({
62
60
  { style: 'cancel', text: t('Cancel') },
63
61
  {
64
62
  onPress: async () => {
65
- await deleteMessage(message as MessageResponse);
63
+ await deleteMessage(message);
66
64
  },
67
65
  style: 'destructive',
68
66
  text: t('Delete'),
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
 
3
+ import { LocalMessage } from 'stream-chat';
4
+
3
5
  import { useMessageActionHandlers } from './useMessageActionHandlers';
4
6
 
5
7
  import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
@@ -27,7 +29,6 @@ import {
27
29
  import { removeReservedFields } from '../../../utils/removeReservedFields';
28
30
  import { MessageStatusTypes } from '../../../utils/utils';
29
31
 
30
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
31
32
  import type { MessageActionType } from '../../MessageMenu/MessageActionListItem';
32
33
 
33
34
  export type MessageActionsHookProps = Pick<
@@ -60,7 +61,7 @@ export type MessageActionsHookProps = Pick<
60
61
  Pick<ThreadContextValue, 'openThread'> &
61
62
  Pick<MessageContextValue, 'dismissOverlay' | 'message'> &
62
63
  Pick<TranslationContextValue, 't'> & {
63
- onThreadSelect?: (message: MessageType) => void;
64
+ onThreadSelect?: (message: LocalMessage) => void;
64
65
  };
65
66
 
66
67
  export const useMessageActions = ({
@@ -293,7 +294,7 @@ export const useMessageActions = ({
293
294
  dismissOverlay();
294
295
  const messageWithoutReservedFields = removeReservedFields(message);
295
296
  if (handleRetry) {
296
- handleRetry(messageWithoutReservedFields as MessageType);
297
+ handleRetry(messageWithoutReservedFields as LocalMessage);
297
298
  }
298
299
 
299
300
  await handleResendMessage();
@@ -166,6 +166,7 @@ const styles = StyleSheet.create({
166
166
  alignItems: 'center',
167
167
  borderRadius: 50,
168
168
  justifyContent: 'center',
169
+ marginLeft: 8,
169
170
  },
170
171
  });
171
172