stream-chat-react-native-core 5.28.1 → 5.29.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +2 -2
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js +247 -115
  4. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +30 -50
  6. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/VideoThumbnail.js +3 -3
  8. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  9. package/lib/commonjs/components/Channel/Channel.js +43 -1
  10. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  11. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +24 -0
  12. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  13. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +6 -6
  14. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  15. package/lib/commonjs/components/Message/Message.js +1 -1
  16. package/lib/commonjs/components/Message/Message.js.map +1 -1
  17. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  18. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  19. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +1 -1
  20. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  21. package/lib/commonjs/components/Message/hooks/useMessageActions.js +4 -2
  22. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  23. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +55 -74
  24. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  25. package/lib/commonjs/components/MessageInput/InputButtons.js +1 -1
  26. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  27. package/lib/commonjs/components/MessageInput/MessageInput.js +250 -43
  28. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  29. package/lib/commonjs/components/MessageInput/SendButton.js +9 -7
  30. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  31. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js +221 -0
  32. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -0
  33. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +121 -0
  34. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -0
  35. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +68 -0
  36. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -0
  37. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +75 -0
  38. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -0
  39. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.js +87 -0
  40. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.js.map +1 -0
  41. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.js +47 -0
  42. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.js.map +1 -0
  43. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +452 -0
  44. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -0
  45. package/lib/commonjs/components/MessageInput/utils/audioSampling.js +91 -0
  46. package/lib/commonjs/components/MessageInput/utils/audioSampling.js.map +1 -0
  47. package/lib/commonjs/components/MessageInput/utils/normalizeAudioLevel.js +18 -0
  48. package/lib/commonjs/components/MessageInput/utils/normalizeAudioLevel.js.map +1 -0
  49. package/lib/commonjs/components/ProgressControl/ProgressControl.js +57 -40
  50. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
  51. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js +162 -0
  52. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js.map +1 -0
  53. package/lib/commonjs/components/Reply/Reply.js +45 -20
  54. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  55. package/lib/commonjs/components/index.js +66 -0
  56. package/lib/commonjs/components/index.js.map +1 -1
  57. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +23 -12
  58. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  59. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +24 -0
  60. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  61. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +76 -28
  62. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  63. package/lib/commonjs/contexts/themeContext/utils/theme.js +62 -7
  64. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  65. package/lib/commonjs/i18n/en.json +3 -1
  66. package/lib/commonjs/i18n/es.json +64 -62
  67. package/lib/commonjs/i18n/fr.json +64 -62
  68. package/lib/commonjs/i18n/he.json +64 -62
  69. package/lib/commonjs/i18n/hi.json +64 -62
  70. package/lib/commonjs/i18n/it.json +64 -62
  71. package/lib/commonjs/i18n/ja.json +64 -62
  72. package/lib/commonjs/i18n/ko.json +64 -62
  73. package/lib/commonjs/i18n/nl.json +64 -62
  74. package/lib/commonjs/i18n/pt-BR.json +64 -62
  75. package/lib/commonjs/i18n/ru.json +64 -62
  76. package/lib/commonjs/i18n/tr.json +64 -62
  77. package/lib/commonjs/icons/ArrowLeft.js +27 -0
  78. package/lib/commonjs/icons/ArrowLeft.js.map +1 -0
  79. package/lib/commonjs/icons/ArrowUp.js +26 -0
  80. package/lib/commonjs/icons/ArrowUp.js.map +1 -0
  81. package/lib/commonjs/icons/Audio.js +24 -24
  82. package/lib/commonjs/icons/Audio.js.map +1 -1
  83. package/lib/commonjs/icons/CircleStop.js +27 -0
  84. package/lib/commonjs/icons/CircleStop.js.map +1 -0
  85. package/lib/commonjs/icons/Delete.js +17 -6
  86. package/lib/commonjs/icons/Delete.js.map +1 -1
  87. package/lib/commonjs/icons/Lock.js +30 -0
  88. package/lib/commonjs/icons/Lock.js.map +1 -0
  89. package/lib/commonjs/icons/Mic.js +30 -0
  90. package/lib/commonjs/icons/Mic.js.map +1 -0
  91. package/lib/commonjs/icons/Pause.js +15 -20
  92. package/lib/commonjs/icons/Pause.js.map +1 -1
  93. package/lib/commonjs/icons/Play.js +18 -10
  94. package/lib/commonjs/icons/Play.js.map +1 -1
  95. package/lib/commonjs/icons/SendCheck.js +30 -0
  96. package/lib/commonjs/icons/SendCheck.js.map +1 -0
  97. package/lib/commonjs/icons/SendRight.js +24 -6
  98. package/lib/commonjs/icons/SendRight.js.map +1 -1
  99. package/lib/commonjs/icons/SendUp.js +24 -6
  100. package/lib/commonjs/icons/SendUp.js.map +1 -1
  101. package/lib/commonjs/icons/Stop.js +19 -0
  102. package/lib/commonjs/icons/Stop.js.map +1 -0
  103. package/lib/commonjs/icons/index.js +77 -0
  104. package/lib/commonjs/icons/index.js.map +1 -1
  105. package/lib/commonjs/native.js +10 -1
  106. package/lib/commonjs/native.js.map +1 -1
  107. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js +11 -0
  108. package/lib/commonjs/utils/getTrimmedAttachmentTitle.js.map +1 -0
  109. package/lib/commonjs/version.json +1 -1
  110. package/lib/module/components/Attachment/Attachment.js +2 -2
  111. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  112. package/lib/module/components/Attachment/AudioAttachment.js +247 -115
  113. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  114. package/lib/module/components/Attachment/FileAttachmentGroup.js +30 -50
  115. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  116. package/lib/module/components/Attachment/VideoThumbnail.js +3 -3
  117. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  118. package/lib/module/components/Channel/Channel.js +43 -1
  119. package/lib/module/components/Channel/Channel.js.map +1 -1
  120. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +24 -0
  121. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  122. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +6 -6
  123. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  124. package/lib/module/components/Message/Message.js +1 -1
  125. package/lib/module/components/Message/Message.js.map +1 -1
  126. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  127. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  128. package/lib/module/components/Message/MessageSimple/MessageSimple.js +1 -1
  129. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  130. package/lib/module/components/Message/hooks/useMessageActions.js +4 -2
  131. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  132. package/lib/module/components/MessageInput/FileUploadPreview.js +55 -74
  133. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  134. package/lib/module/components/MessageInput/InputButtons.js +1 -1
  135. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  136. package/lib/module/components/MessageInput/MessageInput.js +250 -43
  137. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  138. package/lib/module/components/MessageInput/SendButton.js +9 -7
  139. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  140. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js +221 -0
  141. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -0
  142. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +121 -0
  143. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -0
  144. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +68 -0
  145. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -0
  146. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +75 -0
  147. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -0
  148. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.js +87 -0
  149. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.js.map +1 -0
  150. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.js +47 -0
  151. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.js.map +1 -0
  152. package/lib/module/components/MessageInput/hooks/useAudioController.js +452 -0
  153. package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -0
  154. package/lib/module/components/MessageInput/utils/audioSampling.js +91 -0
  155. package/lib/module/components/MessageInput/utils/audioSampling.js.map +1 -0
  156. package/lib/module/components/MessageInput/utils/normalizeAudioLevel.js +18 -0
  157. package/lib/module/components/MessageInput/utils/normalizeAudioLevel.js.map +1 -0
  158. package/lib/module/components/ProgressControl/ProgressControl.js +57 -40
  159. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
  160. package/lib/module/components/ProgressControl/WaveProgressBar.js +162 -0
  161. package/lib/module/components/ProgressControl/WaveProgressBar.js.map +1 -0
  162. package/lib/module/components/Reply/Reply.js +45 -20
  163. package/lib/module/components/Reply/Reply.js.map +1 -1
  164. package/lib/module/components/index.js +66 -0
  165. package/lib/module/components/index.js.map +1 -1
  166. package/lib/module/contexts/messageInputContext/MessageInputContext.js +23 -12
  167. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  168. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +24 -0
  169. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  170. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +76 -28
  171. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  172. package/lib/module/contexts/themeContext/utils/theme.js +62 -7
  173. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  174. package/lib/module/i18n/en.json +3 -1
  175. package/lib/module/i18n/es.json +64 -62
  176. package/lib/module/i18n/fr.json +64 -62
  177. package/lib/module/i18n/he.json +64 -62
  178. package/lib/module/i18n/hi.json +64 -62
  179. package/lib/module/i18n/it.json +64 -62
  180. package/lib/module/i18n/ja.json +64 -62
  181. package/lib/module/i18n/ko.json +64 -62
  182. package/lib/module/i18n/nl.json +64 -62
  183. package/lib/module/i18n/pt-BR.json +64 -62
  184. package/lib/module/i18n/ru.json +64 -62
  185. package/lib/module/i18n/tr.json +64 -62
  186. package/lib/module/icons/ArrowLeft.js +27 -0
  187. package/lib/module/icons/ArrowLeft.js.map +1 -0
  188. package/lib/module/icons/ArrowUp.js +26 -0
  189. package/lib/module/icons/ArrowUp.js.map +1 -0
  190. package/lib/module/icons/Audio.js +24 -24
  191. package/lib/module/icons/Audio.js.map +1 -1
  192. package/lib/module/icons/CircleStop.js +27 -0
  193. package/lib/module/icons/CircleStop.js.map +1 -0
  194. package/lib/module/icons/Delete.js +17 -6
  195. package/lib/module/icons/Delete.js.map +1 -1
  196. package/lib/module/icons/Lock.js +30 -0
  197. package/lib/module/icons/Lock.js.map +1 -0
  198. package/lib/module/icons/Mic.js +30 -0
  199. package/lib/module/icons/Mic.js.map +1 -0
  200. package/lib/module/icons/Pause.js +15 -20
  201. package/lib/module/icons/Pause.js.map +1 -1
  202. package/lib/module/icons/Play.js +18 -10
  203. package/lib/module/icons/Play.js.map +1 -1
  204. package/lib/module/icons/SendCheck.js +30 -0
  205. package/lib/module/icons/SendCheck.js.map +1 -0
  206. package/lib/module/icons/SendRight.js +24 -6
  207. package/lib/module/icons/SendRight.js.map +1 -1
  208. package/lib/module/icons/SendUp.js +24 -6
  209. package/lib/module/icons/SendUp.js.map +1 -1
  210. package/lib/module/icons/Stop.js +19 -0
  211. package/lib/module/icons/Stop.js.map +1 -0
  212. package/lib/module/icons/index.js +77 -0
  213. package/lib/module/icons/index.js.map +1 -1
  214. package/lib/module/native.js +10 -1
  215. package/lib/module/native.js.map +1 -1
  216. package/lib/module/utils/getTrimmedAttachmentTitle.js +11 -0
  217. package/lib/module/utils/getTrimmedAttachmentTitle.js.map +1 -0
  218. package/lib/module/version.json +1 -1
  219. package/lib/typescript/components/Attachment/Attachment.d.ts.map +1 -1
  220. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +3 -8
  221. package/lib/typescript/components/Attachment/AudioAttachment.d.ts.map +1 -1
  222. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
  223. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  224. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +15 -3
  225. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  226. package/lib/typescript/components/ImageGallery/components/ImageGalleryVideoControl.d.ts.map +1 -1
  227. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
  228. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
  229. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  230. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts.map +1 -1
  231. package/lib/typescript/components/MessageInput/InputButtons.d.ts.map +1 -1
  232. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  233. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  234. package/lib/typescript/components/MessageInput/SendButton.d.ts.map +1 -1
  235. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecorder.d.ts +51 -0
  236. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecorder.d.ts.map +1 -0
  237. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts +43 -0
  238. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts.map +1 -0
  239. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts +29 -0
  240. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts.map +1 -0
  241. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.d.ts +22 -0
  242. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.d.ts.map +1 -0
  243. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.d.ts +31 -0
  244. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.d.ts.map +1 -0
  245. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.d.ts +19 -0
  246. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.d.ts.map +1 -0
  247. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts +28 -0
  248. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -0
  249. package/lib/typescript/components/MessageInput/utils/audioSampling.d.ts +11 -0
  250. package/lib/typescript/components/MessageInput/utils/audioSampling.d.ts.map +1 -0
  251. package/lib/typescript/components/MessageInput/utils/normalizeAudioLevel.d.ts +5 -0
  252. package/lib/typescript/components/MessageInput/utils/normalizeAudioLevel.d.ts.map +1 -0
  253. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +2 -2
  254. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts.map +1 -1
  255. package/lib/typescript/components/ProgressControl/WaveProgressBar.d.ts +11 -0
  256. package/lib/typescript/components/ProgressControl/WaveProgressBar.d.ts.map +1 -0
  257. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  258. package/lib/typescript/components/index.d.ts +6 -0
  259. package/lib/typescript/components/index.d.ts.map +1 -1
  260. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +70 -4
  261. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  262. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  263. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  264. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts.map +1 -1
  265. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +62 -7
  266. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  267. package/lib/typescript/i18n/en.json +3 -1
  268. package/lib/typescript/i18n/es.json +64 -62
  269. package/lib/typescript/i18n/fr.json +64 -62
  270. package/lib/typescript/i18n/he.json +64 -62
  271. package/lib/typescript/i18n/hi.json +64 -62
  272. package/lib/typescript/i18n/it.json +64 -62
  273. package/lib/typescript/i18n/ja.json +64 -62
  274. package/lib/typescript/i18n/ko.json +64 -62
  275. package/lib/typescript/i18n/nl.json +64 -62
  276. package/lib/typescript/i18n/pt-BR.json +64 -62
  277. package/lib/typescript/i18n/ru.json +64 -62
  278. package/lib/typescript/i18n/tr.json +64 -62
  279. package/lib/typescript/icons/ArrowLeft.d.ts +8 -0
  280. package/lib/typescript/icons/ArrowLeft.d.ts.map +1 -0
  281. package/lib/typescript/icons/ArrowUp.d.ts +9 -0
  282. package/lib/typescript/icons/ArrowUp.d.ts.map +1 -0
  283. package/lib/typescript/icons/Audio.d.ts.map +1 -1
  284. package/lib/typescript/icons/CircleStop.d.ts +8 -0
  285. package/lib/typescript/icons/CircleStop.d.ts.map +1 -0
  286. package/lib/typescript/icons/Delete.d.ts +5 -1
  287. package/lib/typescript/icons/Delete.d.ts.map +1 -1
  288. package/lib/typescript/icons/Lock.d.ts +9 -0
  289. package/lib/typescript/icons/Lock.d.ts.map +1 -0
  290. package/lib/typescript/icons/Mic.d.ts +8 -0
  291. package/lib/typescript/icons/Mic.d.ts.map +1 -0
  292. package/lib/typescript/icons/Pause.d.ts +3 -1
  293. package/lib/typescript/icons/Pause.d.ts.map +1 -1
  294. package/lib/typescript/icons/Play.d.ts +3 -1
  295. package/lib/typescript/icons/Play.d.ts.map +1 -1
  296. package/lib/typescript/icons/SendCheck.d.ts +8 -0
  297. package/lib/typescript/icons/SendCheck.d.ts.map +1 -0
  298. package/lib/typescript/icons/SendRight.d.ts +5 -1
  299. package/lib/typescript/icons/SendRight.d.ts.map +1 -1
  300. package/lib/typescript/icons/SendUp.d.ts +5 -1
  301. package/lib/typescript/icons/SendUp.d.ts.map +1 -1
  302. package/lib/typescript/icons/Stop.d.ts +4 -0
  303. package/lib/typescript/icons/Stop.d.ts.map +1 -0
  304. package/lib/typescript/icons/index.d.ts +7 -0
  305. package/lib/typescript/icons/index.d.ts.map +1 -1
  306. package/lib/typescript/native.d.ts +49 -0
  307. package/lib/typescript/native.d.ts.map +1 -1
  308. package/lib/typescript/types/types.d.ts +6 -0
  309. package/lib/typescript/types/types.d.ts.map +1 -1
  310. package/lib/typescript/utils/Streami18n.d.ts +2 -0
  311. package/lib/typescript/utils/Streami18n.d.ts.map +1 -1
  312. package/lib/typescript/utils/getTrimmedAttachmentTitle.d.ts +2 -0
  313. package/lib/typescript/utils/getTrimmedAttachmentTitle.d.ts.map +1 -0
  314. package/package.json +1 -1
  315. package/src/components/Attachment/Attachment.tsx +7 -2
  316. package/src/components/Attachment/AudioAttachment.tsx +223 -119
  317. package/src/components/Attachment/FileAttachmentGroup.tsx +35 -55
  318. package/src/components/Attachment/VideoThumbnail.tsx +1 -1
  319. package/src/components/Channel/Channel.tsx +32 -0
  320. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +24 -0
  321. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +1 -1
  322. package/src/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.tsx +2 -2
  323. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +2 -7
  324. package/src/components/Message/Message.tsx +1 -1
  325. package/src/components/Message/MessageSimple/MessageContent.tsx +2 -1
  326. package/src/components/Message/MessageSimple/MessageSimple.tsx +2 -1
  327. package/src/components/Message/hooks/useMessageActions.tsx +2 -2
  328. package/src/components/MessageInput/FileUploadPreview.tsx +67 -98
  329. package/src/components/MessageInput/InputButtons.tsx +2 -1
  330. package/src/components/MessageInput/MessageInput.tsx +320 -49
  331. package/src/components/MessageInput/SendButton.tsx +7 -3
  332. package/src/components/MessageInput/__tests__/MessageInput.test.js +0 -1
  333. package/src/components/MessageInput/__tests__/__snapshots__/SendButton.test.js.snap +132 -48
  334. package/src/components/MessageInput/components/AudioRecorder/AudioRecorder.tsx +313 -0
  335. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +192 -0
  336. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.tsx +114 -0
  337. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.tsx +85 -0
  338. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingPreview.tsx +102 -0
  339. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingWaveform.tsx +62 -0
  340. package/src/components/MessageInput/hooks/useAudioController.tsx +288 -0
  341. package/src/components/MessageInput/utils/audioSampling.ts +108 -0
  342. package/src/components/MessageInput/utils/normalizeAudioLevel.ts +20 -0
  343. package/src/components/ProgressControl/ProgressControl.tsx +69 -40
  344. package/src/components/ProgressControl/WaveProgressBar.tsx +180 -0
  345. package/src/components/Reply/Reply.tsx +89 -56
  346. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +38 -20
  347. package/src/components/index.ts +6 -0
  348. package/src/contexts/messageInputContext/MessageInputContext.tsx +95 -10
  349. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +25 -0
  350. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +80 -27
  351. package/src/contexts/themeContext/utils/theme.ts +111 -14
  352. package/src/i18n/en.json +3 -1
  353. package/src/i18n/es.json +64 -62
  354. package/src/i18n/fr.json +64 -62
  355. package/src/i18n/he.json +64 -62
  356. package/src/i18n/hi.json +64 -62
  357. package/src/i18n/it.json +64 -62
  358. package/src/i18n/ja.json +64 -62
  359. package/src/i18n/ko.json +64 -62
  360. package/src/i18n/nl.json +64 -62
  361. package/src/i18n/pt-BR.json +64 -62
  362. package/src/i18n/ru.json +64 -62
  363. package/src/i18n/tr.json +64 -62
  364. package/src/icons/ArrowLeft.tsx +18 -0
  365. package/src/icons/ArrowUp.tsx +19 -0
  366. package/src/icons/Audio.tsx +24 -24
  367. package/src/icons/CircleStop.tsx +18 -0
  368. package/src/icons/Delete.tsx +14 -8
  369. package/src/icons/Lock.tsx +22 -0
  370. package/src/icons/Mic.tsx +20 -0
  371. package/src/icons/Pause.tsx +12 -11
  372. package/src/icons/Play.tsx +9 -13
  373. package/src/icons/SendCheck.tsx +18 -0
  374. package/src/icons/SendRight.tsx +16 -7
  375. package/src/icons/SendUp.tsx +16 -7
  376. package/src/icons/Stop.tsx +12 -0
  377. package/src/icons/index.ts +7 -0
  378. package/src/native.ts +69 -0
  379. package/src/types/types.ts +6 -0
  380. package/src/utils/getTrimmedAttachmentTitle.ts +5 -0
  381. package/src/version.json +1 -1
