stream-chat-react-native-core 3.10.1 → 4.0.0-beta.2

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 (623) hide show
  1. package/lib/commonjs/components/Attachment/Card.js +18 -15
  2. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Gallery.js +8 -15
  4. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/Giphy.js +3 -3
  6. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  7. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
  8. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  9. package/lib/commonjs/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
  10. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
  11. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
  12. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
  13. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
  14. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
  15. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
  16. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
  17. package/lib/commonjs/components/Avatar/GroupAvatar.js +3 -9
  18. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  19. package/lib/commonjs/components/Channel/Channel.js +293 -208
  20. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  21. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +5 -5
  22. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  23. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
  24. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  25. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +9 -31
  26. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  27. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
  28. package/lib/commonjs/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
  29. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -0
  30. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  31. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +2 -1
  32. package/lib/commonjs/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  33. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +32 -20
  34. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  35. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +8 -7
  36. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  37. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
  38. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  39. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
  40. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  41. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +12 -5
  42. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  43. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -2
  44. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  45. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
  46. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  47. package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
  48. package/lib/commonjs/components/Message/Message.js +144 -851
  49. package/lib/commonjs/components/Message/Message.js.map +1 -1
  50. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +39 -38
  51. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  52. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +4 -2
  53. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  54. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +24 -16
  55. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  56. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
  57. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
  58. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js +5 -1
  59. package/lib/commonjs/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  60. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +27 -13
  61. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  62. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js +19 -20
  63. package/lib/commonjs/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  64. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +7 -3
  65. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  66. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +52 -80
  67. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  68. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +42 -14
  69. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  70. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +1 -5
  71. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  72. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +294 -0
  73. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  74. package/lib/commonjs/components/Message/hooks/useMessageActions.js +559 -0
  75. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -0
  76. package/lib/commonjs/components/Message/utils/messageActions.js +17 -15
  77. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  78. package/lib/commonjs/components/MessageInput/CooldownTimer.js +78 -0
  79. package/lib/commonjs/components/MessageInput/CooldownTimer.js.map +1 -0
  80. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +2 -2
  81. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  82. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +2 -2
  83. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  84. package/lib/commonjs/components/MessageInput/InputButtons.js +16 -21
  85. package/lib/commonjs/components/MessageInput/InputButtons.js.map +1 -1
  86. package/lib/commonjs/components/MessageInput/MessageInput.js +90 -62
  87. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  88. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  89. package/lib/commonjs/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  90. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -0
  91. package/lib/commonjs/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  92. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js +63 -0
  93. package/lib/commonjs/components/MessageInput/hooks/useCooldown.js.map +1 -0
  94. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js +57 -0
  95. package/lib/commonjs/components/MessageInput/hooks/useCountdown.js.map +1 -0
  96. package/lib/commonjs/components/MessageList/DateHeader.js +2 -2
  97. package/lib/commonjs/components/MessageList/DateHeader.js.map +1 -1
  98. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +2 -2
  99. package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
  100. package/lib/commonjs/components/MessageList/MessageList.js +75 -42
  101. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  102. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +16 -3
  103. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  104. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js +2 -1
  105. package/lib/commonjs/components/MessageList/utils/getDateSeparators.js.map +1 -1
  106. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +10 -5
  107. package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
  108. package/lib/{module/components/MessageOverlay/MessageActions.js → commonjs/components/MessageOverlay/MessageActionList.js} +33 -85
  109. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -0
  110. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +131 -0
  111. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  112. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +83 -70
  113. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  114. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +38 -0
  115. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  116. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +1 -0
  117. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  118. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  119. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  120. package/lib/commonjs/components/Thread/Thread.js +13 -4
  121. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  122. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +9 -1
  123. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  124. package/lib/commonjs/components/docs/ListProps.md +1 -1
  125. package/lib/commonjs/components/index.js +107 -55
  126. package/lib/commonjs/components/index.js.map +1 -1
  127. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  128. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  129. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  130. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  131. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  132. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  133. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  134. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +144 -0
  135. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -0
  136. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  137. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  138. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +112 -78
  139. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  140. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  141. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  142. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  143. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  144. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  145. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -1
  146. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  147. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +31 -24
  148. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  149. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  150. package/lib/commonjs/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  151. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +19 -32
  152. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  153. package/lib/commonjs/contexts/themeContext/utils/theme.js +25 -9
  154. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  155. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  156. package/lib/commonjs/contexts/utils/getDisplayName.js.map +1 -1
  157. package/lib/commonjs/emoji-data/compiled.js +0 -315
  158. package/lib/commonjs/emoji-data/compiled.js.map +1 -1
  159. package/lib/commonjs/emoji-data/emojiNames.js +0 -105
  160. package/lib/commonjs/emoji-data/emojiNames.js.map +1 -1
  161. package/lib/commonjs/emoji-data/emojis.js +0 -175
  162. package/lib/commonjs/emoji-data/emojis.js.map +1 -1
  163. package/lib/commonjs/i18n/en.json +9 -3
  164. package/lib/commonjs/i18n/fr.json +9 -3
  165. package/lib/commonjs/i18n/hi.json +9 -3
  166. package/lib/commonjs/i18n/it.json +9 -3
  167. package/lib/commonjs/i18n/ja.json +9 -0
  168. package/lib/commonjs/i18n/ko.json +9 -0
  169. package/lib/commonjs/i18n/nl.json +9 -3
  170. package/lib/commonjs/i18n/ru.json +9 -3
  171. package/lib/commonjs/i18n/tr.json +10 -4
  172. package/lib/commonjs/icons/Pin.js +42 -0
  173. package/lib/commonjs/icons/Pin.js.map +1 -0
  174. package/lib/commonjs/icons/PinHeader.js +38 -0
  175. package/lib/commonjs/icons/PinHeader.js.map +1 -0
  176. package/lib/commonjs/icons/Unpin.js +38 -0
  177. package/lib/commonjs/icons/Unpin.js.map +1 -0
  178. package/lib/commonjs/icons/index.js +39 -0
  179. package/lib/commonjs/icons/index.js.map +1 -1
  180. package/lib/commonjs/mock-builders/api/sendMessage.js +4 -1
  181. package/lib/commonjs/mock-builders/api/sendMessage.js.map +1 -1
  182. package/lib/commonjs/mock-builders/generator/channel.js +1 -0
  183. package/lib/commonjs/mock-builders/generator/channel.js.map +1 -1
  184. package/lib/commonjs/mock-builders/mock.js +2 -2
  185. package/lib/commonjs/mock-builders/mock.js.map +1 -1
  186. package/lib/commonjs/native.js +1 -7
  187. package/lib/commonjs/native.js.map +1 -1
  188. package/lib/commonjs/utils/date.js +13 -0
  189. package/lib/commonjs/utils/date.js.map +1 -0
  190. package/lib/commonjs/utils/utils.js +9 -7
  191. package/lib/commonjs/utils/utils.js.map +1 -1
  192. package/lib/commonjs/version.json +1 -1
  193. package/lib/module/components/Attachment/Card.js +18 -15
  194. package/lib/module/components/Attachment/Card.js.map +1 -1
  195. package/lib/module/components/Attachment/Gallery.js +8 -15
  196. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  197. package/lib/module/components/Attachment/Giphy.js +3 -3
  198. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  199. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +21 -45
  200. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  201. package/lib/module/components/AutoCompleteInput/{CommandsItem.js → AutoCompleteSuggestionCommandIcon.js} +21 -94
  202. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.js.map +1 -0
  203. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +145 -0
  204. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -0
  205. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +248 -0
  206. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -0
  207. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +223 -0
  208. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -0
  209. package/lib/module/components/Avatar/GroupAvatar.js +3 -9
  210. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  211. package/lib/module/components/Channel/Channel.js +293 -208
  212. package/lib/module/components/Channel/Channel.js.map +1 -1
  213. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +5 -5
  214. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  215. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +7 -5
  216. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  217. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +9 -31
  218. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  219. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js +35 -0
  220. package/lib/module/components/Channel/hooks/useCreateOwnCapabilitiesContext.js.map +1 -0
  221. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -0
  222. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  223. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js +2 -1
  224. package/lib/module/components/ChannelList/ChannelListHeaderNetworkDownIndicator.js.map +1 -1
  225. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +32 -20
  226. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  227. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +8 -7
  228. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  229. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js +16 -7
  230. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.js.map +1 -1
  231. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +2 -1
  232. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  233. package/lib/module/components/Chat/hooks/useIsOnline.js +12 -5
  234. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  235. package/lib/module/components/ImageGallery/ImageGallery.js +1 -2
  236. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  237. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +14 -16
  238. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  239. package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
  240. package/lib/module/components/Message/Message.js +144 -851
  241. package/lib/module/components/Message/Message.js.map +1 -1
  242. package/lib/module/components/Message/MessageSimple/MessageContent.js +39 -38
  243. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  244. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +4 -2
  245. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  246. package/lib/module/components/Message/MessageSimple/MessageFooter.js +24 -16
  247. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  248. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +122 -0
  249. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -0
  250. package/lib/module/components/Message/MessageSimple/MessageReplies.js +5 -1
  251. package/lib/module/components/Message/MessageSimple/MessageReplies.js.map +1 -1
  252. package/lib/module/components/Message/MessageSimple/MessageSimple.js +27 -13
  253. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  254. package/lib/module/components/Message/MessageSimple/MessageStatus.js +19 -20
  255. package/lib/module/components/Message/MessageSimple/MessageStatus.js.map +1 -1
  256. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +7 -3
  257. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  258. package/lib/module/components/Message/MessageSimple/ReactionList.js +52 -80
  259. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  260. package/lib/module/components/Message/MessageSimple/utils/renderText.js +42 -14
  261. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  262. package/lib/module/components/Message/hooks/useCreateMessageContext.js +1 -5
  263. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  264. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +294 -0
  265. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -0
  266. package/lib/module/components/Message/hooks/useMessageActions.js +559 -0
  267. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -0
  268. package/lib/module/components/Message/utils/messageActions.js +17 -15
  269. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  270. package/lib/module/components/MessageInput/CooldownTimer.js +78 -0
  271. package/lib/module/components/MessageInput/CooldownTimer.js.map +1 -0
  272. package/lib/module/components/MessageInput/FileUploadPreview.js +2 -2
  273. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  274. package/lib/module/components/MessageInput/ImageUploadPreview.js +2 -2
  275. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  276. package/lib/module/components/MessageInput/InputButtons.js +16 -21
  277. package/lib/module/components/MessageInput/InputButtons.js.map +1 -1
  278. package/lib/module/components/MessageInput/MessageInput.js +90 -62
  279. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  280. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js +71 -0
  281. package/lib/module/components/MessageInput/SendMessageDisallowedIndicator.js.map +1 -0
  282. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js +1 -0
  283. package/lib/module/components/MessageInput/ShowThreadMessageInChannelButton.js.map +1 -1
  284. package/lib/module/components/MessageInput/hooks/useCooldown.js +63 -0
  285. package/lib/module/components/MessageInput/hooks/useCooldown.js.map +1 -0
  286. package/lib/module/components/MessageInput/hooks/useCountdown.js +57 -0
  287. package/lib/module/components/MessageInput/hooks/useCountdown.js.map +1 -0
  288. package/lib/module/components/MessageList/DateHeader.js +2 -2
  289. package/lib/module/components/MessageList/DateHeader.js.map +1 -1
  290. package/lib/module/components/MessageList/InlineDateSeparator.js +2 -2
  291. package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
  292. package/lib/module/components/MessageList/MessageList.js +75 -42
  293. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  294. package/lib/module/components/MessageList/hooks/useMessageList.js +16 -3
  295. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  296. package/lib/module/components/MessageList/utils/getDateSeparators.js +2 -1
  297. package/lib/module/components/MessageList/utils/getDateSeparators.js.map +1 -1
  298. package/lib/module/components/MessageList/utils/getGroupStyles.js +10 -5
  299. package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
  300. package/lib/{commonjs/components/MessageOverlay/MessageActions.js → module/components/MessageOverlay/MessageActionList.js} +33 -85
  301. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -0
  302. package/lib/module/components/MessageOverlay/MessageActionListItem.js +131 -0
  303. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -0
  304. package/lib/module/components/MessageOverlay/MessageOverlay.js +83 -70
  305. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  306. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +38 -0
  307. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +1 -0
  308. package/lib/module/components/MessageOverlay/OverlayReactionList.js +1 -0
  309. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  310. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +37 -0
  311. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +1 -0
  312. package/lib/module/components/Thread/Thread.js +13 -4
  313. package/lib/module/components/Thread/Thread.js.map +1 -1
  314. package/lib/module/components/Thread/components/ThreadFooterComponent.js +9 -1
  315. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  316. package/lib/module/components/docs/ListProps.md +1 -1
  317. package/lib/module/components/index.js +107 -55
  318. package/lib/module/components/index.js.map +1 -1
  319. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +68 -0
  320. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -0
  321. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  322. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  323. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  324. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +155 -0
  325. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -0
  326. package/lib/module/contexts/channelsStateContext/useChannelState.js +144 -0
  327. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -0
  328. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  329. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  330. package/lib/module/contexts/messageInputContext/MessageInputContext.js +112 -78
  331. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  332. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +9 -5
  333. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  334. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  335. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  336. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  337. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -1
  338. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  339. package/lib/module/contexts/overlayContext/OverlayProvider.js +31 -24
  340. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  341. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js +61 -0
  342. package/lib/module/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.js.map +1 -0
  343. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +19 -32
  344. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  345. package/lib/module/contexts/themeContext/utils/theme.js +25 -9
  346. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  347. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  348. package/lib/module/contexts/utils/getDisplayName.js.map +1 -1
  349. package/lib/module/emoji-data/compiled.js +0 -315
  350. package/lib/module/emoji-data/compiled.js.map +1 -1
  351. package/lib/module/emoji-data/emojiNames.js +0 -105
  352. package/lib/module/emoji-data/emojiNames.js.map +1 -1
  353. package/lib/module/emoji-data/emojis.js +0 -175
  354. package/lib/module/emoji-data/emojis.js.map +1 -1
  355. package/lib/module/i18n/en.json +9 -3
  356. package/lib/module/i18n/fr.json +9 -3
  357. package/lib/module/i18n/hi.json +9 -3
  358. package/lib/module/i18n/it.json +9 -3
  359. package/lib/module/i18n/ja.json +9 -0
  360. package/lib/module/i18n/ko.json +9 -0
  361. package/lib/module/i18n/nl.json +9 -3
  362. package/lib/module/i18n/ru.json +9 -3
  363. package/lib/module/i18n/tr.json +10 -4
  364. package/lib/module/icons/Pin.js +42 -0
  365. package/lib/module/icons/Pin.js.map +1 -0
  366. package/lib/module/icons/PinHeader.js +38 -0
  367. package/lib/module/icons/PinHeader.js.map +1 -0
  368. package/lib/module/icons/Unpin.js +38 -0
  369. package/lib/module/icons/Unpin.js.map +1 -0
  370. package/lib/module/icons/index.js +39 -0
  371. package/lib/module/icons/index.js.map +1 -1
  372. package/lib/module/mock-builders/api/sendMessage.js +4 -1
  373. package/lib/module/mock-builders/api/sendMessage.js.map +1 -1
  374. package/lib/module/mock-builders/generator/channel.js +1 -0
  375. package/lib/module/mock-builders/generator/channel.js.map +1 -1
  376. package/lib/module/mock-builders/mock.js +2 -2
  377. package/lib/module/mock-builders/mock.js.map +1 -1
  378. package/lib/module/native.js +1 -7
  379. package/lib/module/native.js.map +1 -1
  380. package/lib/module/utils/date.js +13 -0
  381. package/lib/module/utils/date.js.map +1 -0
  382. package/lib/module/utils/utils.js +9 -7
  383. package/lib/module/utils/utils.js.map +1 -1
  384. package/lib/module/version.json +1 -1
  385. package/lib/typescript/components/Attachment/Card.d.ts +2 -0
  386. package/lib/typescript/components/Attachment/Gallery.d.ts +3 -2
  387. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts +7 -1
  388. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionCommandIcon.d.ts +4 -0
  389. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts +8 -0
  390. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +10 -0
  391. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +22 -0
  392. package/lib/typescript/components/Channel/Channel.d.ts +11 -10
  393. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  394. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -68
  395. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -126
  396. package/lib/typescript/components/Channel/hooks/useCreateOwnCapabilitiesContext.d.ts +7 -0
  397. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +1 -1
  398. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.d.ts +12 -0
  399. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +1 -0
  400. package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts +1 -1
  401. package/lib/typescript/components/Message/Message.d.ts +3 -2
  402. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  403. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +8 -0
  404. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  405. package/lib/typescript/components/Message/MessageSimple/MessageStatus.d.ts +1 -1
  406. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -0
  407. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +2 -1
  408. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +1 -0
  409. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  410. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +15 -0
  411. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +26 -0
  412. package/lib/typescript/components/Message/utils/messageActions.d.ts +22 -21
  413. package/lib/typescript/components/MessageInput/CooldownTimer.d.ts +10 -0
  414. package/lib/typescript/components/MessageInput/InputButtons.d.ts +1 -1
  415. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
  416. package/lib/typescript/components/MessageInput/SendMessageDisallowedIndicator.d.ts +1 -0
  417. package/lib/typescript/components/MessageInput/hooks/useCooldown.d.ts +9 -0
  418. package/lib/typescript/components/MessageInput/hooks/useCountdown.d.ts +8 -0
  419. package/lib/typescript/components/MessageList/MessageList.d.ts +2 -1
  420. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +1 -0
  421. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +12 -0
  422. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts +20 -0
  423. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +4 -4
  424. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +6 -0
  425. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +12 -0
  426. package/lib/typescript/components/index.d.ts +11 -7
  427. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +9 -0
  428. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +28 -30
  429. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +1 -1
  430. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +41 -0
  431. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +20 -0
  432. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -6
  433. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +15 -6
  434. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  435. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +8 -11
  436. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +15 -106
  437. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +10 -3
  438. package/lib/typescript/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.d.ts +25 -0
  439. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +15 -14
  440. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +24 -8
  441. package/lib/typescript/contexts/utils/getDisplayName.d.ts +2 -2
  442. package/lib/typescript/i18n/en.json +9 -3
  443. package/lib/typescript/i18n/fr.json +9 -3
  444. package/lib/typescript/i18n/hi.json +9 -3
  445. package/lib/typescript/i18n/it.json +9 -3
  446. package/lib/typescript/i18n/ja.json +9 -0
  447. package/lib/typescript/i18n/ko.json +9 -0
  448. package/lib/typescript/i18n/nl.json +9 -3
  449. package/lib/typescript/i18n/ru.json +9 -3
  450. package/lib/typescript/i18n/tr.json +10 -4
  451. package/lib/typescript/icons/Pin.d.ts +3 -0
  452. package/lib/typescript/icons/PinHeader.d.ts +3 -0
  453. package/lib/typescript/icons/Unpin.d.ts +3 -0
  454. package/lib/typescript/icons/index.d.ts +3 -0
  455. package/lib/typescript/native.d.ts +1 -9
  456. package/lib/typescript/utils/Streami18n.d.ts +9 -6
  457. package/lib/typescript/utils/date.d.ts +2 -0
  458. package/lib/typescript/utils/utils.d.ts +8 -10
  459. package/package.json +5 -3
  460. package/src/components/Attachment/Card.tsx +5 -1
  461. package/src/components/Attachment/Gallery.tsx +5 -10
  462. package/src/components/Attachment/Giphy.tsx +3 -3
  463. package/src/components/Attachment/__tests__/Attachment.test.js +13 -6
  464. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +41 -27
  465. package/src/components/AutoCompleteInput/{CommandsItem.tsx → AutoCompleteSuggestionCommandIcon.tsx} +2 -56
  466. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +109 -0
  467. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +154 -0
  468. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +213 -0
  469. package/src/components/AutoCompleteInput/__tests__/AutoCompleteInput.test.js +0 -4
  470. package/src/components/Avatar/GroupAvatar.tsx +0 -19
  471. package/src/components/Avatar/__tests__/Avatar.test.js +0 -28
  472. package/src/components/Channel/Channel.tsx +225 -176
  473. package/src/components/Channel/__tests__/Channel.test.js +25 -20
  474. package/src/components/Channel/__tests__/ownCapabilities.test.js +376 -0
  475. package/src/components/Channel/hooks/useCreateChannelContext.ts +6 -6
  476. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +4 -3
  477. package/src/components/Channel/hooks/useCreateMessagesContext.ts +9 -30
  478. package/src/components/Channel/hooks/useCreateOwnCapabilitiesContext.ts +53 -0
  479. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +1 -1
  480. package/src/components/ChannelList/ChannelListHeaderNetworkDownIndicator.tsx +4 -1
  481. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +16 -4
  482. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +4 -1
  483. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayAvatar.ts +6 -0
  484. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +2 -1
  485. package/src/components/Chat/__tests__/Chat.test.js +6 -2
  486. package/src/components/Chat/hooks/useIsOnline.ts +8 -5
  487. package/src/components/ImageGallery/ImageGallery.tsx +3 -2
  488. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +4 -5
  489. package/src/components/Indicators/LoadingErrorIndicator.tsx +1 -1
  490. package/src/components/Message/Message.tsx +140 -579
  491. package/src/components/Message/MessageSimple/MessageContent.tsx +21 -22
  492. package/src/components/Message/MessageSimple/MessageDeleted.tsx +5 -2
  493. package/src/components/Message/MessageSimple/MessageFooter.tsx +36 -17
  494. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +150 -0
  495. package/src/components/Message/MessageSimple/MessageReplies.tsx +5 -0
  496. package/src/components/Message/MessageSimple/MessageSimple.tsx +47 -26
  497. package/src/components/Message/MessageSimple/MessageStatus.tsx +10 -29
  498. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +5 -0
  499. package/src/components/Message/MessageSimple/ReactionList.tsx +64 -77
  500. package/src/components/Message/MessageSimple/__tests__/Message.test.js +0 -1
  501. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +32 -22
  502. package/src/components/Message/MessageSimple/__tests__/MessagePinnedHeader.test.js +53 -0
  503. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +80 -0
  504. package/src/components/Message/MessageSimple/utils/renderText.tsx +25 -3
  505. package/src/components/Message/hooks/useCreateMessageContext.ts +0 -5
  506. package/src/components/Message/hooks/useMessageActionHandlers.ts +163 -0
  507. package/src/components/Message/hooks/useMessageActions.tsx +381 -0
  508. package/src/components/Message/utils/messageActions.ts +64 -38
  509. package/src/components/MessageInput/CooldownTimer.tsx +66 -0
  510. package/src/components/MessageInput/FileUploadPreview.tsx +2 -2
  511. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  512. package/src/components/MessageInput/InputButtons.tsx +4 -10
  513. package/src/components/MessageInput/MessageInput.tsx +59 -31
  514. package/src/components/MessageInput/SendMessageDisallowedIndicator.tsx +47 -0
  515. package/src/components/MessageInput/ShowThreadMessageInChannelButton.tsx +1 -1
  516. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +29 -29
  517. package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +12 -12
  518. package/src/components/MessageInput/__tests__/MessageInput.test.js +8 -16
  519. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +6061 -2789
  520. package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +1912 -1572
  521. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +1167 -282
  522. package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +4 -4
  523. package/src/components/MessageInput/hooks/useCooldown.ts +60 -0
  524. package/src/components/MessageInput/hooks/useCountdown.ts +47 -0
  525. package/src/components/MessageList/DateHeader.tsx +2 -2
  526. package/src/components/MessageList/InlineDateSeparator.tsx +2 -2
  527. package/src/components/MessageList/MessageList.tsx +60 -36
  528. package/src/components/MessageList/__tests__/MessageList.test.js +231 -106
  529. package/src/components/MessageList/hooks/useMessageList.ts +14 -2
  530. package/src/components/MessageList/utils/getDateSeparators.ts +4 -3
  531. package/src/components/MessageList/utils/getGroupStyles.ts +13 -7
  532. package/src/components/MessageOverlay/{MessageActions.tsx → MessageActionList.tsx} +57 -89
  533. package/src/components/MessageOverlay/MessageActionListItem.tsx +111 -0
  534. package/src/components/MessageOverlay/MessageOverlay.tsx +242 -205
  535. package/src/components/MessageOverlay/OverlayBackdrop.tsx +17 -0
  536. package/src/components/MessageOverlay/OverlayReactionList.tsx +1 -1
  537. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +43 -0
  538. package/src/components/Thread/Thread.tsx +8 -0
  539. package/src/components/Thread/__tests__/Thread.test.js +28 -101
  540. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +1085 -1018
  541. package/src/components/Thread/components/ThreadFooterComponent.tsx +13 -1
  542. package/src/components/docs/ListProps.md +1 -1
  543. package/src/components/index.ts +11 -7
  544. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +33 -0
  545. package/src/contexts/channelContext/ChannelContext.tsx +27 -30
  546. package/src/contexts/channelsContext/ChannelsContext.tsx +1 -1
  547. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +287 -0
  548. package/src/contexts/channelsStateContext/useChannelState.ts +206 -0
  549. package/src/contexts/messageContext/MessageContext.tsx +1 -8
  550. package/src/contexts/messageInputContext/MessageInputContext.tsx +56 -18
  551. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +7 -3
  552. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +12 -12
  553. package/src/contexts/messagesContext/MessagesContext.tsx +28 -129
  554. package/src/contexts/overlayContext/OverlayContext.tsx +10 -4
  555. package/src/contexts/overlayContext/OverlayProvider.tsx +21 -20
  556. package/src/contexts/ownCapabilitiesContext/OwnCapabilitiesContext.tsx +38 -0
  557. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +27 -48
  558. package/src/contexts/suggestionsContext/__tests__/Suggestions.test.js +0 -1
  559. package/src/contexts/themeContext/utils/theme.ts +48 -16
  560. package/src/contexts/translationContext/TranslationContext.tsx +1 -1
  561. package/src/contexts/utils/getDisplayName.ts +2 -1
  562. package/src/emoji-data/compiled.ts +1830 -9609
  563. package/src/emoji-data/emojiNames.ts +0 -140
  564. package/src/emoji-data/emojis.ts +0 -210
  565. package/src/i18n/en.json +9 -3
  566. package/src/i18n/fr.json +9 -3
  567. package/src/i18n/hi.json +9 -3
  568. package/src/i18n/it.json +9 -3
  569. package/src/i18n/ja.json +9 -0
  570. package/src/i18n/ko.json +9 -0
  571. package/src/i18n/nl.json +9 -3
  572. package/src/i18n/ru.json +9 -3
  573. package/src/i18n/tr.json +10 -4
  574. package/src/icons/Pin.tsx +17 -0
  575. package/src/icons/PinHeader.tsx +12 -0
  576. package/src/icons/Unpin.tsx +12 -0
  577. package/src/icons/index.ts +3 -0
  578. package/src/mock-builders/api/sendMessage.js +3 -2
  579. package/src/mock-builders/generator/channel.js +18 -0
  580. package/src/mock-builders/mock.js +2 -2
  581. package/src/native.ts +1 -13
  582. package/src/utils/date.ts +4 -0
  583. package/src/utils/utils.ts +14 -12
  584. package/src/version.json +1 -1
  585. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js +0 -78
  586. package/lib/commonjs/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  587. package/lib/commonjs/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  588. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js +0 -81
  589. package/lib/commonjs/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  590. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js +0 -75
  591. package/lib/commonjs/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  592. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js +0 -125
  593. package/lib/commonjs/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  594. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js +0 -199
  595. package/lib/commonjs/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  596. package/lib/commonjs/components/MessageOverlay/MessageActions.js.map +0 -1
  597. package/lib/module/components/AutoCompleteInput/CommandsHeader.js +0 -78
  598. package/lib/module/components/AutoCompleteInput/CommandsHeader.js.map +0 -1
  599. package/lib/module/components/AutoCompleteInput/CommandsItem.js.map +0 -1
  600. package/lib/module/components/AutoCompleteInput/EmojisHeader.js +0 -81
  601. package/lib/module/components/AutoCompleteInput/EmojisHeader.js.map +0 -1
  602. package/lib/module/components/AutoCompleteInput/EmojisItem.js +0 -75
  603. package/lib/module/components/AutoCompleteInput/EmojisItem.js.map +0 -1
  604. package/lib/module/components/AutoCompleteInput/MentionsItem.js +0 -125
  605. package/lib/module/components/AutoCompleteInput/MentionsItem.js.map +0 -1
  606. package/lib/module/components/AutoCompleteInput/SuggestionsList.js +0 -199
  607. package/lib/module/components/AutoCompleteInput/SuggestionsList.js.map +0 -1
  608. package/lib/module/components/MessageOverlay/MessageActions.js.map +0 -1
  609. package/lib/typescript/components/AutoCompleteInput/CommandsHeader.d.ts +0 -2
  610. package/lib/typescript/components/AutoCompleteInput/CommandsItem.d.ts +0 -15
  611. package/lib/typescript/components/AutoCompleteInput/EmojisHeader.d.ts +0 -5
  612. package/lib/typescript/components/AutoCompleteInput/EmojisItem.d.ts +0 -12
  613. package/lib/typescript/components/AutoCompleteInput/MentionsItem.d.ts +0 -16
  614. package/lib/typescript/components/AutoCompleteInput/SuggestionsList.d.ts +0 -13
  615. package/lib/typescript/components/MessageOverlay/MessageActions.d.ts +0 -11
  616. package/src/components/AutoCompleteInput/CommandsHeader.tsx +0 -43
  617. package/src/components/AutoCompleteInput/EmojisHeader.tsx +0 -45
  618. package/src/components/AutoCompleteInput/EmojisItem.tsx +0 -52
  619. package/src/components/AutoCompleteInput/MentionsItem.tsx +0 -74
  620. package/src/components/AutoCompleteInput/SuggestionsList.tsx +0 -138
  621. package/src/components/AutoCompleteInput/__tests__/CommandsItem.test.js +0 -26
  622. package/src/components/AutoCompleteInput/__tests__/MentionsItem.test.js +0 -62
  623. package/src/components/MessageList/__tests__/__snapshots__/MessageList.test.js.snap +0 -936
