stream-chat-react-native-core 7.0.0-rc.8 → 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 (498) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js +19 -9
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +3 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/Gallery.js +16 -3
  7. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -1
  9. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
  10. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  11. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
  12. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  13. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
  14. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  15. package/lib/commonjs/components/Channel/Channel.js +320 -310
  16. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  17. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -1
  18. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  19. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  20. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +133 -147
  21. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  22. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  23. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
  24. package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  25. package/lib/commonjs/components/Message/Message.js +14 -7
  26. package/lib/commonjs/components/Message/Message.js.map +1 -1
  27. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  28. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +70 -54
  29. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  30. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +14 -6
  31. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  32. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  33. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  34. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +3 -1
  35. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  36. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  37. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  38. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +25 -39
  39. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  40. package/lib/commonjs/components/MessageInput/InputButtons.js +18 -15
  41. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  42. package/lib/commonjs/components/MessageInput/MessageInput.js +96 -74
  43. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  44. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  45. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  46. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +4 -4
  47. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -1
  48. package/lib/commonjs/components/MessageList/MessageList.js +281 -223
  49. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  50. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +65 -48
  51. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  52. package/lib/commonjs/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  53. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +1 -1
  54. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  55. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  56. package/lib/commonjs/components/MessageList/utils/getReadState.js +20 -0
  57. package/lib/commonjs/components/MessageList/utils/getReadState.js.map +1 -0
  58. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  59. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  60. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  61. package/lib/commonjs/components/Reply/Reply.js +2 -2
  62. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  63. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +24 -6
  64. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  65. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  66. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +10 -6
  67. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
  68. package/lib/commonjs/components/index.js +15 -4
  69. package/lib/commonjs/components/index.js.map +1 -1
  70. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  71. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +5 -1
  72. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  73. package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -1
  74. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  75. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  76. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +535 -523
  77. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  78. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
  79. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  80. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
  81. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  82. package/lib/commonjs/contexts/messageInputContext/utils/utils.js +4 -4
  83. package/lib/commonjs/contexts/messageInputContext/utils/utils.js.map +1 -1
  84. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  85. package/lib/commonjs/contexts/pollContext/pollContext.js.map +1 -1
  86. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +23 -14
  87. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  88. package/lib/commonjs/contexts/themeContext/utils/theme.js +2 -1
  89. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  90. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  91. package/lib/commonjs/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  92. package/lib/commonjs/hooks/index.js +22 -0
  93. package/lib/commonjs/hooks/index.js.map +1 -1
  94. package/lib/commonjs/hooks/useAudioPlayer.js +60 -69
  95. package/lib/commonjs/hooks/useAudioPlayer.js.map +1 -1
  96. package/lib/commonjs/hooks/useStableCallback.js +13 -0
  97. package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
  98. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  99. package/lib/commonjs/i18n/en.json +3 -0
  100. package/lib/commonjs/i18n/es.json +3 -0
  101. package/lib/commonjs/i18n/fr.json +3 -0
  102. package/lib/commonjs/i18n/he.json +3 -0
  103. package/lib/commonjs/i18n/hi.json +2 -0
  104. package/lib/commonjs/i18n/it.json +3 -0
  105. package/lib/commonjs/i18n/ja.json +1 -0
  106. package/lib/commonjs/i18n/ko.json +1 -0
  107. package/lib/commonjs/i18n/nl.json +2 -0
  108. package/lib/commonjs/i18n/pt-br.json +3 -0
  109. package/lib/commonjs/i18n/ru.json +4 -0
  110. package/lib/commonjs/i18n/tr.json +2 -0
  111. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  112. package/lib/commonjs/native.js.map +1 -1
  113. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  114. package/lib/commonjs/types/types.js.map +1 -1
  115. package/lib/commonjs/utils/compressImage.js +1 -1
  116. package/lib/commonjs/utils/compressImage.js.map +1 -1
  117. package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
  118. package/lib/commonjs/utils/utils.js +17 -4
  119. package/lib/commonjs/utils/utils.js.map +1 -1
  120. package/lib/commonjs/version.json +1 -1
  121. package/lib/module/components/Attachment/AudioAttachment.js +19 -9
  122. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  123. package/lib/module/components/Attachment/FileAttachmentGroup.js +3 -1
  124. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  125. package/lib/module/components/Attachment/Gallery.js +16 -3
  126. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  127. package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -1
  128. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
  129. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  130. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +7 -24
  131. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  132. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +2 -4
  133. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  134. package/lib/module/components/Channel/Channel.js +320 -310
  135. package/lib/module/components/Channel/Channel.js.map +1 -1
  136. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -1
  137. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  138. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  139. package/lib/module/components/Channel/hooks/useMessageListPagination.js +133 -147
  140. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
  141. package/lib/module/components/Chat/Chat.js.map +1 -1
  142. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +8 -13
  143. package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
  144. package/lib/module/components/Message/Message.js +14 -7
  145. package/lib/module/components/Message/Message.js.map +1 -1
  146. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  147. package/lib/module/components/Message/MessageSimple/MessageSimple.js +70 -54
  148. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  149. package/lib/module/components/Message/MessageSimple/MessageStatus.js +14 -6
  150. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  151. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  152. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  153. package/lib/module/components/Message/hooks/useCreateMessageContext.js +3 -1
  154. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  155. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  156. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  157. package/lib/module/components/MessageInput/FileUploadPreview.js +25 -39
  158. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  159. package/lib/module/components/MessageInput/InputButtons.js +18 -15
  160. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  161. package/lib/module/components/MessageInput/MessageInput.js +96 -74
  162. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  163. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +2 -1
  164. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  165. package/lib/module/components/MessageInput/hooks/useAudioController.js +4 -4
  166. package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -1
  167. package/lib/module/components/MessageList/MessageList.js +281 -223
  168. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  169. package/lib/module/components/MessageList/hooks/useMessageList.js +65 -48
  170. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  171. package/lib/module/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.js.map +1 -1
  172. package/lib/module/components/MessageList/utils/getGroupStyles.js +1 -1
  173. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  174. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  175. package/lib/module/components/MessageList/utils/getReadState.js +20 -0
  176. package/lib/module/components/MessageList/utils/getReadState.js.map +1 -0
  177. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -1
  178. package/lib/module/components/Poll/components/Button.js.map +1 -1
  179. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  180. package/lib/module/components/Reply/Reply.js +2 -2
  181. package/lib/module/components/Reply/Reply.js.map +1 -1
  182. package/lib/module/components/Thread/components/ThreadFooterComponent.js +24 -6
  183. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  184. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  185. package/lib/module/components/UIComponents/BottomSheetModal.js +10 -6
  186. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
  187. package/lib/module/components/index.js +15 -4
  188. package/lib/module/components/index.js.map +1 -1
  189. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  190. package/lib/module/contexts/channelsStateContext/useChannelState.js +5 -1
  191. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  192. package/lib/module/contexts/debugContext/DebugContext.js.map +1 -1
  193. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  194. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  195. package/lib/module/contexts/messageInputContext/MessageInputContext.js +535 -523
  196. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  197. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -6
  198. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  199. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +37 -41
  200. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  201. package/lib/module/contexts/messageInputContext/utils/utils.js +4 -4
  202. package/lib/module/contexts/messageInputContext/utils/utils.js.map +1 -1
  203. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  204. package/lib/module/contexts/pollContext/pollContext.js.map +1 -1
  205. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +23 -14
  206. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  207. package/lib/module/contexts/themeContext/utils/theme.js +2 -1
  208. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  209. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  210. package/lib/module/contexts/threadsContext/ThreadListItemContext.js.map +1 -1
  211. package/lib/module/hooks/index.js +22 -0
  212. package/lib/module/hooks/index.js.map +1 -1
  213. package/lib/module/hooks/useAudioPlayer.js +60 -69
  214. package/lib/module/hooks/useAudioPlayer.js.map +1 -1
  215. package/lib/module/hooks/useStableCallback.js +13 -0
  216. package/lib/module/hooks/useStableCallback.js.map +1 -0
  217. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  218. package/lib/module/i18n/en.json +3 -0
  219. package/lib/module/i18n/es.json +3 -0
  220. package/lib/module/i18n/fr.json +3 -0
  221. package/lib/module/i18n/he.json +3 -0
  222. package/lib/module/i18n/hi.json +2 -0
  223. package/lib/module/i18n/it.json +3 -0
  224. package/lib/module/i18n/ja.json +1 -0
  225. package/lib/module/i18n/ko.json +1 -0
  226. package/lib/module/i18n/nl.json +2 -0
  227. package/lib/module/i18n/pt-br.json +3 -0
  228. package/lib/module/i18n/ru.json +4 -0
  229. package/lib/module/i18n/tr.json +2 -0
  230. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  231. package/lib/module/native.js.map +1 -1
  232. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  233. package/lib/module/types/types.js.map +1 -1
  234. package/lib/module/utils/compressImage.js +1 -1
  235. package/lib/module/utils/compressImage.js.map +1 -1
  236. package/lib/module/utils/removeReservedFields.js.map +1 -1
  237. package/lib/module/utils/utils.js +17 -4
  238. package/lib/module/utils/utils.js.map +1 -1
  239. package/lib/module/version.json +1 -1
  240. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +2 -2
  241. package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
  242. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
  243. package/lib/typescript/components/Attachment/Gallery.d.ts +3 -3
  244. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  245. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +4 -3
  246. package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts.map +1 -1
  247. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  248. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts +2 -2
  249. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  250. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +2 -3
  251. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
  252. package/lib/typescript/components/Channel/Channel.d.ts +3 -4
  253. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  254. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +2 -3
  255. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -1
  256. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  257. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  258. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts +6 -6
  259. package/lib/typescript/components/Channel/hooks/useCreateThreadContext.d.ts.map +1 -1
  260. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +3 -3
  261. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
  262. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewData.d.ts +1 -1
  263. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +1 -1
  264. package/lib/typescript/components/Chat/Chat.d.ts +0 -9
  265. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  266. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +3 -0
  267. package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
  268. package/lib/typescript/components/Message/Message.d.ts +4 -5
  269. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  270. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +2 -3
  271. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  272. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
  273. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  274. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts.map +1 -1
  275. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
  276. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +2 -2
  277. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts.map +1 -1
  278. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  279. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  280. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts.map +1 -1
  281. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +2 -2
  282. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
  283. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -4
  284. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts.map +1 -1
  285. package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
  286. package/lib/typescript/components/MessageInput/InputButtons.d.ts.map +1 -1
  287. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  288. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  289. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -1
  290. package/lib/typescript/components/MessageList/MessageList.d.ts +4 -4
  291. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  292. package/lib/typescript/components/MessageList/MessageSystem.d.ts +2 -2
  293. package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
  294. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +14 -9
  295. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  296. package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts +2 -2
  297. package/lib/typescript/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.d.ts.map +1 -1
  298. package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
  299. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts +2 -2
  300. package/lib/typescript/components/MessageList/utils/getLastReceivedMessage.d.ts.map +1 -1
  301. package/lib/typescript/components/MessageList/utils/getReadState.d.ts +9 -0
  302. package/lib/typescript/components/MessageList/utils/getReadState.d.ts.map +1 -0
  303. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts +2 -3
  304. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -1
  305. package/lib/typescript/components/Poll/components/Button.d.ts +2 -3
  306. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  307. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +2 -3
  308. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  309. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  310. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
  311. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  312. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
  313. package/lib/typescript/components/index.d.ts +2 -1
  314. package/lib/typescript/components/index.d.ts.map +1 -1
  315. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +3 -3
  316. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  317. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  318. package/lib/typescript/contexts/debugContext/DebugContext.d.ts +2 -3
  319. package/lib/typescript/contexts/debugContext/DebugContext.d.ts.map +1 -1
  320. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +3 -3
  321. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  322. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +6 -4
  323. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  324. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +13 -15
  325. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  326. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  327. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  328. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +3 -3
  329. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts.map +1 -1
  330. package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts +2 -2
  331. package/lib/typescript/contexts/messageInputContext/utils/utils.d.ts.map +1 -1
  332. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +25 -21
  333. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  334. package/lib/typescript/contexts/pollContext/pollContext.d.ts +2 -3
  335. package/lib/typescript/contexts/pollContext/pollContext.d.ts.map +1 -1
  336. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts.map +1 -1
  337. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  338. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  339. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +4 -5
  340. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
  341. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts +3 -4
  342. package/lib/typescript/contexts/threadsContext/ThreadListItemContext.d.ts.map +1 -1
  343. package/lib/typescript/hooks/index.d.ts +2 -0
  344. package/lib/typescript/hooks/index.d.ts.map +1 -1
  345. package/lib/typescript/hooks/useAudioPlayer.d.ts.map +1 -1
  346. package/lib/typescript/hooks/useStableCallback.d.ts +26 -0
  347. package/lib/typescript/hooks/useStableCallback.d.ts.map +1 -0
  348. package/lib/typescript/hooks/useTranslatedMessage.d.ts +59 -58
  349. package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
  350. package/lib/typescript/i18n/en.json +3 -0
  351. package/lib/typescript/i18n/es.json +3 -0
  352. package/lib/typescript/i18n/fr.json +3 -0
  353. package/lib/typescript/i18n/he.json +3 -0
  354. package/lib/typescript/i18n/hi.json +2 -0
  355. package/lib/typescript/i18n/it.json +3 -0
  356. package/lib/typescript/i18n/ja.json +1 -0
  357. package/lib/typescript/i18n/ko.json +1 -0
  358. package/lib/typescript/i18n/nl.json +2 -0
  359. package/lib/typescript/i18n/pt-br.json +3 -0
  360. package/lib/typescript/i18n/ru.json +4 -0
  361. package/lib/typescript/i18n/tr.json +2 -0
  362. package/lib/typescript/native.d.ts +8 -11
  363. package/lib/typescript/native.d.ts.map +1 -1
  364. package/lib/typescript/store/apis/insertReaction.d.ts +2 -2
  365. package/lib/typescript/store/apis/insertReaction.d.ts.map +1 -1
  366. package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
  367. package/lib/typescript/store/apis/updateMessage.d.ts.map +1 -1
  368. package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
  369. package/lib/typescript/store/apis/updateReaction.d.ts.map +1 -1
  370. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
  371. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts.map +1 -1
  372. package/lib/typescript/types/types.d.ts +28 -50
  373. package/lib/typescript/types/types.d.ts.map +1 -1
  374. package/lib/typescript/utils/compressImage.d.ts +2 -2
  375. package/lib/typescript/utils/compressImage.d.ts.map +1 -1
  376. package/lib/typescript/utils/i18n/Streami18n.d.ts +3 -0
  377. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  378. package/lib/typescript/utils/removeReservedFields.d.ts +2 -3
  379. package/lib/typescript/utils/removeReservedFields.d.ts.map +1 -1
  380. package/lib/typescript/utils/utils.d.ts +10 -10
  381. package/lib/typescript/utils/utils.d.ts.map +1 -1
  382. package/package.json +4 -3
  383. package/src/components/Attachment/AudioAttachment.tsx +12 -6
  384. package/src/components/Attachment/FileAttachmentGroup.tsx +3 -1
  385. package/src/components/Attachment/Gallery.tsx +22 -7
  386. package/src/components/Attachment/ImageReloadIndicator.tsx +4 -5
  387. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -10
  388. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +9 -37
  389. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +27 -23
  390. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +12 -12
  391. package/src/components/Channel/Channel.tsx +423 -361
  392. package/src/components/Channel/__tests__/Channel.test.js +10 -3
  393. package/src/components/Channel/hooks/useChannelDataState.ts +2 -4
  394. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  395. package/src/components/Channel/hooks/useMessageListPagination.tsx +150 -150
  396. package/src/components/Chat/Chat.tsx +0 -9
  397. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +8 -7
  398. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +5 -4
  399. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +5 -4
  400. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +3 -2
  401. package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +12 -5
  402. package/src/components/Message/Message.tsx +16 -15
  403. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -3
  404. package/src/components/Message/MessageSimple/MessageSimple.tsx +112 -70
  405. package/src/components/Message/MessageSimple/MessageStatus.tsx +19 -17
  406. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +3 -3
  407. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +11 -5
  408. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +5 -4
  409. package/src/components/Message/MessageSimple/utils/renderText.tsx +2 -3
  410. package/src/components/Message/hooks/useCreateMessageContext.ts +3 -0
  411. package/src/components/Message/hooks/useMessageActionHandlers.ts +1 -3
  412. package/src/components/Message/hooks/useMessageActions.tsx +4 -3
  413. package/src/components/MessageInput/FileUploadPreview.tsx +41 -70
  414. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  415. package/src/components/MessageInput/InputButtons.tsx +14 -10
  416. package/src/components/MessageInput/MessageInput.tsx +28 -30
  417. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +1 -1
  418. package/src/components/MessageInput/__tests__/MessageInput.test.js +3 -1
  419. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +1 -0
  420. package/src/components/MessageInput/hooks/useAudioController.tsx +6 -5
  421. package/src/components/MessageList/MessageList.tsx +253 -137
  422. package/src/components/MessageList/MessageSystem.tsx +2 -2
  423. package/src/components/MessageList/hooks/useMessageList.ts +82 -64
  424. package/src/components/MessageList/hooks/useShouldScrollToRecentOnNewOwnMessage.ts +2 -2
  425. package/src/components/MessageList/utils/getGroupStyles.ts +7 -5
  426. package/src/components/MessageList/utils/getLastReceivedMessage.ts +3 -3
  427. package/src/components/MessageList/utils/getReadState.ts +27 -0
  428. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +2 -3
  429. package/src/components/MessageMenu/hooks/useFetchReactions.ts +2 -3
  430. package/src/components/Poll/components/Button.tsx +2 -4
  431. package/src/components/Poll/components/PollResults/PollResultItem.tsx +2 -3
  432. package/src/components/Reply/Reply.tsx +1 -2
  433. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +318 -847
  434. package/src/components/Thread/components/ThreadFooterComponent.tsx +31 -9
  435. package/src/components/ThreadList/ThreadListItem.tsx +6 -4
  436. package/src/components/UIComponents/BottomSheetModal.tsx +11 -7
  437. package/src/components/index.ts +2 -1
  438. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +5 -4
  439. package/src/contexts/channelsStateContext/useChannelState.ts +5 -1
  440. package/src/contexts/debugContext/DebugContext.tsx +2 -4
  441. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +5 -4
  442. package/src/contexts/messageContext/MessageContext.tsx +6 -4
  443. package/src/contexts/messageInputContext/MessageInputContext.tsx +295 -262
  444. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +10 -6
  445. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +6 -5
  446. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +3 -5
  447. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +14 -9
  448. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +7 -3
  449. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +37 -40
  450. package/src/contexts/messageInputContext/utils/utils.ts +6 -8
  451. package/src/contexts/messagesContext/MessagesContext.tsx +26 -20
  452. package/src/contexts/pollContext/pollContext.tsx +2 -4
  453. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +33 -14
  454. package/src/contexts/themeContext/utils/theme.ts +2 -0
  455. package/src/contexts/threadContext/ThreadContext.tsx +4 -6
  456. package/src/contexts/threadsContext/ThreadListItemContext.tsx +3 -5
  457. package/src/hooks/index.ts +2 -0
  458. package/src/hooks/useAudioPlayer.ts +37 -31
  459. package/src/hooks/useStableCallback.ts +37 -0
  460. package/src/hooks/useTranslatedMessage.ts +2 -2
  461. package/src/i18n/en.json +3 -0
  462. package/src/i18n/es.json +3 -0
  463. package/src/i18n/fr.json +3 -0
  464. package/src/i18n/he.json +3 -0
  465. package/src/i18n/hi.json +2 -0
  466. package/src/i18n/it.json +3 -0
  467. package/src/i18n/ja.json +1 -0
  468. package/src/i18n/ko.json +1 -0
  469. package/src/i18n/nl.json +2 -0
  470. package/src/i18n/pt-br.json +3 -0
  471. package/src/i18n/ru.json +4 -0
  472. package/src/i18n/tr.json +2 -0
  473. package/src/mock-builders/api/channelMocks.tsx +2 -8
  474. package/src/native.ts +13 -8
  475. package/src/store/apis/insertReaction.ts +2 -2
  476. package/src/store/apis/updateMessage.ts +2 -2
  477. package/src/store/apis/updateReaction.ts +2 -2
  478. package/src/store/mappers/mapMessageToStorable.ts +2 -2
  479. package/src/types/stream-chat-common-custom-data.d.ts +22 -22
  480. package/src/types/types.ts +35 -54
  481. package/src/utils/compressImage.ts +3 -4
  482. package/src/utils/removeReservedFields.ts +3 -5
  483. package/src/utils/utils.ts +25 -16
  484. package/src/version.json +1 -1
  485. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js +0 -20
  486. package/lib/commonjs/components/MessageList/hooks/useLastReadData.js.map +0 -1
  487. package/lib/commonjs/components/MessageList/utils/getReadStates.js +0 -34
  488. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +0 -1
  489. package/lib/module/components/MessageList/hooks/useLastReadData.js +0 -20
  490. package/lib/module/components/MessageList/hooks/useLastReadData.js.map +0 -1
  491. package/lib/module/components/MessageList/utils/getReadStates.js +0 -34
  492. package/lib/module/components/MessageList/utils/getReadStates.js.map +0 -1
  493. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts +0 -12
  494. package/lib/typescript/components/MessageList/hooks/useLastReadData.d.ts.map +0 -1
  495. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +0 -5
  496. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +0 -1
  497. package/src/components/MessageList/hooks/useLastReadData.ts +0 -29
  498. package/src/components/MessageList/utils/getReadStates.ts +0 -55