@@ -7,8 +7,24 @@ import {
7
7
  View,
8
8
  } from 'react-native';
9
9
 
10
+ import {
11
+ GestureEvent,
12
+ PanGestureHandler,
13
+ PanGestureHandlerEventPayload,
14
+ } from 'react-native-gesture-handler';
15
+ import Animated, {
16
+ Extrapolation,
17
+ interpolate,
18
+ runOnJS,
19
+ useAnimatedGestureHandler,
20
+ useAnimatedStyle,
21
+ useSharedValue,
22
+ withSpring,
23
+ } from 'react-native-reanimated';
24
+
10
25
  import type { UserResponse } from 'stream-chat';
11
26
 
27
+ import { useAudioController } from './hooks/useAudioController';
12
28
  import { useCountdown } from './hooks/useCountdown';
13
29
 
14
30
  import { ChatContextValue, useChatContext } from '../../contexts';
@@ -40,6 +56,7 @@ import {
40
56
  useTranslationContext,
41
57
  } from '../../contexts/translationContext/TranslationContext';
42
58
 
59
+ import { triggerHaptic } from '../../native';
43
60
  import type { Asset, DefaultStreamChatGenerics } from '../../types/types';
44
61
  import { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';
45
62
 
@@ -55,8 +72,9 @@ const styles = StyleSheet.create({
55
72
  paddingRight: 16,
56
73
  },
57
74
  composerContainer: {
58
- alignItems: 'flex-end',
75
+ alignItems: 'center',
59
76
  flexDirection: 'row',
77
+ justifyContent: 'space-between',
60
78
  },
61
79
  container: {
62
80
  borderTopWidth: 1,
@@ -66,14 +84,14 @@ const styles = StyleSheet.create({
66
84
  borderRadius: 20,
67
85
  borderWidth: 1,
68
86
  flex: 1,
87
+ marginHorizontal: 10,
69
88
  },
89
+ micButtonContainer: {},
70
90
  optionsContainer: {
71
91
  flexDirection: 'row',
72
- paddingBottom: 10,
73
- paddingRight: 10,
74
92
  },
75
93
  replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },
76
- sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },
94
+ sendButtonContainer: {},
77
95
  suggestionsListContainer: {
78
96
  position: 'absolute',
79
97
  width: '100%',
@@ -92,7 +110,15 @@ type MessageInputPropsWithContext<
92
110
  MessageInputContextValue<StreamChatGenerics>,
93
111
  | 'additionalTextInputProps'
94
112
  | 'asyncIds'
113
+ | 'audioRecordingEnabled'
114
+ | 'asyncMessagesLockDistance'
115
+ | 'asyncMessagesMinimumPressDuration'
116
+ | 'asyncMessagesSlideToCancelDistance'
95
117
  | 'asyncUploads'
118
+ | 'AudioRecorder'
119
+ | 'AudioRecordingInProgress'
120
+ | 'AudioRecordingLockIndicator'
121
+ | 'AudioRecordingPreview'
96
122
  | 'cooldownEndsAt'
97
123
  | 'CooldownTimer'
98
124
  | 'clearEditingState'
@@ -123,8 +149,10 @@ type MessageInputPropsWithContext<
123
149
  | 'setGiphyActive'
124
150
  | 'showMoreOptions'
125
151
  | 'ShowThreadMessageInChannelButton'
152
+ | 'StartAudioRecordingButton'
126
153
  | 'removeFile'
127
154
  | 'removeImage'
155
+ | 'text'
128
156
  | 'uploadNewFile'
129
157
  | 'uploadNewImage'
130
158
  > &
@@ -148,8 +176,16 @@ const MessageInputWithContext = <
148
176
  const {
149
177
  additionalTextInputProps,
150
178
  asyncIds,
179
+ asyncMessagesLockDistance,
180
+ asyncMessagesMinimumPressDuration,
181
+ asyncMessagesSlideToCancelDistance,
151
182
  asyncUploads,
152
183
  AttachmentPickerSelectionBar,
184
+ AudioRecorder,
185
+ audioRecordingEnabled,
186
+ AudioRecordingInProgress,
187
+ AudioRecordingLockIndicator,
188
+ AudioRecordingPreview,
153
189
  AutoCompleteSuggestionList,
154
190
  closeAttachmentPicker,
155
191
  cooldownEndsAt,
@@ -183,7 +219,9 @@ const MessageInputWithContext = <
183
219
  sendMessageAsync,
184
220
  setShowMoreOptions,
185
221
  ShowThreadMessageInChannelButton,
222
+ StartAudioRecordingButton,
186
223
  suggestions,
224
+ text,
187
225
  thread,
188
226
  threadList,
189
227
  triggerType,
@@ -200,11 +238,13 @@ const MessageInputWithContext = <
200
238
  colors: { border, grey_whisper, white, white_smoke },
201
239
  messageInput: {
202
240
  attachmentSelectionBar,
241
+ attachmentSeparator,
203
242
  autoCompleteInputContainer,
204
243
  composerContainer,
205
244
  container,
206
245
  focusedInputBoxContainer,
207
246
  inputBoxContainer,
247
+ micButtonContainer,
208
248
  optionsContainer,
209
249
  replyContainer,
210
250
  sendButtonContainer,
@@ -542,6 +582,124 @@ const MessageInputWithContext = <
542
582
  [additionalTextInputProps],
543
583
  );
544
584
 
585
+ const {
586
+ deleteVoiceRecording,
587
+ micLocked,
588
+ onVoicePlayerPlayPause,
589
+ paused,
590
+ permissionsGranted,
591
+ position,
592
+ progress,
593
+ recording,
594
+ recordingDuration,
595
+ recordingStatus,
596
+ setMicLocked,
597
+ startVoiceRecording,
598
+ stopVoiceRecording,
599
+ uploadVoiceRecording,
600
+ waveformData,
601
+ } = useAudioController();
602
+
603
+ const isSendingButtonVisible = () => {
604
+ if (audioRecordingEnabled) {
605
+ if (recording) {
606
+ return false;
607
+ }
608
+ if (text && text.trim()) {
609
+ return true;
610
+ }
611
+
612
+ const imagesAndFiles = [...imageUploads, ...fileUploads];
613
+ if (imagesAndFiles.length === 0) return false;
614
+ }
615
+
616
+ return true;
617
+ };
618
+
619
+ const micPositionX = useSharedValue(0);
620
+ const micPositionY = useSharedValue(0);
621
+ const X_AXIS_POSITION = -asyncMessagesSlideToCancelDistance;
622
+ const Y_AXIS_POSITION = -asyncMessagesLockDistance;
623
+
624
+ const resetAudioRecording = async () => {
625
+ await deleteVoiceRecording();
626
+ micPositionX.value = 0;
627
+ };
628
+
629
+ const micLockHandler = () => {
630
+ setMicLocked(true);
631
+ micPositionY.value = 0;
632
+ triggerHaptic('impactMedium');
633
+ };
634
+
635
+ const handleMicGestureEvent = useAnimatedGestureHandler<
636
+ GestureEvent<PanGestureHandlerEventPayload>
637
+ >({
638
+ onActive: (event) => {
639
+ const newPositionX = event.translationX;
640
+ const newPositionY = event.translationY;
641
+
642
+ if (newPositionX <= 0 && newPositionX >= X_AXIS_POSITION) {
643
+ micPositionX.value = newPositionX;
644
+ }
645
+ if (newPositionY <= 0 && newPositionY >= Y_AXIS_POSITION) {
646
+ micPositionY.value = newPositionY;
647
+ }
648
+ },
649
+ onFinish: () => {
650
+ if (micPositionY.value > Y_AXIS_POSITION / 2) {
651
+ micPositionY.value = withSpring(0);
652
+ } else {
653
+ micPositionY.value = withSpring(Y_AXIS_POSITION);
654
+ runOnJS(micLockHandler)();
655
+ }
656
+ if (micPositionX.value > X_AXIS_POSITION / 2) {
657
+ micPositionX.value = withSpring(0);
658
+ } else {
659
+ micPositionX.value = withSpring(X_AXIS_POSITION);
660
+ runOnJS(resetAudioRecording)();
661
+ }
662
+ },
663
+ onStart: () => {
664
+ micPositionX.value = 0;
665
+ micPositionY.value = 0;
666
+ runOnJS(setMicLocked)(false);
667
+ },
668
+ });
669
+
670
+ const animatedStyles = {
671
+ lockIndicator: useAnimatedStyle(() => ({
672
+ transform: [
673
+ {
674
+ translateY: interpolate(
675
+ micPositionY.value,
676
+ [0, Y_AXIS_POSITION],
677
+ [0, Y_AXIS_POSITION],
678
+ Extrapolation.CLAMP,
679
+ ),
680
+ },
681
+ ],
682
+ })),
683
+ micButton: useAnimatedStyle(() => ({
684
+ opacity: interpolate(micPositionX.value, [0, X_AXIS_POSITION], [1, 0], Extrapolation.CLAMP),
685
+ transform: [{ translateX: micPositionX.value }, { translateY: micPositionY.value }],
686
+ zIndex: 2,
687
+ })),
688
+ slideToCancel: useAnimatedStyle(() => ({
689
+ opacity: interpolate(micPositionX.value, [0, X_AXIS_POSITION], [1, 0], Extrapolation.CLAMP),
690
+ transform: [
691
+ {
692
+ translateX: interpolate(
693
+ micPositionX.value,
694
+ [0, X_AXIS_POSITION],
695
+ [0, X_AXIS_POSITION / 2],
696
+ Extrapolation.CLAMP,
697
+ ),
698
+ },
699
+ ],
700
+ })),
701
+ };
702
+
545
703
  return (
546
704
  <>
547
705
  <View
@@ -554,6 +712,31 @@ const MessageInputWithContext = <
554
712
  >
555
713
  {editing && <InputEditingStateHeader />}
556
714
  {quotedMessage && <InputReplyStateHeader />}
715
+ {recording && (
716
+ <>
717
+ <AudioRecordingLockIndicator
718
+ messageInputHeight={height}
719
+ micLocked={micLocked}
720
+ style={animatedStyles.lockIndicator}
721
+ />
722
+ {micLocked &&
723
+ (recordingStatus === 'stopped' ? (
724
+ <AudioRecordingPreview
725
+ onVoicePlayerPlayPause={onVoicePlayerPlayPause}
726
+ paused={paused}
727
+ position={position}
728
+ progress={progress}
729
+ waveformData={waveformData}
730
+ />
731
+ ) : (
732
+ <AudioRecordingInProgress
733
+ recordingDuration={recordingDuration}
734
+ waveformData={waveformData}
735
+ />
736
+ ))}
737
+ </>
738
+ )}
739
+
557
740
  <View style={[styles.composerContainer, composerContainer]}>
558
741
  {Input ? (
559
742
  <Input
@@ -562,60 +745,102 @@ const MessageInputWithContext = <
562
745
  />
563
746
  ) : (
564
747
  <>
565
- <View style={[styles.optionsContainer, optionsContainer]}>
566
- {InputButtons && <InputButtons />}
567
- </View>
568
- <View
569
- style={[
570
- styles.inputBoxContainer,
571
- {
572
- borderColor: grey_whisper,
573
- paddingVertical: giphyActive ? 8 : 12,
574
- },
575
- inputBoxContainer,
576
- focused ? focusedInputBoxContainer : null,
577
- ]}
578
- >
579
- {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (
580
- <View style={[styles.replyContainer, replyContainer]}>
581
- <Reply />
748
+ {recording ? (
749
+ <AudioRecorder
750
+ deleteVoiceRecording={deleteVoiceRecording}
751
+ micLocked={micLocked}
752
+ recording={recording}
753
+ recordingDuration={recordingDuration}
754
+ recordingStopped={recordingStatus === 'stopped'}
755
+ slideToCancelStyle={animatedStyles.slideToCancel}
756
+ stopVoiceRecording={stopVoiceRecording}
757
+ uploadVoiceRecording={uploadVoiceRecording}
758
+ />
759
+ ) : (
760
+ <>
761
+ <View style={[styles.optionsContainer, optionsContainer]}>
762
+ {InputButtons && <InputButtons />}
582
763
  </View>
583
- )}
584
- {imageUploads.length ? <ImageUploadPreview /> : null}
585
- {imageUploads.length && fileUploads.length ? (
586
764
  <View
587
765
  style={[
588
- styles.attachmentSeparator,
766
+ styles.inputBoxContainer,
589
767
  {
590
- borderBottomColor: grey_whisper,
591
- marginHorizontal: giphyActive ? 8 : 12,
768
+ borderColor: grey_whisper,
769
+ paddingVertical: giphyActive ? 8 : 12,
592
770
  },
771
+ inputBoxContainer,
772
+ focused ? focusedInputBoxContainer : null,
593
773
  ]}
594
- />
595
- ) : null}
596
- {fileUploads.length ? <FileUploadPreview /> : null}
597
- {giphyActive ? (
598
- <InputGiphySearch disabled={!isOnline} />
599
- ) : (
600
- <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>
601
- <AutoCompleteInput<StreamChatGenerics>
602
- additionalTextInputProps={memoizedAdditionalTextInputProps}
603
- cooldownActive={!!cooldownRemainingSeconds}
604
- />
774
+ >
775
+ {((typeof editing !== 'boolean' && editing?.quoted_message) ||
776
+ quotedMessage) && (
777
+ <View style={[styles.replyContainer, replyContainer]}>
778
+ <Reply />
779
+ </View>
780
+ )}
781
+ {imageUploads.length ? <ImageUploadPreview /> : null}
782
+ {imageUploads.length && fileUploads.length ? (
783
+ <View
784
+ style={[
785
+ styles.attachmentSeparator,
786
+ {
787
+ borderBottomColor: grey_whisper,
788
+ marginHorizontal: giphyActive ? 8 : 12,
789
+ },
790
+ attachmentSeparator,
791
+ ]}
792
+ />
793
+ ) : null}
794
+ {fileUploads.length ? <FileUploadPreview /> : null}
795
+ {giphyActive ? (
796
+ <InputGiphySearch disabled={!isOnline} />
797
+ ) : (
798
+ <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>
799
+ <AutoCompleteInput<StreamChatGenerics>
800
+ additionalTextInputProps={memoizedAdditionalTextInputProps}
801
+ cooldownActive={!!cooldownRemainingSeconds}
802
+ />
803
+ </View>
804
+ )}
605
805
  </View>
606
- )}
607
- </View>
608
- <View style={[styles.sendButtonContainer, sendButtonContainer]}>
609
- {cooldownRemainingSeconds ? (
806
+ </>
807
+ )}
808
+
809
+ {isSendingButtonVisible() &&
810
+ (cooldownRemainingSeconds ? (
610
811
  <CooldownTimer seconds={cooldownRemainingSeconds} />
611
812
  ) : (
612
- <SendButton
613
- disabled={
614
- disabled || sending.current || !isValidMessage() || (giphyActive && !isOnline)
615
- }
616
- />
617
- )}
618
- </View>
813
+ <View style={[styles.sendButtonContainer, sendButtonContainer]}>
814
+ <SendButton
815
+ disabled={
816
+ disabled ||
817
+ sending.current ||
818
+ !isValidMessage() ||
819
+ (giphyActive && !isOnline)
820
+ }
821
+ />
822
+ </View>
823
+ ))}
824
+ {audioRecordingEnabled && !micLocked && (
825
+ <PanGestureHandler
826
+ activateAfterLongPress={asyncMessagesMinimumPressDuration + 100}
827
+ onGestureEvent={handleMicGestureEvent}
828
+ >
829
+ <Animated.View
830
+ style={[
831
+ styles.micButtonContainer,
832
+ animatedStyles.micButton,
833
+ micButtonContainer,
834
+ ]}
835
+ >
836
+ <StartAudioRecordingButton
837
+ permissionsGranted={permissionsGranted}
838
+ recording={recording}
839
+ startVoiceRecording={startVoiceRecording}
840
+ />
841
+ </Animated.View>
842
+ </PanGestureHandler>
843
+ )}
619
844
  </>
620
845
  )}
621
846
  </View>
@@ -635,6 +860,7 @@ const MessageInputWithContext = <
635
860
  />
636
861
  </View>
637
862
  ) : null}
863
+
638
864
  {selectedPicker && (
639
865
  <View
640
866
  style={[
@@ -659,7 +885,11 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
659
885
  ) => {
660
886
  const {
661
887
  additionalTextInputProps: prevAdditionalTextInputProps,
888
+ asyncMessagesLockDistance: prevAsyncMessagesLockDistance,
889
+ asyncMessagesMinimumPressDuration: prevAsyncMessagesMinimumPressDuration,
890
+ asyncMessagesSlideToCancelDistance: prevAsyncMessagesSlideToCancelDistance,
662
891
  asyncUploads: prevAsyncUploads,
892
+ audioRecordingEnabled: prevAsyncMessagesEnabled,
663
893
  disabled: prevDisabled,
664
894
  editing: prevEditing,
665
895
  fileUploads: prevFileUploads,
@@ -678,7 +908,11 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
678
908
  } = prevProps;
679
909
  const {
680
910
  additionalTextInputProps: nextAdditionalTextInputProps,
911
+ asyncMessagesLockDistance: nextAsyncMessagesLockDistance,
912
+ asyncMessagesMinimumPressDuration: nextAsyncMessagesMinimumPressDuration,
913
+ asyncMessagesSlideToCancelDistance: nextAsyncMessagesSlideToCancelDistance,
681
914
  asyncUploads: nextAsyncUploads,
915
+ audioRecordingEnabled: nextAsyncMessagesEnabled,
682
916
  disabled: nextDisabled,
683
917
  editing: nextEditing,
684
918
  fileUploads: nextFileUploads,
@@ -703,6 +937,21 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
703
937
  prevAdditionalTextInputProps === nextAdditionalTextInputProps;
704
938
  if (!additionalTextInputPropsEven) return false;
705
939
 
940
+ const asyncMessagesEnabledEqual = prevAsyncMessagesEnabled === nextAsyncMessagesEnabled;
941
+ if (!asyncMessagesEnabledEqual) return false;
942
+
943
+ const asyncMessagesLockDistanceEqual =
944
+ prevAsyncMessagesLockDistance === nextAsyncMessagesLockDistance;
945
+ if (!asyncMessagesLockDistanceEqual) return false;
946
+
947
+ const asyncMessagesMinimumPressDurationEqual =
948
+ prevAsyncMessagesMinimumPressDuration === nextAsyncMessagesMinimumPressDuration;
949
+ if (!asyncMessagesMinimumPressDurationEqual) return false;
950
+
951
+ const asyncMessagesSlideToCancelDistanceEqual =
952
+ prevAsyncMessagesSlideToCancelDistance === nextAsyncMessagesSlideToCancelDistance;
953
+ if (!asyncMessagesSlideToCancelDistanceEqual) return false;
954
+
706
955
  const disabledEqual = prevDisabled === nextDisabled;
707
956
  if (!disabledEqual) return false;
708
957
 
@@ -800,7 +1049,16 @@ export const MessageInput = <
800
1049
  const {
801
1050
  additionalTextInputProps,
802
1051
  asyncIds,
1052
+ asyncMessagesLockDistance,
1053
+ asyncMessagesMinimumPressDuration,
1054
+ asyncMessagesSlideToCancelDistance,
803
1055
  asyncUploads,
1056
+ AudioRecorder,
1057
+ audioRecordingEnabled,
1058
+ AudioRecordingInProgress,
1059
+ AudioRecordingLockIndicator,
1060
+ AudioRecordingPreview,
1061
+ AudioRecordingWaveform,
804
1062
  clearEditingState,
805
1063
  clearQuotedMessageState,
806
1064
  closeAttachmentPicker,
@@ -834,6 +1092,8 @@ export const MessageInput = <
834
1092
  setShowMoreOptions,
835
1093
  showMoreOptions,
836
1094
  ShowThreadMessageInChannelButton,
1095
+ StartAudioRecordingButton,
1096
+ text,
837
1097
  uploadNewFile,
838
1098
  uploadNewImage,
839
1099
  } = useMessageInputContext<StreamChatGenerics>();
@@ -861,8 +1121,17 @@ export const MessageInput = <
861
1121
  {...{
862
1122
  additionalTextInputProps,
863
1123
  asyncIds,
1124
+ asyncMessagesLockDistance,
1125
+ asyncMessagesMinimumPressDuration,
1126
+ asyncMessagesSlideToCancelDistance,
864
1127
  asyncUploads,
865
1128
  AttachmentPickerSelectionBar,
1129
+ AudioRecorder,
1130
+ audioRecordingEnabled,
1131
+ AudioRecordingInProgress,
1132
+ AudioRecordingLockIndicator,
1133
+ AudioRecordingPreview,
1134
+ AudioRecordingWaveform,
866
1135
  AutoCompleteSuggestionHeader,
867
1136
  AutoCompleteSuggestionItem,
868
1137
  AutoCompleteSuggestionList,
@@ -903,8 +1172,10 @@ export const MessageInput = <
903
1172
  setShowMoreOptions,
904
1173
  showMoreOptions,
905
1174
  ShowThreadMessageInChannelButton,
1175
+ StartAudioRecordingButton,
906
1176
  suggestions,
907
1177
  t,
1178
+ text,
908
1179
  thread,
909
1180
  threadList,
910
1181
  triggerType,
@@ -39,9 +39,13 @@ const SendButtonWithContext = <
39
39
  style={[sendButton]}
40
40
  testID='send-button'
41
41
  >
42
- {giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} {...searchIcon} />}
43
- {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} {...sendRightIcon} />}
44
- {!giphyActive && !disabled && <SendUp pathFill={accent_blue} {...sendUpIcon} />}
42
+ {giphyActive ? (
43
+ <Search pathFill={disabled ? grey_gainsboro : accent_blue} {...searchIcon} />
44
+ ) : disabled ? (
45
+ <SendRight fill={grey_gainsboro} size={32} {...sendRightIcon} />
46
+ ) : (
47
+ <SendUp fill={accent_blue} size={32} {...sendUpIcon} />
48
+ )}
45
49
  </Pressable>
46
50
  );
47
51
  };
@@ -107,7 +107,6 @@ describe('MessageInput', () => {
107
107
  expect(queryByTestId('upload-file-touchable')).toBeTruthy();
108
108
  expect(queryByTestId('take-photo-touchable')).toBeTruthy();
109
109
  expect(queryByTestId('auto-complete-text-input')).toBeTruthy();
110
- expect(queryByTestId('send-button')).toBeTruthy();
111
110
  expect(queryByText('Editing Message')).toBeFalsy();
112
111
  });
113
112
  });