@@ -0,0 +1,163 @@
1
+ import type { MessageResponse, Reaction } from 'stream-chat';
2
+
3
+ import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
4
+ import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
5
+ import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
6
+ import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
7
+ import type { Reactions } from '../../../contexts/messageContext/MessageContext';
8
+
9
+ import type {
10
+ DefaultAttachmentType,
11
+ DefaultChannelType,
12
+ DefaultCommandType,
13
+ DefaultEventType,
14
+ DefaultMessageType,
15
+ DefaultReactionType,
16
+ DefaultUserType,
17
+ UnknownType,
18
+ } from '../../../types/types';
19
+
20
+ export const useMessageActionHandlers = <
21
+ At extends UnknownType = DefaultAttachmentType,
22
+ Ch extends UnknownType = DefaultChannelType,
23
+ Co extends string = DefaultCommandType,
24
+ Ev extends UnknownType = DefaultEventType,
25
+ Me extends UnknownType = DefaultMessageType,
26
+ Re extends UnknownType = DefaultReactionType,
27
+ Us extends UnknownType = DefaultUserType,
28
+ >({
29
+ channel,
30
+ client,
31
+ enforceUniqueReaction,
32
+ message,
33
+ retrySendMessage,
34
+ setEditingState,
35
+ setQuotedMessageState,
36
+ supportedReactions,
37
+ updateMessage,
38
+ }: Pick<
39
+ MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,
40
+ | 'retrySendMessage'
41
+ | 'setEditingState'
42
+ | 'setQuotedMessageState'
43
+ | 'supportedReactions'
44
+ | 'updateMessage'
45
+ > &
46
+ Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'channel' | 'enforceUniqueReaction'> &
47
+ Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client'> &
48
+ Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'message'>) => {
49
+ const handleResendMessage = () =>
50
+ retrySendMessage(message as MessageResponse<At, Ch, Co, Me, Re, Us>);
51
+
52
+ const handleQuotedReplyMessage = () => {
53
+ setQuotedMessageState(message);
54
+ };
55
+
56
+ const isMuted = (client.mutedUsers || []).some(
57
+ (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,
58
+ );
59
+
60
+ const handleDeleteMessage = async () => {
61
+ const data = await client.deleteMessage(message.id);
62
+ updateMessage(data.message);
63
+ };
64
+
65
+ const handleToggleMuteUser = async () => {
66
+ if (!message.user?.id) {
67
+ return;
68
+ }
69
+
70
+ if (isMuted) {
71
+ await client.unmuteUser(message.user.id);
72
+ } else {
73
+ await client.muteUser(message.user.id);
74
+ }
75
+ };
76
+
77
+ const handleToggleBanUser = async () => {
78
+ const messageUser = message.user;
79
+ if (!messageUser) {
80
+ return;
81
+ }
82
+
83
+ if (messageUser.banned) {
84
+ await client.unbanUser(messageUser.id);
85
+ } else {
86
+ await client.banUser(messageUser.id);
87
+ }
88
+ };
89
+
90
+ const handleTogglePinMessage = async () => {
91
+ const MessagePinnedHeaderStatus = message.pinned;
92
+ if (!MessagePinnedHeaderStatus) {
93
+ await client.pinMessage(message, null);
94
+ } else {
95
+ await client.unpinMessage(message);
96
+ }
97
+ };
98
+
99
+ const handleEditMessage = () => {
100
+ setEditingState(message);
101
+ };
102
+
103
+ const clientId = client.userID;
104
+ const isMessageTypeDeleted = message.type === 'deleted';
105
+
106
+ const hasReactions =
107
+ !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;
108
+
109
+ const reactions = hasReactions
110
+ ? supportedReactions.reduce((acc, cur) => {
111
+ const reactionType = cur.type;
112
+ const reactionsOfReactionType = message.latest_reactions?.filter(
113
+ (reaction) => reaction.type === reactionType,
114
+ );
115
+
116
+ if (reactionsOfReactionType?.length) {
117
+ const hasOwnReaction = reactionsOfReactionType.some(
118
+ (reaction) => reaction.user_id === clientId,
119
+ );
120
+ acc.push({ own: hasOwnReaction, type: reactionType });
121
+ }
122
+
123
+ return acc;
124
+ }, [] as Reactions)
125
+ : [];
126
+
127
+ const handleToggleReaction = async (reactionType: string) => {
128
+ const messageId = message.id;
129
+ const ownReaction = !!reactions.find(
130
+ (reaction) => reaction.own && reaction.type === reactionType,
131
+ );
132
+
133
+ // Change reaction in local state, make API call in background, revert to old message if fails
134
+ try {
135
+ if (channel && messageId) {
136
+ if (ownReaction) {
137
+ await channel.deleteReaction(messageId, reactionType);
138
+ } else {
139
+ await channel.sendReaction(
140
+ messageId,
141
+ {
142
+ type: reactionType,
143
+ } as Reaction<Re, Us>,
144
+ { enforce_unique: enforceUniqueReaction },
145
+ );
146
+ }
147
+ }
148
+ } catch (err) {
149
+ console.log(err);
150
+ }
151
+ };
152
+
153
+ return {
154
+ handleDeleteMessage,
155
+ handleEditMessage,
156
+ handleQuotedReplyMessage,
157
+ handleResendMessage,
158
+ handleToggleBanUser,
159
+ handleToggleMuteUser,
160
+ handleTogglePinMessage,
161
+ handleToggleReaction,
162
+ };
163
+ };
@@ -0,0 +1,381 @@
1
+ import React from 'react';
2
+ import { Alert, Clipboard } from 'react-native';
3
+
4
+ import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
5
+ import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
6
+ import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
7
+ import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
8
+ import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
9
+ import { removeReservedFields } from '../utils/removeReservedFields';
10
+ import { useTheme } from '../../../contexts/themeContext/ThemeContext';
11
+ import type { MessageType } from '../../MessageList/hooks/useMessageList';
12
+ import {
13
+ Copy,
14
+ CurveLineLeftUp,
15
+ Delete,
16
+ Edit,
17
+ MessageFlag,
18
+ Mute,
19
+ Pin,
20
+ SendUp,
21
+ ThreadReply,
22
+ Unpin,
23
+ UserDelete,
24
+ } from '../../../icons';
25
+ import type { OverlayContextValue } from '../../../contexts/overlayContext/OverlayContext';
26
+ import type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';
27
+ import type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';
28
+
29
+ import type {
30
+ DefaultAttachmentType,
31
+ DefaultChannelType,
32
+ DefaultCommandType,
33
+ DefaultEventType,
34
+ DefaultMessageType,
35
+ DefaultReactionType,
36
+ DefaultUserType,
37
+ UnknownType,
38
+ } from '../../../types/types';
39
+ import { useMessageActionHandlers } from './useMessageActionHandlers';
40
+
41
+ export const useMessageActions = <
42
+ At extends UnknownType = DefaultAttachmentType,
43
+ Ch extends UnknownType = DefaultChannelType,
44
+ Co extends string = DefaultCommandType,
45
+ Ev extends UnknownType = DefaultEventType,
46
+ Me extends UnknownType = DefaultMessageType,
47
+ Re extends UnknownType = DefaultReactionType,
48
+ Us extends UnknownType = DefaultUserType,
49
+ >({
50
+ channel,
51
+ client,
52
+ enforceUniqueReaction,
53
+ handleBlock,
54
+ handleCopy,
55
+ handleDelete,
56
+ handleEdit,
57
+ handleFlag,
58
+ handleMute,
59
+ handlePinMessage,
60
+ handleQuotedReply,
61
+ handleReaction: handleReactionProp,
62
+ handleRetry,
63
+ handleThreadReply,
64
+ message,
65
+ onThreadSelect,
66
+ openThread,
67
+ retrySendMessage,
68
+ selectReaction,
69
+ setEditingState,
70
+ setOverlay,
71
+ setQuotedMessageState,
72
+ supportedReactions,
73
+ t,
74
+ updateMessage,
75
+ }: Pick<
76
+ MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,
77
+ | 'handleBlock'
78
+ | 'handleCopy'
79
+ | 'handleDelete'
80
+ | 'handleEdit'
81
+ | 'handleFlag'
82
+ | 'handleQuotedReply'
83
+ | 'handleMute'
84
+ | 'handlePinMessage'
85
+ | 'handleRetry'
86
+ | 'handleReaction'
87
+ | 'handleThreadReply'
88
+ | 'retrySendMessage'
89
+ | 'setEditingState'
90
+ | 'setQuotedMessageState'
91
+ | 'selectReaction'
92
+ | 'supportedReactions'
93
+ | 'updateMessage'
94
+ > &
95
+ Pick<ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'channel' | 'enforceUniqueReaction'> &
96
+ Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client'> &
97
+ Pick<OverlayContextValue, 'setOverlay'> &
98
+ Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'openThread'> &
99
+ Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'message'> &
100
+ Pick<TranslationContextValue, 't'> & {
101
+ onThreadSelect?: (message: MessageType<At, Ch, Co, Ev, Me, Re, Us>) => void;
102
+ }) => {
103
+ const {
104
+ theme: {
105
+ colors: { accent_blue, accent_red, grey },
106
+ },
107
+ } = useTheme();
108
+ const {
109
+ handleDeleteMessage,
110
+ handleEditMessage,
111
+ handleQuotedReplyMessage,
112
+ handleResendMessage,
113
+ handleToggleBanUser,
114
+ handleToggleMuteUser,
115
+ handleTogglePinMessage,
116
+ handleToggleReaction,
117
+ } = useMessageActionHandlers({
118
+ channel,
119
+ client,
120
+ enforceUniqueReaction,
121
+ message,
122
+ retrySendMessage,
123
+ setEditingState,
124
+ setQuotedMessageState,
125
+ supportedReactions,
126
+ updateMessage,
127
+ });
128
+
129
+ const error = message.type === 'error' || message.status === 'failed';
130
+
131
+ const onOpenThread = () => {
132
+ if (onThreadSelect) {
133
+ onThreadSelect(message);
134
+ }
135
+ if (openThread) {
136
+ openThread(message);
137
+ }
138
+ };
139
+
140
+ const isMuted = (client.mutedUsers || []).some(
141
+ (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,
142
+ );
143
+
144
+ const blockUser: MessageActionType = {
145
+ action: async () => {
146
+ setOverlay('none');
147
+ if (message.user?.id) {
148
+ if (handleBlock) {
149
+ handleBlock(message);
150
+ }
151
+
152
+ await handleToggleBanUser();
153
+ }
154
+ },
155
+ actionType: 'blockUser',
156
+ icon: <UserDelete pathFill={grey} />,
157
+ title: message.user?.banned ? t('Unblock User') : t('Block User'),
158
+ };
159
+
160
+ const copyMessage: MessageActionType = {
161
+ // using depreciated Clipboard from react-native until expo supports the community version or their own
162
+ action: () => {
163
+ setOverlay('none');
164
+ if (handleCopy) {
165
+ handleCopy(message);
166
+ }
167
+ Clipboard.setString(message.text || '');
168
+ },
169
+ actionType: 'copyMessage',
170
+ icon: <Copy pathFill={grey} />,
171
+ title: t('Copy Message'),
172
+ };
173
+
174
+ const deleteMessage: MessageActionType = {
175
+ action: () => {
176
+ setOverlay('alert');
177
+ if (message.id) {
178
+ Alert.alert(
179
+ t('Delete Message'),
180
+ t('Are you sure you want to permanently delete this message?'),
181
+ [
182
+ { onPress: () => setOverlay('none'), text: t('Cancel') },
183
+ {
184
+ onPress: async () => {
185
+ setOverlay('none');
186
+ if (handleDelete) {
187
+ handleDelete(message);
188
+ }
189
+
190
+ await handleDeleteMessage();
191
+ },
192
+ style: 'destructive',
193
+ text: t('Delete'),
194
+ },
195
+ ],
196
+ { cancelable: false },
197
+ );
198
+ }
199
+ },
200
+ actionType: 'deleteMessage',
201
+ icon: <Delete pathFill={accent_red} />,
202
+ title: t('Delete Message'),
203
+ titleStyle: { color: accent_red },
204
+ };
205
+
206
+ const editMessage: MessageActionType = {
207
+ action: () => {
208
+ setOverlay('none');
209
+ if (handleEdit) {
210
+ handleEdit(message);
211
+ }
212
+ handleEditMessage();
213
+ },
214
+ actionType: 'editMessage',
215
+ icon: <Edit pathFill={grey} />,
216
+ title: t('Edit Message'),
217
+ };
218
+
219
+ const pinMessage: MessageActionType = {
220
+ action: () => {
221
+ setOverlay('none');
222
+ if (handlePinMessage) {
223
+ handlePinMessage(message);
224
+ }
225
+ handleTogglePinMessage();
226
+ },
227
+ actionType: 'pinMessage',
228
+ icon: <Pin height={23} pathFill={grey} width={24} />,
229
+ title: t('Pin to Conversation'),
230
+ };
231
+
232
+ const unpinMessage: MessageActionType = {
233
+ action: () => {
234
+ setOverlay('none');
235
+ if (handlePinMessage) {
236
+ handlePinMessage(message);
237
+ }
238
+ handleTogglePinMessage();
239
+ },
240
+ actionType: 'unpinMessage',
241
+ icon: <Unpin pathFill={grey} />,
242
+ title: t('Unpin from Conversation'),
243
+ };
244
+
245
+ const flagMessage: MessageActionType = {
246
+ action: () => {
247
+ setOverlay('alert');
248
+ if (message.id) {
249
+ Alert.alert(
250
+ t('Flag Message'),
251
+ t('Do you want to send a copy of this message to a moderator for further investigation?'),
252
+ [
253
+ { onPress: () => setOverlay('none'), text: t('Cancel') },
254
+ {
255
+ onPress: async () => {
256
+ try {
257
+ if (handleFlag) {
258
+ handleFlag(message);
259
+ }
260
+ await client.flagMessage(message.id);
261
+ Alert.alert(
262
+ t('Message flagged'),
263
+ t('The message has been reported to a moderator.'),
264
+ [
265
+ {
266
+ onPress: () => setOverlay('none'),
267
+ text: t('Ok'),
268
+ },
269
+ ],
270
+ );
271
+ } catch (_) {
272
+ Alert.alert(
273
+ t('Cannot Flag Message'),
274
+ t(
275
+ 'Flag action failed either due to a network issue or the message is already flagged',
276
+ ),
277
+ [
278
+ {
279
+ onPress: () => setOverlay('none'),
280
+ text: t('Ok'),
281
+ },
282
+ ],
283
+ );
284
+ }
285
+ },
286
+ text: t('Flag'),
287
+ },
288
+ ],
289
+ { cancelable: false },
290
+ );
291
+ }
292
+ },
293
+ actionType: 'flagMessage',
294
+ icon: <MessageFlag pathFill={grey} />,
295
+ title: t('Flag Message'),
296
+ };
297
+
298
+ const handleReaction = !error
299
+ ? selectReaction
300
+ ? selectReaction(message)
301
+ : async (reactionType: string) => {
302
+ if (handleReactionProp) {
303
+ handleReactionProp(message, reactionType);
304
+ }
305
+
306
+ await handleToggleReaction(reactionType);
307
+ }
308
+ : undefined;
309
+
310
+ const muteUser: MessageActionType = {
311
+ action: async () => {
312
+ setOverlay('none');
313
+ if (message.user?.id) {
314
+ if (handleMute) {
315
+ handleMute(message);
316
+ }
317
+
318
+ await handleToggleMuteUser();
319
+ }
320
+ },
321
+ actionType: 'muteUser',
322
+ icon: <Mute pathFill={grey} />,
323
+ title: isMuted ? t('Unmute User') : t('Mute User'),
324
+ };
325
+
326
+ const quotedReply: MessageActionType = {
327
+ action: () => {
328
+ setOverlay('none');
329
+ if (handleQuotedReply) {
330
+ handleQuotedReply(message);
331
+ }
332
+ handleQuotedReplyMessage();
333
+ },
334
+ actionType: 'quotedReply',
335
+ icon: <CurveLineLeftUp pathFill={grey} />,
336
+ title: t('Reply'),
337
+ };
338
+
339
+ const retry: MessageActionType = {
340
+ action: async () => {
341
+ setOverlay('none');
342
+ const messageWithoutReservedFields = removeReservedFields(message);
343
+ if (handleRetry) {
344
+ handleRetry(messageWithoutReservedFields);
345
+ }
346
+
347
+ await handleResendMessage();
348
+ },
349
+ actionType: 'retry',
350
+ icon: <SendUp pathFill={accent_blue} />,
351
+ title: t('Resend'),
352
+ };
353
+
354
+ const threadReply: MessageActionType = {
355
+ action: () => {
356
+ setOverlay('none');
357
+ if (handleThreadReply) {
358
+ handleThreadReply(message);
359
+ }
360
+ onOpenThread();
361
+ },
362
+ actionType: 'threadReply',
363
+ icon: <ThreadReply pathFill={grey} />,
364
+ title: t('Thread Reply'),
365
+ };
366
+
367
+ return {
368
+ blockUser,
369
+ copyMessage,
370
+ deleteMessage,
371
+ editMessage,
372
+ flagMessage,
373
+ handleReaction,
374
+ muteUser,
375
+ pinMessage,
376
+ quotedReply,
377
+ retry,
378
+ threadReply,
379
+ unpinMessage,
380
+ };
381
+ };
@@ -1,6 +1,6 @@
1
- import type { MessageType } from '../../MessageList/hooks/useMessageList';
2
-
3
- import type { MessageAction } from '../../../contexts/messageOverlayContext/MessageOverlayContext';
1
+ import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
2
+ import type { OwnCapabilitiesContextValue } from '../../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';
3
+ import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
4
4
  import type {
5
5
  DefaultAttachmentType,
6
6
  DefaultChannelType,
@@ -12,6 +12,43 @@ import type {
12
12
  UnknownType,
13
13
  } from '../../../types/types';
14
14
 
15
+ export type MessageActionsParams<
16
+ At extends UnknownType = DefaultAttachmentType,
17
+ Ch extends UnknownType = DefaultChannelType,
18
+ Co extends string = DefaultCommandType,
19
+ Ev extends UnknownType = DefaultEventType,
20
+ Me extends UnknownType = DefaultMessageType,
21
+ Re extends UnknownType = DefaultReactionType,
22
+ Us extends UnknownType = DefaultUserType,
23
+ > = {
24
+ blockUser: MessageActionType;
25
+ copyMessage: MessageActionType;
26
+ deleteMessage: MessageActionType;
27
+ dismissOverlay: () => void;
28
+ editMessage: MessageActionType;
29
+ error: boolean | Error;
30
+ flagMessage: MessageActionType;
31
+ isThreadMessage: boolean;
32
+ messageReactions: boolean;
33
+ muteUser: MessageActionType;
34
+ ownCapabilities: OwnCapabilitiesContextValue;
35
+ pinMessage: MessageActionType;
36
+ quotedReply: MessageActionType;
37
+ retry: MessageActionType;
38
+ threadReply: MessageActionType;
39
+ unpinMessage: MessageActionType;
40
+ } & Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'message' | 'isMyMessage'>;
41
+
42
+ export type MessageActionsProp<
43
+ At extends UnknownType = DefaultAttachmentType,
44
+ Ch extends UnknownType = DefaultChannelType,
45
+ Co extends string = DefaultCommandType,
46
+ Ev extends UnknownType = DefaultEventType,
47
+ Me extends UnknownType = DefaultMessageType,
48
+ Re extends UnknownType = DefaultReactionType,
49
+ Us extends UnknownType = DefaultUserType,
50
+ > = (param: MessageActionsParams<At, Ch, Co, Ev, Me, Re, Us>) => MessageActionType[];
51
+
15
52
  export const messageActions = <
16
53
  At extends UnknownType = DefaultAttachmentType,
17
54
  Ch extends UnknownType = DefaultChannelType,
@@ -22,7 +59,6 @@ export const messageActions = <
22
59
  Us extends UnknownType = DefaultUserType,
23
60
  >({
24
61
  blockUser,
25
- canModifyMessage,
26
62
  copyMessage,
27
63
  deleteMessage,
28
64
  editMessage,
@@ -32,52 +68,35 @@ export const messageActions = <
32
68
  isThreadMessage,
33
69
  message,
34
70
  messageReactions,
35
- mutesEnabled,
36
- muteUser,
37
- quotedRepliesEnabled,
71
+ ownCapabilities,
72
+ pinMessage,
38
73
  quotedReply,
39
74
  retry,
40
- threadRepliesEnabled,
41
75
  threadReply,
42
- }: {
43
- blockUser: MessageAction | null;
44
- canModifyMessage: boolean;
45
- copyMessage: MessageAction | null;
46
- deleteMessage: MessageAction | null;
47
- editMessage: MessageAction | null;
48
- error: boolean;
49
- flagMessage: MessageAction | null;
50
- isMyMessage: boolean;
51
- isThreadMessage: boolean;
52
- message: MessageType<At, Ch, Co, Ev, Me, Re, Us>;
53
- messageReactions: boolean;
54
- muteUser: MessageAction | null;
55
- quotedReply: MessageAction | null;
56
- retry: MessageAction | null;
57
- threadReply: MessageAction | null;
58
- mutesEnabled?: boolean;
59
- quotedRepliesEnabled?: boolean;
60
- threadRepliesEnabled?: boolean;
61
- }): Array<MessageAction | null> | undefined => {
76
+ unpinMessage,
77
+ }: MessageActionsParams<At, Ch, Co, Ev, Me, Re, Us>) => {
62
78
  if (messageReactions) {
63
79
  return undefined;
64
80
  }
65
81
 
66
- const actions: Array<MessageAction | null> = [];
82
+ const actions: Array<MessageActionType | null> = [];
67
83
 
68
84
  if (error && isMyMessage) {
69
85
  actions.push(retry);
70
86
  }
71
87
 
72
- if (quotedRepliesEnabled && !isThreadMessage && !error) {
88
+ if (ownCapabilities.quoteMessage && !isThreadMessage && !error) {
73
89
  actions.push(quotedReply);
74
90
  }
75
91
 
76
- if (threadRepliesEnabled && !isThreadMessage && !error) {
92
+ if (ownCapabilities.sendReply && !isThreadMessage && !error) {
77
93
  actions.push(threadReply);
78
94
  }
79
95
 
80
- if (canModifyMessage) {
96
+ if (
97
+ (isMyMessage && ownCapabilities.updateOwnMessage) ||
98
+ (!isMyMessage && ownCapabilities.updateAnyMessage)
99
+ ) {
81
100
  actions.push(editMessage);
82
101
  }
83
102
 
@@ -85,19 +104,26 @@ export const messageActions = <
85
104
  actions.push(copyMessage);
86
105
  }
87
106
 
88
- if (mutesEnabled && !isMyMessage) {
89
- actions.push(muteUser);
107
+ if (!isMyMessage && ownCapabilities.flagMessage) {
108
+ actions.push(flagMessage);
109
+ }
110
+
111
+ if (ownCapabilities.pinMessage && !message.pinned) {
112
+ actions.push(pinMessage);
90
113
  }
91
114
 
92
- if (!isMyMessage) {
93
- actions.push(flagMessage);
115
+ if (ownCapabilities.pinMessage && message.pinned) {
116
+ actions.push(unpinMessage);
94
117
  }
95
118
 
96
- if (!isMyMessage && canModifyMessage) {
119
+ if (!isMyMessage && ownCapabilities.banChannelMembers) {
97
120
  actions.push(blockUser);
98
121
  }
99
122
 
100
- if (canModifyMessage) {
123
+ if (
124
+ (isMyMessage && ownCapabilities.deleteOwnMessage) ||
125
+ (!isMyMessage && ownCapabilities.deleteAnyMessage)
126
+ ) {
101
127
  actions.push(deleteMessage);
102
128
  }
103
129