@@ -1,23 +1,21 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
2
 
3
- import { ChannelState, Thread } from 'stream-chat';
4
-
5
- import type { MessageType } from '../../components/MessageList/hooks/useMessageList';
3
+ import { ChannelState, LocalMessage, Thread } from 'stream-chat';
6
4
 
7
5
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
8
6
 
9
7
  import { isTestEnvironment } from '../utils/isTestEnvironment';
10
8
 
11
- export type ThreadType = { thread: MessageType; threadInstance: Thread };
9
+ export type ThreadType = { thread: LocalMessage; threadInstance: Thread };
12
10
 
13
11
  export type ThreadContextValue = {
14
12
  allowThreadMessagesInChannel: boolean;
15
13
  closeThread: () => void;
16
14
  loadMoreThread: () => Promise<void>;
17
- openThread: (message: MessageType) => void;
15
+ openThread: (message: LocalMessage) => void;
18
16
  reloadThread: () => void;
19
17
  setThreadLoadingMore: React.Dispatch<React.SetStateAction<boolean>>;
20
- thread: MessageType | null;
18
+ thread: LocalMessage | null;
21
19
  threadHasMore: boolean;
22
20
  threadMessages: ChannelState['threads'][string];
23
21
  loadMoreRecentThread?: (opts: { limit?: number }) => Promise<void>;
@@ -1,8 +1,6 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
2
 
3
- import { Channel, Thread } from 'stream-chat';
4
-
5
- import { MessageType } from '../../components';
3
+ import { Channel, LocalMessage, Thread } from 'stream-chat';
6
4
 
7
5
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
8
6
 
@@ -10,9 +8,9 @@ export type ThreadListItemContextValue = {
10
8
  channel: Channel;
11
9
  dateString: string | number | undefined;
12
10
  deletedAtDateString: string | number | undefined;
13
- lastReply: MessageType | undefined;
11
+ lastReply: LocalMessage | undefined;
14
12
  ownUnreadMessageCount: number;
15
- parentMessage: MessageType | undefined;
13
+ parentMessage: LocalMessage | undefined;
16
14
  thread: Thread;
17
15
  };
18
16
 
@@ -3,3 +3,5 @@ export * from './useStreami18n';
3
3
  export * from './useViewport';
4
4
  export * from './useScreenDimensions';
5
5
  export * from './useStateStore';
6
+ export * from './useStableCallback';
7
+ export * from './useLoadingImage';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useCallback } from 'react';
2
2
 
3
3
  import { NativeHandlers, SoundReturnType } from '../native';
4
4
 
@@ -15,7 +15,7 @@ export const useAudioPlayer = (props: UseSoundPlayerProps) => {
15
15
 
16
16
  const isExpoCLI = NativeHandlers.SDK === 'stream-chat-expo';
17
17
 
18
- const playAudio = async () => {
18
+ const playAudio = useCallback(async () => {
19
19
  if (isExpoCLI) {
20
20
  if (soundRef.current?.playAsync) {
21
21
  await soundRef.current.playAsync();
@@ -25,9 +25,9 @@ export const useAudioPlayer = (props: UseSoundPlayerProps) => {
25
25
  soundRef.current.resume();
26
26
  }
27
27
  }
28
- };
28
+ }, [isExpoCLI, soundRef]);
29
29
 
30
- const pauseAudio = async () => {
30
+ const pauseAudio = useCallback(async () => {
31
31
  if (isExpoCLI) {
32
32
  if (soundRef.current?.pauseAsync) {
33
33
  await soundRef.current.pauseAsync();
@@ -37,39 +37,45 @@ export const useAudioPlayer = (props: UseSoundPlayerProps) => {
37
37
  soundRef.current.pause();
38
38
  }
39
39
  }
40
- };
40
+ }, [isExpoCLI, soundRef]);
41
41
 
42
- const seekAudio = async (currentTime: number) => {
43
- if (isExpoCLI) {
44
- if (currentTime === 0) {
45
- // If currentTime is 0, we should replay the video from 0th position.
46
- if (soundRef.current?.replayAsync) {
47
- await soundRef.current.replayAsync({
48
- positionMillis: 0,
49
- shouldPlay: false,
50
- });
42
+ const seekAudio = useCallback(
43
+ async (currentTime: number) => {
44
+ if (isExpoCLI) {
45
+ if (currentTime === 0) {
46
+ // If currentTime is 0, we should replay the video from 0th position.
47
+ if (soundRef.current?.replayAsync) {
48
+ await soundRef.current.replayAsync({
49
+ positionMillis: 0,
50
+ shouldPlay: false,
51
+ });
52
+ }
53
+ } else {
54
+ if (soundRef.current?.setPositionAsync) {
55
+ await soundRef.current.setPositionAsync(currentTime * 1000);
56
+ }
51
57
  }
52
58
  } else {
53
- if (soundRef.current?.setPositionAsync) {
54
- await soundRef.current.setPositionAsync(currentTime * 1000);
59
+ if (soundRef.current?.seek) {
60
+ soundRef.current.seek(currentTime);
55
61
  }
56
62
  }
57
- } else {
58
- if (soundRef.current?.seek) {
59
- soundRef.current.seek(currentTime);
60
- }
61
- }
62
- };
63
+ },
64
+ [isExpoCLI, soundRef],
65
+ );
63
66
 
64
- const changeAudioSpeed = async (speed: number) => {
65
- // Handled through prop `rate` in `Sound.Player`
66
- if (!isExpoCLI) {
67
- return;
68
- }
69
- if (soundRef.current?.setRateAsync) {
70
- await soundRef.current.setRateAsync(speed);
71
- }
72
- };
67
+ const changeAudioSpeed = useCallback(
68
+ async (speed: number) => {
69
+ // Handled through prop `rate` in `Sound.Player`
70
+ if (!isExpoCLI) {
71
+ return;
72
+ }
73
+ if (soundRef.current?.setRateAsync) {
74
+ await soundRef.current.setRateAsync(speed, true, 'high');
75
+ }
76
+ },
77
+ [isExpoCLI, soundRef],
78
+ );
73
79
 
74
80
  return { changeAudioSpeed, pauseAudio, playAudio, seekAudio };
75
81
  };
@@ -0,0 +1,37 @@
1
+ import { useCallback, useRef } from 'react';
2
+
3
+ export type StableCallback<A extends unknown[], R> = (...args: A) => R;
4
+
5
+ /**
6
+ * A utility hook implementing a stable callback. It takes in an unstable method that
7
+ * is supposed to be invoked somewhere deeper in the DOM tree without making it
8
+ * change its reference every time the parent component rerenders. It will also return
9
+ * the value of the callback if it does return one.
10
+ * A common use-case would be having a function whose invocation depends on state
11
+ * somewhere high up in the DOM tree and wanting to use the same function deeper
12
+ * down, for example in a leaf node and simply using useCallback results in
13
+ * cascading dependency hell. If we wrap it in useStableCallback, we would be able
14
+ * to:
15
+ * - Use the same function as a dependency of another hook (since it is stable)
16
+ * - Still invoke it and get the latest state
17
+ *
18
+ * **Caveats:**
19
+ * - Never wrap a function that is supposed to return a React.ReactElement in
20
+ * useStableCallback, since React will not know that the DOM needs to be updated
21
+ * whenever the callback value changes (for example, renderItem from FlatList must
22
+ * never be wrapped in this hook)
23
+ * - Always prefer using a standard useCallback/stable function wherever possible
24
+ * (the purpose of useStableCallback is to bridge the gap between top level contexts
25
+ * and cascading rereders in downstream components - **not** as an escape hatch)
26
+ * @param callback - the callback we want to stabilize
27
+ */
28
+ export const useStableCallback = <A extends unknown[], R>(
29
+ callback: StableCallback<A, R>,
30
+ ): StableCallback<A, R> => {
31
+ const ref = useRef(callback);
32
+ ref.current = callback;
33
+
34
+ return useCallback<StableCallback<A, R>>((...args) => {
35
+ return ref.current(...args);
36
+ }, []);
37
+ };
@@ -1,10 +1,10 @@
1
- import type { FormatMessageResponse, MessageResponse, TranslationLanguages } from 'stream-chat';
1
+ import type { LocalMessage, MessageResponse, TranslationLanguages } from 'stream-chat';
2
2
 
3
3
  import { useTranslationContext } from '../contexts/translationContext/TranslationContext';
4
4
 
5
5
  type TranslationKey = `${TranslationLanguages}_text`;
6
6
 
7
- export const useTranslatedMessage = (message?: MessageResponse | FormatMessageResponse) => {
7
+ export const useTranslatedMessage = (message?: MessageResponse | LocalMessage) => {
8
8
  const { userLanguage } = useTranslationContext();
9
9
 
10
10
  const translationKey: TranslationKey = `${userLanguage}_text`;
package/src/i18n/en.json CHANGED
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_many": "+{{count}}",
3
+ "+{{count}}_one": "+{{count}}",
4
+ "+{{count}}_other": "+{{count}}",
2
5
  "1 Reply": "1 Reply",
3
6
  "1 Thread Reply": "1 Thread Reply",
4
7
  "Add a comment": "Add a comment",
package/src/i18n/es.json CHANGED
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_many": "+{{count}}",
3
+ "+{{count}}_one": "+{{count}}",
4
+ "+{{count}}_other": "+{{count}}",
2
5
  "1 Reply": "1 respuesta",
3
6
  "1 Thread Reply": "1 respuesta de hilo",
4
7
  "Add a comment": "Agregar un comentario",
package/src/i18n/fr.json CHANGED
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_many": "+{{count}}",
3
+ "+{{count}}_one": "+{{count}}",
4
+ "+{{count}}_other": "+{{count}}",
2
5
  "1 Reply": "1 Réponse",
3
6
  "1 Thread Reply": "Réponse à 1 fil",
4
7
  "Add a comment": "Ajouter un commentaire",
package/src/i18n/he.json CHANGED
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_one": "+{{count}}",
3
+ "+{{count}}_other": "+{{count}}",
4
+ "+{{count}}_two": "+{{count}}",
2
5
  "1 Reply": "תגובה אחת",
3
6
  "1 Thread Reply": "תגובה אחת לשרשור",
4
7
  "Add a comment": "הוסף תגובה",
package/src/i18n/hi.json CHANGED
@@ -1,4 +1,6 @@
1
1
  {
2
+ "+{{count}}_one": "+{{count}}",
3
+ "+{{count}}_other": "+{{count}}",
2
4
  "1 Reply": "1 रिप्लाई",
3
5
  "1 Thread Reply": "1 धागा उत्तर",
4
6
  "Add a comment": "एक टिप्पणी जोड़ें",
package/src/i18n/it.json CHANGED
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_many": "+{{count}}",
3
+ "+{{count}}_one": "+{{count}}",
4
+ "+{{count}}_other": "+{{count}}",
2
5
  "1 Reply": "1 Risposta",
3
6
  "1 Thread Reply": "1 Risposta alla Discussione",
4
7
  "Add a comment": "Aggiungi un commento",
package/src/i18n/ja.json CHANGED
@@ -1,4 +1,5 @@
1
1
  {
2
+ "+{{count}}_other": "+{{count}}",
2
3
  "1 Reply": "1件の返信",
3
4
  "1 Thread Reply": "1件のスレッド返信",
4
5
  "Add a comment": "コメントを追加",
package/src/i18n/ko.json CHANGED
@@ -1,4 +1,5 @@
1
1
  {
2
+ "+{{count}}_other": "+{{count}}",
2
3
  "1 Reply": "답장 1개",
3
4
  "1 Thread Reply": "1개의 스레드\u3000답글",
4
5
  "Add a comment": "댓글 추가",
package/src/i18n/nl.json CHANGED
@@ -1,4 +1,6 @@
1
1
  {
2
+ "+{{count}}_one": "+{{count}}",
3
+ "+{{count}}_other": "+{{count}}",
2
4
  "1 Reply": "1 Antwoord",
3
5
  "1 Thread Reply": "1 thread antwoord",
4
6
  "Add a comment": "Voeg een reactie toe",
@@ -1,4 +1,7 @@
1
1
  {
2
+ "+{{count}}_many": "+{{count}}",
3
+ "+{{count}}_one": "+{{count}}",
4
+ "+{{count}}_other": "+{{count}}",
2
5
  "1 Reply": "1 Resposta",
3
6
  "1 Thread Reply": "1 Resposta de Thread",
4
7
  "Add a comment": "Adicionar um comentário",
package/src/i18n/ru.json CHANGED
@@ -1,4 +1,8 @@
1
1
  {
2
+ "+{{count}}_few": "+{{count}}",
3
+ "+{{count}}_many": "+{{count}}",
4
+ "+{{count}}_one": "+{{count}}",
5
+ "+{{count}}_other": "+{{count}}",
2
6
  "1 Reply": "1 Ответ",
3
7
  "1 Thread Reply": "1 тема Ответить",
4
8
  "Add a comment": "Добавить комментарий",
package/src/i18n/tr.json CHANGED
@@ -1,4 +1,6 @@
1
1
  {
2
+ "+{{count}}_one": "+{{count}}",
3
+ "+{{count}}_other": "+{{count}}",
2
4
  "1 Reply": "1 Cevap",
3
5
  "1 Thread Reply": "1 Konu Yanıtı",
4
6
  "Add a comment": "Yorum ekle",
@@ -1,10 +1,4 @@
1
- import type {
2
- Attachment,
3
- Channel,
4
- FormatMessageResponse,
5
- MessageResponse,
6
- UserResponse,
7
- } from 'stream-chat';
1
+ import type { Attachment, Channel, LocalMessage, MessageResponse, UserResponse } from 'stream-chat';
8
2
 
9
3
  import {
10
4
  GROUP_CHANNEL_MEMBERS_MOCK,
@@ -168,7 +162,7 @@ const LATEST_MESSAGE = {
168
162
  user: { id: 'okechukwu' } as unknown as UserResponse,
169
163
  } as unknown as MessageResponse;
170
164
 
171
- const FORMATTED_MESSAGE: FormatMessageResponse = {
165
+ const FORMATTED_MESSAGE: LocalMessage = {
172
166
  created_at: new Date('2021-02-12T12:12:35.862282Z'),
173
167
  id: '',
174
168
  message: {} as unknown as MessageResponse,
package/src/native.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import type React from 'react';
2
2
  import { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';
3
3
 
4
- import type { Asset, File } from './types/types';
5
-
4
+ import type { File } from './types/types';
6
5
  const fail = () => {
7
6
  throw Error(
8
7
  'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',
@@ -31,7 +30,7 @@ type iOS14RefreshGallerySelection = () => Promise<void>;
31
30
 
32
31
  type GetPhotos = ({ after, first }: { first: number; after?: string }) =>
33
32
  | Promise<{
34
- assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;
33
+ assets: File[];
35
34
  endCursor: string;
36
35
  hasNextPage: boolean;
37
36
  iOSLimited: boolean;
@@ -47,7 +46,7 @@ type PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>
47
46
 
48
47
  type PickImageAssetType = {
49
48
  askToOpenSettings?: boolean;
50
- assets?: Array<Omit<Asset, 'source'> & { source: 'picker' }>;
49
+ assets?: File[];
51
50
  cancelled?: boolean;
52
51
  };
53
52
 
@@ -67,8 +66,7 @@ type ShareOptions = {
67
66
  };
68
67
  type ShareImage = (options: ShareOptions) => Promise<boolean> | never;
69
68
 
70
- type Photo = Omit<Asset, 'source'> & {
71
- source: 'camera';
69
+ type TakePhotoFileType = File & {
72
70
  askToOpenSettings?: boolean;
73
71
  cancelled?: boolean;
74
72
  };
@@ -78,7 +76,7 @@ export type MediaTypes = 'image' | 'video' | 'mixed';
78
76
  type TakePhoto = (options: {
79
77
  compressImageQuality?: number;
80
78
  mediaType?: MediaTypes;
81
- }) => Promise<Photo> | never;
79
+ }) => Promise<TakePhotoFileType> | never;
82
80
 
83
81
  type HapticFeedbackMethod =
84
82
  | 'impactHeavy'
@@ -107,9 +105,12 @@ export type PlaybackStatus = {
107
105
  shouldPlay: boolean;
108
106
  };
109
107
 
108
+ export type PitchCorrectionQuality = 'low' | 'medium' | 'high';
109
+
110
110
  export type AVPlaybackStatusToSet = {
111
111
  isLooping: boolean;
112
112
  isMuted: boolean;
113
+ pitchCorrectionQuality: PitchCorrectionQuality;
113
114
  positionMillis: number;
114
115
  progressUpdateIntervalMillis: number;
115
116
  rate: number;
@@ -152,7 +153,11 @@ export type SoundReturnType = {
152
153
  seek?: (progress: number, tolerance?: number) => void;
153
154
  setPositionAsync?: (millis: number) => void;
154
155
  setProgressUpdateIntervalAsync?: (progressUpdateIntervalMillis: number) => void;
155
- setRateAsync?: (rate: number) => void;
156
+ setRateAsync?: (
157
+ rate: number,
158
+ shouldCorrectPitch: boolean,
159
+ pitchCorrectionQuality?: PitchCorrectionQuality,
160
+ ) => void;
156
161
  soundRef?: React.RefObject<SoundReturnType>;
157
162
  stopAsync?: () => void;
158
163
  style?: StyleProp<ViewStyle>;
@@ -1,4 +1,4 @@
1
- import type { FormatMessageResponse, MessageResponse, ReactionResponse } from 'stream-chat';
1
+ import type { LocalMessage, MessageResponse, ReactionResponse } from 'stream-chat';
2
2
 
3
3
  import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
4
4
  import { createUpdateQuery } from '../sqlite-utils/createUpdateQuery';
@@ -11,7 +11,7 @@ export const insertReaction = async ({
11
11
  message,
12
12
  reaction,
13
13
  }: {
14
- message: MessageResponse | FormatMessageResponse;
14
+ message: MessageResponse | LocalMessage;
15
15
  reaction: ReactionResponse;
16
16
  flush?: boolean;
17
17
  }) => {
@@ -1,4 +1,4 @@
1
- import type { FormatMessageResponse, MessageResponse } from 'stream-chat';
1
+ import type { LocalMessage, MessageResponse } from 'stream-chat';
2
2
 
3
3
  import { mapMessageToStorable } from '../mappers/mapMessageToStorable';
4
4
  import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
@@ -14,7 +14,7 @@ export const updateMessage = async ({
14
14
  flush = true,
15
15
  message,
16
16
  }: {
17
- message: MessageResponse | FormatMessageResponse;
17
+ message: MessageResponse | LocalMessage;
18
18
  flush?: boolean;
19
19
  }) => {
20
20
  const queries: PreparedQueries[] = [];
@@ -1,4 +1,4 @@
1
- import type { FormatMessageResponse, MessageResponse, ReactionResponse } from 'stream-chat';
1
+ import type { LocalMessage, MessageResponse, ReactionResponse } from 'stream-chat';
2
2
 
3
3
  import { mapMessageToStorable } from '../mappers/mapMessageToStorable';
4
4
  import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
@@ -13,7 +13,7 @@ export const updateReaction = async ({
13
13
  message,
14
14
  reaction,
15
15
  }: {
16
- message: MessageResponse | FormatMessageResponse;
16
+ message: MessageResponse | LocalMessage;
17
17
  reaction: ReactionResponse;
18
18
  flush?: boolean;
19
19
  }) => {
@@ -1,11 +1,11 @@
1
- import type { FormatMessageResponse, MessageResponse } from 'stream-chat';
1
+ import type { LocalMessage, MessageResponse } from 'stream-chat';
2
2
 
3
3
  import { mapDateTimeToStorable } from './mapDateTimeToStorable';
4
4
 
5
5
  import type { TableRow } from '../types';
6
6
 
7
7
  export const mapMessageToStorable = (
8
- message: MessageResponse | FormatMessageResponse,
8
+ message: MessageResponse | LocalMessage,
9
9
  ): TableRow<'messages'> => {
10
10
  const {
11
11
  attachments,
@@ -1,42 +1,42 @@
1
1
  import 'stream-chat';
2
2
  import {
3
- DefaultAttachmentType,
4
- DefaultChannelType,
5
- DefaultCommandType,
6
- DefaultEventType,
7
- DefaultMemberType,
8
- DefaultMessageType,
9
- DefaultPollOptionType,
10
- DefaultPollType,
11
- DefaultReactionType,
12
- DefaultThreadType,
13
- DefaultUserType,
3
+ DefaultAttachmentData,
4
+ DefaultChannelData,
5
+ DefaultCommandData,
6
+ DefaultEventData,
7
+ DefaultMemberData,
8
+ DefaultMessageData,
9
+ DefaultPollData,
10
+ DefaultPollOptionData,
11
+ DefaultReactionData,
12
+ DefaultThreadData,
13
+ DefaultUserData,
14
14
  } from './types';
15
15
 
16
16
  declare module 'stream-chat' {
17
17
  /* eslint-disable @typescript-eslint/no-empty-object-type */
18
18
 
19
- interface CustomAttachmentData extends DefaultAttachmentType {}
19
+ interface CustomAttachmentData extends DefaultAttachmentData {}
20
20
 
21
- interface CustomChannelData extends DefaultChannelType {}
21
+ interface CustomChannelData extends DefaultChannelData {}
22
22
 
23
- interface CustomCommandData extends DefaultCommandType {}
23
+ interface CustomCommandData extends DefaultCommandData {}
24
24
 
25
- interface CustomEventData extends DefaultEventType {}
25
+ interface CustomEventData extends DefaultEventData {}
26
26
 
27
- interface CustomMemberData extends DefaultMemberType {}
27
+ interface CustomMemberData extends DefaultMemberData {}
28
28
 
29
- interface CustomUserData extends DefaultUserType {}
29
+ interface CustomUserData extends DefaultUserData {}
30
30
 
31
- interface CustomMessageData extends DefaultMessageType {}
31
+ interface CustomMessageData extends DefaultMessageData {}
32
32
 
33
- interface CustomPollOptionData extends DefaultPollOptionType {}
33
+ interface CustomPollOptionData extends DefaultPollOptionData {}
34
34
 
35
- interface CustomPollData extends DefaultPollType {}
35
+ interface CustomPollData extends DefaultPollData {}
36
36
 
37
- interface CustomReactionData extends DefaultReactionType {}
37
+ interface CustomReactionData extends DefaultReactionData {}
38
38
 
39
- interface CustomThreadData extends DefaultThreadType {}
39
+ interface CustomThreadData extends DefaultThreadData {}
40
40
 
41
41
  /* eslint-enable @typescript-eslint/no-empty-object-type */
42
42
  }