stream-chat-react-native-core 3.10.2 → 4.0.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 (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 -857
  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 +30 -11
  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 -857
  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 +30 -11
  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 +11 -0
  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
@@ -1 +1 @@
1
- {"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","refreshing","setRefreshing","isMounted","queryChannels","queryType","retryCount","current","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","loadNextPage","undefined","refreshList","reloadList","filterStr","JSON","stringify","sortStr"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\ntype Parameters<\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Us extends UnknownType = DefaultUserType,\n> = {\n filters: ChannelFilters<Ch, Co, Us>;\n options: ChannelOptions;\n sort: ChannelSort<Ch>;\n};\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nexport const usePaginatedChannels = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<Ch, Co, Us>) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const [channels, setChannels] = useState<Channel<At, Ch, Co, Ev, Me, Re, Us>[]>([]);\n const [error, setError] = useState(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const [loadingChannels, setLoadingChannels] = useState(false);\n const [loadingNextPage, setLoadingNextPage] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n const isMounted = useIsMountedRef();\n\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing || !isMounted.current) return;\n\n if (queryType === 'reload') {\n setLoadingChannels(true);\n } else if (queryType === 'refresh') {\n setRefreshing(true);\n } else if (!queryType) {\n setLoadingNextPage(true);\n }\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'reload' || queryType === 'refresh' ? 0 : channels.length,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions);\n\n if (!isMounted.current) return;\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'reload' || queryType === 'refresh'\n ? channelQueryResponse\n : [...channels, ...channelQueryResponse];\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(false);\n } catch (err) {\n await wait(2000);\n\n if (!isMounted.current) return;\n\n if (retryCount === 3) {\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n console.warn(err);\n return setError(true);\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < 5000 && !error) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
1
+ {"version":3,"sources":["usePaginatedChannels.ts"],"names":["wait","ms","Promise","resolve","setTimeout","DEFAULT_OPTIONS","message_limit","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","querying","loadingChannels","setLoadingChannels","loadingNextPage","setLoadingNextPage","refreshing","setRefreshing","isMounted","queryChannels","queryType","retryCount","current","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","loadNextPage","undefined","refreshList","reloadList","filterStr","JSON","stringify","sortStr"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nconst wait = (ms: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\ntype Parameters<\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Us extends UnknownType = DefaultUserType,\n> = {\n filters: ChannelFilters<Ch, Co, Us>;\n options: ChannelOptions;\n sort: ChannelSort<Ch>;\n};\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nexport const usePaginatedChannels = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<Ch, Co, Us>) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const [channels, setChannels] = useState<Channel<At, Ch, Co, Ev, Me, Re, Us>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<boolean | Error>(false);\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const querying = useRef(false);\n const [loadingChannels, setLoadingChannels] = useState(false);\n const [loadingNextPage, setLoadingNextPage] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n const isMounted = useIsMountedRef();\n\n const queryChannels = async (queryType = '', retryCount = 0): Promise<void> => {\n if (!client || loadingChannels || loadingNextPage || refreshing || !isMounted.current) return;\n\n querying.current = true;\n setError(false);\n\n if (queryType === 'reload') {\n setLoadingChannels(true);\n } else if (queryType === 'refresh') {\n setRefreshing(true);\n } else if (!queryType) {\n setLoadingNextPage(true);\n }\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'reload' || queryType === 'refresh' ? 0 : channels.length,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (!isMounted.current) return;\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'reload' || queryType === 'refresh'\n ? channelQueryResponse\n : [...channels, ...channelQueryResponse];\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(false);\n querying.current = false;\n } catch (err) {\n querying.current = false;\n await wait(2000);\n\n if (!isMounted.current) return;\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === 3 && !querying.current) {\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n console.warn(err);\n return setError(true);\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setLoadingChannels(false);\n setLoadingNextPage(false);\n setRefreshing(false);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < 5000 && !error) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels,\n loadingNextPage,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
@@ -117,6 +117,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
117
117
  }
118
118
  }), _react["default"].createElement(_reactNative.View, {
119
119
  style: [styles.contentContainer, contentContainer],
120
+ testID: "channel-preview-content-" + channel.id,
120
121
  __self: _this,
121
122
  __source: {
122
123
  fileName: _jsxFileName,
@@ -128,7 +129,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
128
129
  __self: _this,
129
130
  __source: {
130
131
  fileName: _jsxFileName,
131
- lineNumber: 160,
132
+ lineNumber: 163,
132
133
  columnNumber: 9
133
134
  }
134
135
  }, _react["default"].createElement(PreviewTitle, {
@@ -137,7 +138,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
137
138
  __self: _this,
138
139
  __source: {
139
140
  fileName: _jsxFileName,
140
- lineNumber: 161,
141
+ lineNumber: 164,
141
142
  columnNumber: 11
142
143
  }
143
144
  }), _react["default"].createElement(PreviewUnreadCount, {
@@ -147,7 +148,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
147
148
  __self: _this,
148
149
  __source: {
149
150
  fileName: _jsxFileName,
150
- lineNumber: 162,
151
+ lineNumber: 165,
151
152
  columnNumber: 11
152
153
  }
153
154
  })), _react["default"].createElement(_reactNative.View, {
@@ -155,7 +156,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
155
156
  __self: _this,
156
157
  __source: {
157
158
  fileName: _jsxFileName,
158
- lineNumber: 164,
159
+ lineNumber: 167,
159
160
  columnNumber: 9
160
161
  }
161
162
  }, _react["default"].createElement(PreviewMessage, {
@@ -163,7 +164,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
163
164
  __self: _this,
164
165
  __source: {
165
166
  fileName: _jsxFileName,
166
- lineNumber: 165,
167
+ lineNumber: 168,
167
168
  columnNumber: 11
168
169
  }
169
170
  }), _react["default"].createElement(PreviewStatus, {
@@ -173,7 +174,7 @@ var ChannelPreviewMessengerWithContext = function ChannelPreviewMessengerWithCon
173
174
  __self: _this,
174
175
  __source: {
175
176
  fileName: _jsxFileName,
176
- lineNumber: 166,
177
+ lineNumber: 169,
177
178
  columnNumber: 11
178
179
  }
179
180
  }))));
@@ -203,7 +204,7 @@ var ChannelPreviewMessenger = function ChannelPreviewMessenger(props) {
203
204
  __self: _this,
204
205
  __source: {
205
206
  fileName: _jsxFileName,
206
- lineNumber: 225,
207
+ lineNumber: 228,
207
208
  columnNumber: 5
208
209
  }
209
210
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelPreviewMessenger.tsx"],"names":["styles","StyleSheet","create","container","borderBottomWidth","flex","flexDirection","paddingHorizontal","paddingVertical","contentContainer","row","alignItems","justifyContent","paddingLeft","title","fontSize","fontWeight","maxWidth","ChannelPreviewMessengerWithContext","props","channel","formatLatestMessageDate","latestMessagePreview","maxUnreadCount","onSelect","PreviewAvatar","ChannelAvatar","PreviewMessage","ChannelPreviewMessage","PreviewStatus","ChannelPreviewStatus","PreviewTitle","ChannelPreviewTitle","PreviewUnreadCount","ChannelPreviewUnreadCount","unread","theme","channelPreview","colors","border","white_snow","displayName","Math","floor","backgroundColor","borderBottomColor","MemoizedChannelPreviewMessengerWithContext","React","memo","ChannelPreviewMessenger"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AAIA;;AACA;;AAeA;;AACA;;AACA;;AACA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,iBAAiB,EAAE,CADV;AAETC,IAAAA,IAAI,EAAE,CAFG;AAGTC,IAAAA,aAAa,EAAE,KAHN;AAITC,IAAAA,iBAAiB,EAAE,CAJV;AAKTC,IAAAA,eAAe,EAAE;AALR,GADoB;AAQ/BC,EAAAA,gBAAgB,EAAE;AAAEJ,IAAAA,IAAI,EAAE;AAAR,GARa;AAS/BK,EAAAA,GAAG,EAAE;AACHC,IAAAA,UAAU,EAAE,QADT;AAEHN,IAAAA,IAAI,EAAE,CAFH;AAGHC,IAAAA,aAAa,EAAE,KAHZ;AAIHM,IAAAA,cAAc,EAAE,eAJb;AAKHC,IAAAA,WAAW,EAAE;AALV,GAT0B;AAgB/BC,EAAAA,KAAK,EAAE;AAAEC,IAAAA,QAAQ,EAAE,EAAZ;AAAgBC,IAAAA,UAAU,EAAE;AAA5B;AAhBwB,CAAlB,CAAf;;AAmBA,IAAMC,QAAQ,GAAG,eAAG,EAAH,IAAS,EAAT,GAAc,EAA/B;;AAuDA,IAAMC,kCAAkC,GAAG,SAArCA,kCAAqC,CASzCC,KATyC,EAUtC;AACH,MACEC,OADF,GAYID,KAZJ,CACEC,OADF;AAAA,MAEEC,uBAFF,GAYIF,KAZJ,CAEEE,uBAFF;AAAA,MAGEC,oBAHF,GAYIH,KAZJ,CAGEG,oBAHF;AAAA,MAIEC,cAJF,GAYIJ,KAZJ,CAIEI,cAJF;AAAA,MAKEC,QALF,GAYIL,KAZJ,CAKEK,QALF;AAAA,6BAYIL,KAZJ,CAMEM,aANF;AAAA,MAMEA,aANF,qCAMkBC,4BANlB;AAAA,8BAYIP,KAZJ,CAOEQ,cAPF;AAAA,MAOEA,cAPF,sCAOmBC,4CAPnB;AAAA,6BAYIT,KAZJ,CAQEU,aARF;AAAA,MAQEA,aARF,qCAQkBC,0CARlB;AAAA,4BAYIX,KAZJ,CASEY,YATF;AAAA,MASEA,YATF,oCASiBC,wCATjB;AAAA,8BAYIb,KAZJ,CAUEc,kBAVF;AAAA,MAUEA,kBAVF,sCAUuBC,oDAVvB;AAAA,MAWEC,MAXF,GAYIhB,KAZJ,CAWEgB,MAXF;;AAcA,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,cAFJ;AAAA,MAEsBlC,SAFtB,yBAEsBA,SAFtB;AAAA,MAEiCM,gBAFjC,yBAEiCA,gBAFjC;AAAA,MAEmDC,GAFnD,yBAEmDA,GAFnD;AAAA,MAEwDI,KAFxD,yBAEwDA,KAFxD;AAAA,8CAGIwB,MAHJ;AAAA,MAGcC,MAHd,yBAGcA,MAHd;AAAA,MAGsBC,UAHtB,yBAGsBA,UAHtB;;AAOA,MAAMC,WAAW,GAAG,gEAClBrB,OADkB,EAElBsB,IAAI,CAACC,KAAL,CAAW1B,QAAQ,IAAI,CAACH,KAAK,CAACC,QAAN,IAAkBf,MAAM,CAACc,KAAP,CAAaC,QAAhC,IAA4C,CAAhD,CAAnB,CAFkB,CAApB;AAKA,SACE,gCAAC,2CAAD;AACE,IAAA,OAAO,EAAE,mBAAM;AACb,UAAIS,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACJ,OAAD,CAAR;AACD;AACF,KALH;AAME,IAAA,KAAK,EAAE,CACLpB,MAAM,CAACG,SADF,EAEL;AAAEyC,MAAAA,eAAe,EAAEJ,UAAnB;AAA+BK,MAAAA,iBAAiB,EAAEN;AAAlD,KAFK,EAGLpC,SAHK,CANT;AAWE,IAAA,MAAM,EAAC,wBAXT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAaE,gCAAC,aAAD;AAAe,IAAA,OAAO,EAAEiB,OAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAbF,EAcE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACpB,MAAM,CAACS,gBAAR,EAA0BA,gBAA1B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACT,MAAM,CAACU,GAAR,EAAaA,GAAb,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,YAAD;AAAc,IAAA,OAAO,EAAEU,OAAvB;AAAgC,IAAA,WAAW,EAAEqB,WAA7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAEE,gCAAC,kBAAD;AAAoB,IAAA,OAAO,EAAErB,OAA7B;AAAsC,IAAA,cAAc,EAAEG,cAAtD;AAAsE,IAAA,MAAM,EAAEY,MAA9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAFF,CADF,EAKE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACnC,MAAM,CAACU,GAAR,EAAaA,GAAb,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,cAAD;AAAgB,IAAA,oBAAoB,EAAEY,oBAAtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAEE,gCAAC,aAAD;AACE,IAAA,OAAO,EAAEF,OADX;AAEE,IAAA,uBAAuB,EAAEC,uBAF3B;AAGE,IAAA,oBAAoB,EAAEC,oBAHxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAFF,CALF,CAdF,CADF;AA+BD,CApED;;AAyFA,IAAMwB,0CAA0C,GAAGC,kBAAMC,IAAN,CACjD9B,kCADiD,CAAnD;;AAQO,IAAM+B,uBAAuB,GAAG,SAA1BA,uBAA0B,CASrC9B,KATqC,EAUlC;AACH,4BAQI,0CARJ;AAAA,MACEI,cADF,uBACEA,cADF;AAAA,MAEEC,QAFF,uBAEEA,QAFF;AAAA,MAGEC,aAHF,uBAGEA,aAHF;AAAA,MAIEE,cAJF,uBAIEA,cAJF;AAAA,MAKEE,aALF,uBAKEA,aALF;AAAA,MAMEE,YANF,uBAMEA,YANF;AAAA,MAOEE,kBAPF,uBAOEA,kBAPF;;AASA,SACE,gCAAC,0CAAD;AAEIV,IAAAA,cAAc,EAAdA,cAFJ;AAGIC,IAAAA,QAAQ,EAARA,QAHJ;AAIIC,IAAAA,aAAa,EAAbA,aAJJ;AAKIE,IAAAA,cAAc,EAAdA,cALJ;AAMIE,IAAAA,aAAa,EAAbA,aANJ;AAOIE,IAAAA,YAAY,EAAZA,YAPJ;AAQIE,IAAAA,kBAAkB,EAAlBA;AARJ,KAUMd,KAVN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAcD,CAlCM;;;AAoCP8B,uBAAuB,CAACR,WAAxB,GAAsC,yCAAtC","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\n\nimport { ChannelAvatar } from './ChannelAvatar';\nimport { useChannelPreviewDisplayName } from './hooks/useChannelPreviewDisplayName';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { vw } from '../../utils/utils';\n\nimport type { ChannelPreviewProps } from './ChannelPreview';\nimport type { LatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport { ChannelPreviewTitle } from './ChannelPreviewTitle';\nimport { ChannelPreviewMessage } from './ChannelPreviewMessage';\nimport { ChannelPreviewStatus } from './ChannelPreviewStatus';\nimport { ChannelPreviewUnreadCount } from './ChannelPreviewUnreadCount';\n\nconst styles = StyleSheet.create({\n container: {\n borderBottomWidth: 1,\n flex: 1,\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingVertical: 12,\n },\n contentContainer: { flex: 1 },\n row: {\n alignItems: 'center',\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingLeft: 8,\n },\n title: { fontSize: 14, fontWeight: '700' },\n});\n\nconst maxWidth = vw(80) - 16 - 40;\n\nexport type ChannelPreviewMessengerPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ChannelPreviewProps<At, Ch, Co, Ev, Me, Re, Us>, 'channel'> &\n Pick<\n ChannelsContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'maxUnreadCount'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n > & {\n /**\n * Latest message on a channel, formatted for preview\n *\n * e.g.,\n *\n * ```json\n * {\n * created_at: '' ,\n * messageObject: { ... },\n * previews: {\n * bold: true,\n * text: 'This is the message preview text'\n * },\n * status: 0 | 1 | 2 // read states of latest message.\n * }\n * ```\n *\n * @overrideType object\n */\n latestMessagePreview: LatestMessagePreview<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Formatter function for date of latest message.\n * @param date Message date\n * @returns Formatted date string\n *\n * By default today's date is shown in 'HH:mm A' format and other dates\n * are displayed in 'DD/MM/YY' format. props.latestMessage.created_at is the\n * default formatted date. This default logic is part of ChannelPreview component.\n */\n formatLatestMessageDate?: (date: Date) => string;\n /** Number of unread messages on the channel */\n unread?: number;\n };\n\nconst ChannelPreviewMessengerWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n formatLatestMessageDate,\n latestMessagePreview,\n maxUnreadCount,\n onSelect,\n PreviewAvatar = ChannelAvatar,\n PreviewMessage = ChannelPreviewMessage,\n PreviewStatus = ChannelPreviewStatus,\n PreviewTitle = ChannelPreviewTitle,\n PreviewUnreadCount = ChannelPreviewUnreadCount,\n unread,\n } = props;\n\n const {\n theme: {\n channelPreview: { container, contentContainer, row, title },\n colors: { border, white_snow },\n },\n } = useTheme();\n\n const displayName = useChannelPreviewDisplayName(\n channel,\n Math.floor(maxWidth / ((title.fontSize || styles.title.fontSize) / 2)),\n );\n\n return (\n <TouchableOpacity\n onPress={() => {\n if (onSelect) {\n onSelect(channel);\n }\n }}\n style={[\n styles.container,\n { backgroundColor: white_snow, borderBottomColor: border },\n container,\n ]}\n testID='channel-preview-button'\n >\n <PreviewAvatar channel={channel} />\n <View style={[styles.contentContainer, contentContainer]}>\n <View style={[styles.row, row]}>\n <PreviewTitle channel={channel} displayName={displayName} />\n <PreviewUnreadCount channel={channel} maxUnreadCount={maxUnreadCount} unread={unread} />\n </View>\n <View style={[styles.row, row]}>\n <PreviewMessage latestMessagePreview={latestMessagePreview} />\n <PreviewStatus\n channel={channel}\n formatLatestMessageDate={formatLatestMessageDate}\n latestMessagePreview={latestMessagePreview}\n />\n </View>\n </View>\n </TouchableOpacity>\n );\n};\n\nexport type ChannelPreviewMessengerProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Omit<\n ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n 'channel' | 'latestMessagePreview'\n >\n> &\n Pick<\n ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n 'channel' | 'latestMessagePreview'\n >;\n\nconst MemoizedChannelPreviewMessengerWithContext = React.memo(\n ChannelPreviewMessengerWithContext,\n) as typeof ChannelPreviewMessengerWithContext;\n\n/**\n * This UI component displays an individual preview item for each channel in a list. It also receives all props\n * from the ChannelPreview component.\n */\nexport const ChannelPreviewMessenger = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ChannelPreviewMessengerProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n maxUnreadCount,\n onSelect,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n } = useChannelsContext<At, Ch, Co, Ev, Me, Re, Us>();\n return (\n <MemoizedChannelPreviewMessengerWithContext\n {...{\n maxUnreadCount,\n onSelect,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n }}\n {...props}\n />\n );\n};\n\nChannelPreviewMessenger.displayName = 'ChannelPreviewMessenger{channelPreview}';\n"]}
1
+ {"version":3,"sources":["ChannelPreviewMessenger.tsx"],"names":["styles","StyleSheet","create","container","borderBottomWidth","flex","flexDirection","paddingHorizontal","paddingVertical","contentContainer","row","alignItems","justifyContent","paddingLeft","title","fontSize","fontWeight","maxWidth","ChannelPreviewMessengerWithContext","props","channel","formatLatestMessageDate","latestMessagePreview","maxUnreadCount","onSelect","PreviewAvatar","ChannelAvatar","PreviewMessage","ChannelPreviewMessage","PreviewStatus","ChannelPreviewStatus","PreviewTitle","ChannelPreviewTitle","PreviewUnreadCount","ChannelPreviewUnreadCount","unread","theme","channelPreview","colors","border","white_snow","displayName","Math","floor","backgroundColor","borderBottomColor","id","MemoizedChannelPreviewMessengerWithContext","React","memo","ChannelPreviewMessenger"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\n\nimport { ChannelAvatar } from './ChannelAvatar';\nimport { useChannelPreviewDisplayName } from './hooks/useChannelPreviewDisplayName';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { vw } from '../../utils/utils';\n\nimport type { ChannelPreviewProps } from './ChannelPreview';\nimport type { LatestMessagePreview } from './hooks/useLatestMessagePreview';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\nimport { ChannelPreviewTitle } from './ChannelPreviewTitle';\nimport { ChannelPreviewMessage } from './ChannelPreviewMessage';\nimport { ChannelPreviewStatus } from './ChannelPreviewStatus';\nimport { ChannelPreviewUnreadCount } from './ChannelPreviewUnreadCount';\n\nconst styles = StyleSheet.create({\n container: {\n borderBottomWidth: 1,\n flex: 1,\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingVertical: 12,\n },\n contentContainer: { flex: 1 },\n row: {\n alignItems: 'center',\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingLeft: 8,\n },\n title: { fontSize: 14, fontWeight: '700' },\n});\n\nconst maxWidth = vw(80) - 16 - 40;\n\nexport type ChannelPreviewMessengerPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<ChannelPreviewProps<At, Ch, Co, Ev, Me, Re, Us>, 'channel'> &\n Pick<\n ChannelsContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'maxUnreadCount'\n | 'onSelect'\n | 'PreviewAvatar'\n | 'PreviewMessage'\n | 'PreviewStatus'\n | 'PreviewTitle'\n | 'PreviewUnreadCount'\n > & {\n /**\n * Latest message on a channel, formatted for preview\n *\n * e.g.,\n *\n * ```json\n * {\n * created_at: '' ,\n * messageObject: { ... },\n * previews: {\n * bold: true,\n * text: 'This is the message preview text'\n * },\n * status: 0 | 1 | 2 // read states of latest message.\n * }\n * ```\n *\n * @overrideType object\n */\n latestMessagePreview: LatestMessagePreview<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Formatter function for date of latest message.\n * @param date Message date\n * @returns Formatted date string\n *\n * By default today's date is shown in 'HH:mm A' format and other dates\n * are displayed in 'DD/MM/YY' format. props.latestMessage.created_at is the\n * default formatted date. This default logic is part of ChannelPreview component.\n */\n formatLatestMessageDate?: (date: Date) => string;\n /** Number of unread messages on the channel */\n unread?: number;\n };\n\nconst ChannelPreviewMessengerWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n formatLatestMessageDate,\n latestMessagePreview,\n maxUnreadCount,\n onSelect,\n PreviewAvatar = ChannelAvatar,\n PreviewMessage = ChannelPreviewMessage,\n PreviewStatus = ChannelPreviewStatus,\n PreviewTitle = ChannelPreviewTitle,\n PreviewUnreadCount = ChannelPreviewUnreadCount,\n unread,\n } = props;\n\n const {\n theme: {\n channelPreview: { container, contentContainer, row, title },\n colors: { border, white_snow },\n },\n } = useTheme();\n\n const displayName = useChannelPreviewDisplayName(\n channel,\n Math.floor(maxWidth / ((title.fontSize || styles.title.fontSize) / 2)),\n );\n\n return (\n <TouchableOpacity\n onPress={() => {\n if (onSelect) {\n onSelect(channel);\n }\n }}\n style={[\n styles.container,\n { backgroundColor: white_snow, borderBottomColor: border },\n container,\n ]}\n testID='channel-preview-button'\n >\n <PreviewAvatar channel={channel} />\n <View\n style={[styles.contentContainer, contentContainer]}\n testID={`channel-preview-content-${channel.id}`}\n >\n <View style={[styles.row, row]}>\n <PreviewTitle channel={channel} displayName={displayName} />\n <PreviewUnreadCount channel={channel} maxUnreadCount={maxUnreadCount} unread={unread} />\n </View>\n <View style={[styles.row, row]}>\n <PreviewMessage latestMessagePreview={latestMessagePreview} />\n <PreviewStatus\n channel={channel}\n formatLatestMessageDate={formatLatestMessageDate}\n latestMessagePreview={latestMessagePreview}\n />\n </View>\n </View>\n </TouchableOpacity>\n );\n};\n\nexport type ChannelPreviewMessengerProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Omit<\n ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n 'channel' | 'latestMessagePreview'\n >\n> &\n Pick<\n ChannelPreviewMessengerPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n 'channel' | 'latestMessagePreview'\n >;\n\nconst MemoizedChannelPreviewMessengerWithContext = React.memo(\n ChannelPreviewMessengerWithContext,\n) as typeof ChannelPreviewMessengerWithContext;\n\n/**\n * This UI component displays an individual preview item for each channel in a list. It also receives all props\n * from the ChannelPreview component.\n */\nexport const ChannelPreviewMessenger = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ChannelPreviewMessengerProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n maxUnreadCount,\n onSelect,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n } = useChannelsContext<At, Ch, Co, Ev, Me, Re, Us>();\n return (\n <MemoizedChannelPreviewMessengerWithContext\n {...{\n maxUnreadCount,\n onSelect,\n PreviewAvatar,\n PreviewMessage,\n PreviewStatus,\n PreviewTitle,\n PreviewUnreadCount,\n }}\n {...props}\n />\n );\n};\n\nChannelPreviewMessenger.displayName = 'ChannelPreviewMessenger{channelPreview}';\n"]}
@@ -15,12 +15,14 @@ var getChannelPreviewDisplayAvatar = function getChannelPreviewDisplayAvatar(cha
15
15
  var _client$user;
16
16
 
17
17
  var currentUserId = client == null ? void 0 : (_client$user = client.user) == null ? void 0 : _client$user.id;
18
+ var channelId = channel == null ? void 0 : channel.id;
18
19
  var channelData = channel == null ? void 0 : channel.data;
19
20
  var channelName = channelData == null ? void 0 : channelData.name;
20
21
  var channelImage = channelData == null ? void 0 : channelData.image;
21
22
 
22
23
  if (channelImage) {
23
24
  return {
25
+ id: channelId,
24
26
  image: channelImage,
25
27
  name: channelName
26
28
  };
@@ -35,29 +37,36 @@ var getChannelPreviewDisplayAvatar = function getChannelPreviewDisplayAvatar(cha
35
37
  });
36
38
 
37
39
  if (otherMembers.length === 1) {
38
- var _otherMembers$0$user, _otherMembers$0$user2;
40
+ var _otherMembers$0$user, _otherMembers$0$user2, _otherMembers$0$user3;
39
41
 
40
42
  return {
41
- image: (_otherMembers$0$user = otherMembers[0].user) == null ? void 0 : _otherMembers$0$user.image,
42
- name: channelName || ((_otherMembers$0$user2 = otherMembers[0].user) == null ? void 0 : _otherMembers$0$user2.name)
43
+ id: (_otherMembers$0$user = otherMembers[0].user) == null ? void 0 : _otherMembers$0$user.id,
44
+ image: (_otherMembers$0$user2 = otherMembers[0].user) == null ? void 0 : _otherMembers$0$user2.image,
45
+ name: channelName || ((_otherMembers$0$user3 = otherMembers[0].user) == null ? void 0 : _otherMembers$0$user3.name)
43
46
  };
44
47
  }
45
48
 
46
49
  return {
47
- images: otherMembers.slice(0, 4).map(function (member) {
50
+ ids: otherMembers.slice(0, 4).map(function (member) {
48
51
  var _member$user2;
49
52
 
50
- return ((_member$user2 = member.user) == null ? void 0 : _member$user2.image) || '';
53
+ return ((_member$user2 = member.user) == null ? void 0 : _member$user2.id) || '';
51
54
  }),
52
- names: otherMembers.slice(0, 4).map(function (member) {
55
+ images: otherMembers.slice(0, 4).map(function (member) {
53
56
  var _member$user3;
54
57
 
55
- return ((_member$user3 = member.user) == null ? void 0 : _member$user3.name) || '';
58
+ return ((_member$user3 = member.user) == null ? void 0 : _member$user3.image) || '';
59
+ }),
60
+ names: otherMembers.slice(0, 4).map(function (member) {
61
+ var _member$user4;
62
+
63
+ return ((_member$user4 = member.user) == null ? void 0 : _member$user4.name) || '';
56
64
  })
57
65
  };
58
66
  }
59
67
 
60
68
  return {
69
+ id: channelId,
61
70
  name: channelName
62
71
  };
63
72
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["useChannelPreviewDisplayAvatar.ts"],"names":["getChannelPreviewDisplayAvatar","channel","client","currentUserId","user","id","channelData","data","channelName","name","channelImage","image","members","Object","values","state","otherMembers","filter","member","length","images","slice","map","names","useChannelPreviewDisplayAvatar","displayAvatar","setDisplayAvatar"],"mappings":";;;;;;;;;AAAA;;AAEA;;AAeO,IAAMA,8BAA8B,GAAG,SAAjCA,8BAAiC,CAS5CC,OAT4C,EAU5CC,MAV4C,EAWzC;AAAA;;AACH,MAAMC,aAAa,GAAGD,MAAH,oCAAGA,MAAM,CAAEE,IAAX,qBAAG,aAAcC,EAApC;AACA,MAAMC,WAAW,GAAGL,OAAH,oBAAGA,OAAO,CAAEM,IAA7B;AACA,MAAMC,WAAW,GAAGF,WAAH,oBAAGA,WAAW,CAAEG,IAAjC;AACA,MAAMC,YAAY,GAAGJ,WAAH,oBAAGA,WAAW,CAAEK,KAAlC;;AAEA,MAAID,YAAJ,EAAkB;AAChB,WAAO;AACLC,MAAAA,KAAK,EAAED,YADF;AAELD,MAAAA,IAAI,EAAED;AAFD,KAAP;AAID,GALD,MAKO,IAAIL,aAAJ,EAAmB;AAAA;;AACxB,QAAMS,OAAO,GAAGC,MAAM,CAACC,MAAP,mBAAcb,OAAO,CAACc,KAAtB,qBAAc,eAAeH,OAA7B,CAAhB;AACA,QAAMI,YAAY,GAAGJ,OAAO,CAACK,MAAR,CAAe,UAACC,MAAD;AAAA;;AAAA,aAAY,iBAAAA,MAAM,CAACd,IAAP,kCAAaC,EAAb,MAAoBF,aAAhC;AAAA,KAAf,CAArB;;AAEA,QAAIa,YAAY,CAACG,MAAb,KAAwB,CAA5B,EAA+B;AAAA;;AAC7B,aAAO;AACLR,QAAAA,KAAK,0BAAEK,YAAY,CAAC,CAAD,CAAZ,CAAgBZ,IAAlB,qBAAE,qBAAsBO,KADxB;AAELF,QAAAA,IAAI,EAAED,WAAW,8BAAIQ,YAAY,CAAC,CAAD,CAAZ,CAAgBZ,IAApB,qBAAI,sBAAsBK,IAA1B;AAFZ,OAAP;AAID;;AACD,WAAO;AACLW,MAAAA,MAAM,EAAEJ,YAAY,CAACK,KAAb,CAAmB,CAAnB,EAAsB,CAAtB,EAAyBC,GAAzB,CAA6B,UAACJ,MAAD;AAAA;;AAAA,eAAY,kBAAAA,MAAM,CAACd,IAAP,mCAAaO,KAAb,KAAsB,EAAlC;AAAA,OAA7B,CADH;AAELY,MAAAA,KAAK,EAAEP,YAAY,CAACK,KAAb,CAAmB,CAAnB,EAAsB,CAAtB,EAAyBC,GAAzB,CAA6B,UAACJ,MAAD;AAAA;;AAAA,eAAY,kBAAAA,MAAM,CAACd,IAAP,mCAAaK,IAAb,KAAqB,EAAjC;AAAA,OAA7B;AAFF,KAAP;AAID;;AACD,SAAO;AACLA,IAAAA,IAAI,EAAED;AADD,GAAP;AAGD,CAxCM;;;;AAgDA,IAAMgB,8BAA8B,GAAG,SAAjCA,8BAAiC,CAS5CvB,OAT4C,EAUzC;AAAA;;AACH,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AAEA,MAAMI,WAAW,GAAGL,OAAH,oBAAGA,OAAO,CAAEM,IAA7B;AACA,MAAMI,KAAK,GAAGL,WAAH,oBAAGA,WAAW,CAAEK,KAA3B;AACA,MAAMF,IAAI,GAAGH,WAAH,oBAAGA,WAAW,CAAEG,IAA1B;AACA,MAAMJ,EAAE,GAAGH,MAAH,qCAAGA,MAAM,CAAEE,IAAX,qBAAG,cAAcC,EAAzB;;AAEA,kBAA0C,qBACxCL,8BAA8B,CAACC,OAAD,EAAUC,MAAV,CADU,CAA1C;AAAA;AAAA,MAAOuB,aAAP;AAAA,MAAsBC,gBAAtB;;AAIA,wBAAU,YAAM;AACdA,IAAAA,gBAAgB,CAAC1B,8BAA8B,CAACC,OAAD,EAAUC,MAAV,CAA/B,CAAhB;AACD,GAFD,EAEG,CAACG,EAAD,EAAKM,KAAL,EAAYF,IAAZ,CAFH;AAIA,SAAOgB,aAAP;AACD,CA3BM","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const getChannelPreviewDisplayAvatar = <\n At extends DefaultAttachmentType = DefaultAttachmentType,\n Ch extends DefaultChannelType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends DefaultEventType = DefaultEventType,\n Me extends DefaultMessageType = DefaultMessageType,\n Re extends DefaultReactionType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const currentUserId = client?.user?.id;\n const channelData = channel?.data;\n const channelName = channelData?.name;\n const channelImage = channelData?.image;\n\n if (channelImage) {\n return {\n image: channelImage,\n name: channelName,\n };\n } else if (currentUserId) {\n const members = Object.values(channel.state?.members);\n const otherMembers = members.filter((member) => member.user?.id !== currentUserId);\n\n if (otherMembers.length === 1) {\n return {\n image: otherMembers[0].user?.image,\n name: channelName || otherMembers[0].user?.name,\n };\n }\n return {\n images: otherMembers.slice(0, 4).map((member) => member.user?.image || ''),\n names: otherMembers.slice(0, 4).map((member) => member.user?.name || ''),\n };\n }\n return {\n name: channelName,\n };\n};\n\n/**\n * Hook to set the display avatar for channel preview\n * @param {*} channel\n *\n * @returns {object} e.g., { image: 'http://dummyurl.com/test.png', name: 'Uhtred Bebbanburg' }\n */\nexport const useChannelPreviewDisplayAvatar = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends DefaultChannelType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const channelData = channel?.data;\n const image = channelData?.image;\n const name = channelData?.name;\n const id = client?.user?.id;\n\n const [displayAvatar, setDisplayAvatar] = useState(\n getChannelPreviewDisplayAvatar(channel, client),\n );\n\n useEffect(() => {\n setDisplayAvatar(getChannelPreviewDisplayAvatar(channel, client));\n }, [id, image, name]);\n\n return displayAvatar;\n};\n"]}
1
+ {"version":3,"sources":["useChannelPreviewDisplayAvatar.ts"],"names":["getChannelPreviewDisplayAvatar","channel","client","currentUserId","user","id","channelId","channelData","data","channelName","name","channelImage","image","members","Object","values","state","otherMembers","filter","member","length","ids","slice","map","images","names","useChannelPreviewDisplayAvatar","displayAvatar","setDisplayAvatar"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\nexport const getChannelPreviewDisplayAvatar = <\n At extends DefaultAttachmentType = DefaultAttachmentType,\n Ch extends DefaultChannelType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends DefaultEventType = DefaultEventType,\n Me extends DefaultMessageType = DefaultMessageType,\n Re extends DefaultReactionType = DefaultReactionType,\n Us extends DefaultUserType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const currentUserId = client?.user?.id;\n const channelId = channel?.id;\n const channelData = channel?.data;\n const channelName = channelData?.name;\n const channelImage = channelData?.image;\n\n if (channelImage) {\n return {\n id: channelId,\n image: channelImage,\n name: channelName,\n };\n } else if (currentUserId) {\n const members = Object.values(channel.state?.members);\n const otherMembers = members.filter((member) => member.user?.id !== currentUserId);\n\n if (otherMembers.length === 1) {\n return {\n id: otherMembers[0].user?.id,\n image: otherMembers[0].user?.image,\n name: channelName || otherMembers[0].user?.name,\n };\n }\n\n return {\n ids: otherMembers.slice(0, 4).map((member) => member.user?.id || ''),\n images: otherMembers.slice(0, 4).map((member) => member.user?.image || ''),\n names: otherMembers.slice(0, 4).map((member) => member.user?.name || ''),\n };\n }\n return {\n id: channelId,\n name: channelName,\n };\n};\n\n/**\n * Hook to set the display avatar for channel preview\n * @param {*} channel\n *\n * @returns {object} e.g., { image: 'http://dummyurl.com/test.png', name: 'Uhtred Bebbanburg' }\n */\nexport const useChannelPreviewDisplayAvatar = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends DefaultChannelType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n const channelData = channel?.data;\n const image = channelData?.image;\n const name = channelData?.name;\n const id = client?.user?.id;\n\n const [displayAvatar, setDisplayAvatar] = useState(\n getChannelPreviewDisplayAvatar(channel, client),\n );\n\n useEffect(() => {\n setDisplayAvatar(getChannelPreviewDisplayAvatar(channel, client));\n }, [id, image, name]);\n\n return displayAvatar;\n};\n"]}
@@ -22,7 +22,8 @@ var getLatestMessageDisplayText = function getLatestMessageDisplayText(channel,
22
22
  bold: false,
23
23
  text: t('Nothing yet...')
24
24
  }];
25
- if (message.deleted_at) return [{
25
+ var isMessageTypeDeleted = message.type === 'deleted';
26
+ if (isMessageTypeDeleted) return [{
26
27
  bold: false,
27
28
  text: t('Message deleted')
28
29
  }];
@@ -1 +1 @@
1
- {"version":3,"sources":["useLatestMessagePreview.ts"],"names":["getLatestMessageDisplayText","channel","client","message","t","bold","text","deleted_at","currentUserId","userID","messageOwnerId","user","id","members","Object","keys","state","owner","length","name","username","ownerText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","Array","isArray","mentioned_users","reduce","acc","cur","userName","regEx","RegExp","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isSame","Date","format","getLatestMessageReadStatus","readEvents","readList","read","messageUpdatedAt","updated_at","undefined","values","some","last_read","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","useLatestMessagePreview","forceUpdate","channelConfigExists","getConfig","channelLastMessageString","setReadEvents","latestMessagePreview","setLatestMessagePreview","readStatus","read_events"],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\ntype LatestMessage<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> =\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>;\n\nexport type LatestMessagePreview<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getLatestMessageDisplayText = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n if (message.deleted_at) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client.userID;\n const messageOwnerId = message.user?.id;\n const members = Object.keys(channel.state.members);\n const owner =\n messageOwnerId === currentUserId\n ? t('You')\n : members.length > 2\n ? message.user?.name || message.user?.username || message.user?.id || ''\n : '';\n const ownerText = owner ? `${owner === t('You') ? '' : '@'}${owner}: ` : '';\n const boldOwner = ownerText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = Array.isArray(message.mentioned_users)\n ? message.mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: ownerText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\n/**\n * set up enum\n * 0 = latest message is not current user's message\n * 1 = nobody has read latest message which is the current user's message\n * 2 = someone has read latest message which is the current user's message\n */\nconst getLatestMessageReadStatus = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n readEvents: boolean,\n) => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) return 0;\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? 2\n : 1;\n};\n\nconst getLatestMessagePreview = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(params: {\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>;\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: 0,\n };\n }\n const message = lastMessage || messages.length ? messages[messages.length - 1] : undefined;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<At, Ch, Co, Ev, Me, Re, Us>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: 0,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"]}
1
+ {"version":3,"sources":["useLatestMessagePreview.ts"],"names":["getLatestMessageDisplayText","channel","client","message","t","bold","text","isMessageTypeDeleted","type","currentUserId","userID","messageOwnerId","user","id","members","Object","keys","state","owner","length","name","username","ownerText","boldOwner","includes","shortenedText","substring","replace","mentionedUsers","Array","isArray","mentioned_users","reduce","acc","cur","userName","regEx","RegExp","split","index","test","push","command","attachments","getLatestMessageDisplayDate","tDateTimeParser","parserOutput","created_at","isSame","Date","format","getLatestMessageReadStatus","readEvents","readList","read","messageUpdatedAt","updated_at","undefined","values","some","last_read","getLatestMessagePreview","params","lastMessage","messages","messageObject","previews","status","useLatestMessagePreview","forceUpdate","channelConfigExists","getConfig","channelLastMessageString","setReadEvents","latestMessagePreview","setLatestMessagePreview","readStatus","read_events"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AAiDA,IAAMA,2BAA2B,GAAG,SAA9BA,2BAA8B,CASlCC,OATkC,EAUlCC,MAVkC,EAWlCC,OAXkC,EAYlCC,CAZkC,EAa/B;AAAA;;AACH,MAAI,CAACD,OAAL,EAAc,OAAO,CAAC;AAAEE,IAAAA,IAAI,EAAE,KAAR;AAAeC,IAAAA,IAAI,EAAEF,CAAC,CAAC,gBAAD;AAAtB,GAAD,CAAP;AACd,MAAMG,oBAAoB,GAAGJ,OAAO,CAACK,IAAR,KAAiB,SAA9C;AACA,MAAID,oBAAJ,EAA0B,OAAO,CAAC;AAAEF,IAAAA,IAAI,EAAE,KAAR;AAAeC,IAAAA,IAAI,EAAEF,CAAC,CAAC,iBAAD;AAAtB,GAAD,CAAP;AAC1B,MAAMK,aAAa,GAAGP,MAAM,CAACQ,MAA7B;AACA,MAAMC,cAAc,oBAAGR,OAAO,CAACS,IAAX,qBAAG,cAAcC,EAArC;AACA,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAP,CAAYf,OAAO,CAACgB,KAAR,CAAcH,OAA1B,CAAhB;AACA,MAAMI,KAAK,GACTP,cAAc,KAAKF,aAAnB,GACIL,CAAC,CAAC,KAAD,CADL,GAEIU,OAAO,CAACK,MAAR,GAAiB,CAAjB,GACA,mBAAAhB,OAAO,CAACS,IAAR,oCAAcQ,IAAd,wBAAsBjB,OAAO,CAACS,IAA9B,qBAAsB,eAAcS,QAApC,wBAAgDlB,OAAO,CAACS,IAAxD,qBAAgD,eAAcC,EAA9D,KAAoE,EADpE,GAEA,EALN;AAMA,MAAMS,SAAS,GAAGJ,KAAK,SAAMA,KAAK,KAAKd,CAAC,CAAC,KAAD,CAAX,GAAqB,EAArB,GAA0B,GAAhC,IAAsCc,KAAtC,UAAkD,EAAzE;AACA,MAAMK,SAAS,GAAGD,SAAS,CAACE,QAAV,CAAmB,GAAnB,CAAlB;;AACA,MAAIrB,OAAO,CAACG,IAAZ,EAAkB;AAEhB,QAAMmB,aAAa,GAAGtB,OAAO,CAACG,IAAR,CAAaoB,SAAb,CAAuB,CAAvB,EAA0B,GAA1B,EAA+BC,OAA/B,CAAuC,KAAvC,EAA8C,GAA9C,CAAtB;AACA,QAAMC,cAAc,GAAGC,KAAK,CAACC,OAAN,CAAc3B,OAAO,CAAC4B,eAAtB,IACnB5B,OAAO,CAAC4B,eAAR,CAAwBC,MAAxB,CAA+B,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC3C,UAAMC,QAAQ,GAAGD,GAAG,CAACd,IAAJ,IAAYc,GAAG,CAACrB,EAAhB,IAAsB,EAAvC;;AACA,UAAIsB,QAAJ,EAAc;AACZF,QAAAA,GAAG,KAAOA,GAAG,CAACd,MAAJ,GAAa,GAAb,GAAmB,EAA1B,UAAgCgB,QAAnC;AACD;;AACD,aAAOF,GAAP;AACD,KAND,EAMG,EANH,CADmB,GAQnB,EARJ;AASA,QAAMG,KAAK,GAAG,IAAIC,MAAJ,QAAgBT,cAAhB,OAAd;AACA,YACE;AAAEvB,MAAAA,IAAI,EAAEkB,SAAR;AAAmBjB,MAAAA,IAAI,EAAEgB;AAAzB,KADF,6CAEKG,aAAa,CAACa,KAAd,CAAoB,EAApB,EAAwBN,MAAxB,CACD,UAACC,GAAD,EAAMC,GAAN,EAAWK,KAAX,EAAqB;AACnB,UAAIL,GAAG,KAAK,GAAR,IAAeN,cAAf,IAAiCQ,KAAK,CAACI,IAAN,CAAWf,aAAa,CAACC,SAAd,CAAwBa,KAAxB,CAAX,CAArC,EAAiF;AAC/EN,QAAAA,GAAG,CAACQ,IAAJ,CAAS;AAAEpC,UAAAA,IAAI,EAAE,IAAR;AAAcC,UAAAA,IAAI,EAAE4B;AAApB,SAAT;AACD,OAFD,MAEO,IAAIN,cAAc,IAAIQ,KAAK,CAACI,IAAN,CAAWP,GAAG,CAACA,GAAG,CAACd,MAAJ,GAAa,CAAd,CAAH,CAAoBb,IAA/B,CAAtB,EAA4D;AACjE2B,QAAAA,GAAG,CAACQ,IAAJ,CAAS;AAAEpC,UAAAA,IAAI,EAAE,KAAR;AAAeC,UAAAA,IAAI,EAAE4B;AAArB,SAAT;AACD,OAFM,MAEA;AACLD,QAAAA,GAAG,CAACA,GAAG,CAACd,MAAJ,GAAa,CAAd,CAAH,CAAoBb,IAApB,IAA4B4B,GAA5B;AACD;;AACD,aAAOD,GAAP;AACD,KAVA,EAWD,CAAC;AAAE5B,MAAAA,IAAI,EAAE,KAAR;AAAeC,MAAAA,IAAI,EAAE;AAArB,KAAD,CAXC,CAFL;AAgBD;;AACD,MAAIH,OAAO,CAACuC,OAAZ,EAAqB;AACnB,WAAO,CACL;AAAErC,MAAAA,IAAI,EAAEkB,SAAR;AAAmBjB,MAAAA,IAAI,EAAEgB;AAAzB,KADK,EAEL;AAAEjB,MAAAA,IAAI,EAAE,KAAR;AAAeC,MAAAA,IAAI,QAAMH,OAAO,CAACuC;AAAjC,KAFK,CAAP;AAID;;AACD,8BAAIvC,OAAO,CAACwC,WAAZ,aAAI,qBAAqBxB,MAAzB,EAAiC;AAC/B,WAAO,CACL;AAAEd,MAAAA,IAAI,EAAEkB,SAAR;AAAmBjB,MAAAA,IAAI,EAAEgB;AAAzB,KADK,EAEL;AAAEjB,MAAAA,IAAI,EAAE,KAAR;AAAeC,MAAAA,IAAI,EAAEF,CAAC,CAAC,kBAAD;AAAtB,KAFK,CAAP;AAID;;AACD,SAAO,CACL;AAAEC,IAAAA,IAAI,EAAEkB,SAAR;AAAmBjB,IAAAA,IAAI,EAAEgB;AAAzB,GADK,EAEL;AAAEjB,IAAAA,IAAI,EAAE,KAAR;AAAeC,IAAAA,IAAI,EAAEF,CAAC,CAAC,kBAAD;AAAtB,GAFK,CAAP;AAID,CA1ED;;AA4EA,IAAMwC,2BAA2B,GAAG,SAA9BA,2BAA8B,CASlCzC,OATkC,EAUlC0C,eAVkC,EAW/B;AACH,MAAMC,YAAY,GAAGD,eAAe,CAAC1C,OAAD,oBAACA,OAAO,CAAE4C,UAAV,CAApC;;AACA,MAAI,uCAAcD,YAAd,CAAJ,EAAiC;AAC/B,QAAIA,YAAY,CAACE,MAAb,CAAoB,IAAIC,IAAJ,EAApB,EAAgC,KAAhC,CAAJ,EAA4C;AAC1C,aAAOH,YAAY,CAACI,MAAb,CAAoB,IAApB,CAAP;AACD;;AACD,WAAOJ,YAAY,CAACI,MAAb,CAAoB,GAApB,CAAP;AACD;;AACD,SAAOJ,YAAP;AACD,CApBD;;AA4BA,IAAMK,0BAA0B,GAAG,SAA7BA,0BAA6B,CASjClD,OATiC,EAUjCC,MAViC,EAWjCC,OAXiC,EAYjCiD,UAZiC,EAa9B;AAAA;;AACH,MAAM3C,aAAa,GAAGP,MAAM,CAACQ,MAA7B;AACA,MAAI,CAACP,OAAD,IAAYM,aAAa,wBAAKN,OAAO,CAACS,IAAb,qBAAK,eAAcC,EAAnB,CAAzB,IAAkDuC,UAAU,KAAK,KAArE,EAA4E,OAAO,CAAP;AAE5E,MAAMC,QAAQ,GAAGpD,OAAO,CAACgB,KAAR,CAAcqC,IAA/B;;AACA,MAAI7C,aAAJ,EAAmB;AACjB,WAAO4C,QAAQ,CAAC5C,aAAD,CAAf;AACD;;AAED,MAAM8C,gBAAgB,GAAGpD,OAAO,CAACqD,UAAR,GACrB,OAAOrD,OAAO,CAACqD,UAAf,KAA8B,QAA9B,GACE,IAAIP,IAAJ,CAAS9C,OAAO,CAACqD,UAAjB,CADF,GAEErD,OAAO,CAACqD,UAHW,GAIrBC,SAJJ;AAMA,SAAO1C,MAAM,CAAC2C,MAAP,CAAcL,QAAd,EAAwBM,IAAxB,CACL;AAAA,QAAGC,SAAH,QAAGA,SAAH;AAAA,WAAmBL,gBAAgB,IAAIA,gBAAgB,GAAGK,SAA1D;AAAA,GADK,IAGH,CAHG,GAIH,CAJJ;AAKD,CAjCD;;AAmCA,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAQ9BC,MAR8B,EAiB1B;AACJ,MAAQ7D,OAAR,GAAyE6D,MAAzE,CAAQ7D,OAAR;AAAA,MAAiBC,MAAjB,GAAyE4D,MAAzE,CAAiB5D,MAAjB;AAAA,MAAyB6D,WAAzB,GAAyED,MAAzE,CAAyBC,WAAzB;AAAA,MAAsCX,UAAtC,GAAyEU,MAAzE,CAAsCV,UAAtC;AAAA,MAAkDhD,CAAlD,GAAyE0D,MAAzE,CAAkD1D,CAAlD;AAAA,MAAqDyC,eAArD,GAAyEiB,MAAzE,CAAqDjB,eAArD;AAEA,MAAMmB,QAAQ,GAAG/D,OAAO,CAACgB,KAAR,CAAc+C,QAA/B;;AAEA,MAAI,CAACA,QAAQ,CAAC7C,MAAV,IAAoB,CAAC4C,WAAzB,EAAsC;AACpC,WAAO;AACLhB,MAAAA,UAAU,EAAE,EADP;AAELkB,MAAAA,aAAa,EAAER,SAFV;AAGLS,MAAAA,QAAQ,EAAE,CACR;AACE7D,QAAAA,IAAI,EAAE,KADR;AAEEC,QAAAA,IAAI,EAAEF,CAAC,CAAC,gBAAD;AAFT,OADQ,CAHL;AASL+D,MAAAA,MAAM,EAAE;AATH,KAAP;AAWD;;AACD,MAAMhE,OAAO,GAAG4D,WAAW,IAAIC,QAAQ,CAAC7C,MAAxB,GAAiC6C,QAAQ,CAACA,QAAQ,CAAC7C,MAAT,GAAkB,CAAnB,CAAzC,GAAiEsC,SAAjF;AAEA,SAAO;AACLV,IAAAA,UAAU,EAAEH,2BAA2B,CAACzC,OAAD,EAAU0C,eAAV,CADlC;AAELoB,IAAAA,aAAa,EAAE9D,OAFV;AAGL+D,IAAAA,QAAQ,EAAElE,2BAA2B,CAACC,OAAD,EAAUC,MAAV,EAAkBC,OAAlB,EAA2BC,CAA3B,CAHhC;AAIL+D,IAAAA,MAAM,EAAEhB,0BAA0B,CAAClD,OAAD,EAAUC,MAAV,EAAkBC,OAAlB,EAA2BiD,UAA3B;AAJ7B,GAAP;AAMD,CA3CD;;AAoDO,IAAMgB,uBAAuB,GAAG,SAA1BA,uBAA0B,CASrCnE,OATqC,EAUrCoE,WAVqC,EAWrCN,WAXqC,EAclC;AACH,wBAAmB,kCAAnB;AAAA,MAAQ7D,MAAR,mBAAQA,MAAR;;AACA,8BAA+B,gDAA/B;AAAA,MAAQE,CAAR,yBAAQA,CAAR;AAAA,MAAWyC,eAAX,yBAAWA,eAAX;;AAEA,MAAMyB,mBAAmB,GAAG,QAAOrE,OAAP,oBAAOA,OAAO,CAAEsE,SAAhB,MAA8B,UAA1D;AAEA,MAAMP,QAAQ,GAAG/D,OAAO,CAACgB,KAAR,CAAc+C,QAA/B;AACA,MAAM7D,OAAO,GAAG6D,QAAQ,CAAC7C,MAAT,GAAkB6C,QAAQ,CAACA,QAAQ,CAAC7C,MAAT,GAAkB,CAAnB,CAA1B,GAAkDsC,SAAlE;AAEA,MAAMe,wBAAwB,SAAM,CAAAT,WAAW,QAAX,YAAAA,WAAW,CAAElD,EAAb,MAAmBV,OAAnB,oBAAmBA,OAAO,CAAEU,EAA5B,CAAN,KAC5B,CAAAkD,WAAW,QAAX,YAAAA,WAAW,CAAEP,UAAb,MAA2BrD,OAA3B,oBAA2BA,OAAO,CAAEqD,UAApC,CAD4B,CAA9B;;AAIA,kBAAoC,qBAAS,IAAT,CAApC;AAAA;AAAA,MAAOJ,UAAP;AAAA,MAAmBqB,aAAnB;;AACA,mBAAwD,qBAEtD;AACA1B,IAAAA,UAAU,EAAE,EADZ;AAEAkB,IAAAA,aAAa,EAAER,SAFf;AAGAS,IAAAA,QAAQ,EAAE,CACR;AACE7D,MAAAA,IAAI,EAAE,KADR;AAEEC,MAAAA,IAAI,EAAE;AAFR,KADQ,CAHV;AASA6D,IAAAA,MAAM,EAAE;AATR,GAFsD,CAAxD;AAAA;AAAA,MAAOO,oBAAP;AAAA,MAA6BC,uBAA7B;;AAcA,MAAMC,UAAU,GAAGzB,0BAA0B,CAC3ClD,OAD2C,EAE3CC,MAF2C,EAG3C6D,WAAW,IAAI5D,OAH4B,EAI3CiD,UAJ2C,CAA7C;AAOA,wBAAU,YAAM;AACd,QAAIkB,mBAAJ,EAAyB;AAAA;;AACvB,UAAMO,WAAW,yBAAG5E,OAAO,CAACsE,SAAR,EAAH,qBAAG,mBAAqBM,WAAzC;;AACA,UAAI,OAAOA,WAAP,KAAuB,SAA3B,EAAsC;AACpCJ,QAAAA,aAAa,CAACI,WAAD,CAAb;AACD;AACF;AACF,GAPD,EAOG,CAACP,mBAAD,CAPH;AASA,wBACE;AAAA,WACEK,uBAAuB,CACrBd,uBAAuB,CAAC;AACtB5D,MAAAA,OAAO,EAAPA,OADsB;AAEtBC,MAAAA,MAAM,EAANA,MAFsB;AAGtB6D,MAAAA,WAAW,EAAXA,WAHsB;AAItBX,MAAAA,UAAU,EAAVA,UAJsB;AAKtBhD,MAAAA,CAAC,EAADA,CALsB;AAMtByC,MAAAA,eAAe,EAAfA;AANsB,KAAD,CADF,CADzB;AAAA,GADF,EAYE,CAAC2B,wBAAD,EAA2BH,WAA3B,EAAwCjB,UAAxC,EAAoDwB,UAApD,CAZF;AAeA,SAAOF,oBAAP;AACD,CA1EM","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport {\n isDayOrMoment,\n TDateTimeParser,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport type { Channel, ChannelState, MessageResponse, StreamChat } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\ntype LatestMessage<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> =\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>;\n\nexport type LatestMessagePreview<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = {\n created_at: string | number | Date;\n messageObject: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined;\n previews: {\n bold: boolean;\n text: string;\n }[];\n status: number;\n};\n\nconst getLatestMessageDisplayText = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n t: (key: string) => string,\n) => {\n if (!message) return [{ bold: false, text: t('Nothing yet...') }];\n const isMessageTypeDeleted = message.type === 'deleted';\n if (isMessageTypeDeleted) return [{ bold: false, text: t('Message deleted') }];\n const currentUserId = client.userID;\n const messageOwnerId = message.user?.id;\n const members = Object.keys(channel.state.members);\n const owner =\n messageOwnerId === currentUserId\n ? t('You')\n : members.length > 2\n ? message.user?.name || message.user?.username || message.user?.id || ''\n : '';\n const ownerText = owner ? `${owner === t('You') ? '' : '@'}${owner}: ` : '';\n const boldOwner = ownerText.includes('@');\n if (message.text) {\n // rough guess optimization to limit string preview to max 100 characters\n const shortenedText = message.text.substring(0, 100).replace(/\\n/g, ' ');\n const mentionedUsers = Array.isArray(message.mentioned_users)\n ? message.mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName}`;\n }\n return acc;\n }, '')\n : '';\n const regEx = new RegExp(`^(${mentionedUsers})`);\n return [\n { bold: boldOwner, text: ownerText },\n ...shortenedText.split('').reduce(\n (acc, cur, index) => {\n if (cur === '@' && mentionedUsers && regEx.test(shortenedText.substring(index))) {\n acc.push({ bold: true, text: cur });\n } else if (mentionedUsers && regEx.test(acc[acc.length - 1].text)) {\n acc.push({ bold: false, text: cur });\n } else {\n acc[acc.length - 1].text += cur;\n }\n return acc;\n },\n [{ bold: false, text: '' }],\n ),\n ];\n }\n if (message.command) {\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: `/${message.command}` },\n ];\n }\n if (message.attachments?.length) {\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: t('🏙 Attachment...') },\n ];\n }\n return [\n { bold: boldOwner, text: ownerText },\n { bold: false, text: t('Empty message...') },\n ];\n};\n\nconst getLatestMessageDisplayDate = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n tDateTimeParser: TDateTimeParser,\n) => {\n const parserOutput = tDateTimeParser(message?.created_at);\n if (isDayOrMoment(parserOutput)) {\n if (parserOutput.isSame(new Date(), 'day')) {\n return parserOutput.format('LT');\n }\n return parserOutput.format('L');\n }\n return parserOutput;\n};\n\n/**\n * set up enum\n * 0 = latest message is not current user's message\n * 1 = nobody has read latest message which is the current user's message\n * 2 = someone has read latest message which is the current user's message\n */\nconst getLatestMessageReadStatus = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n message: LatestMessage<At, Ch, Co, Ev, Me, Re, Us> | undefined,\n readEvents: boolean,\n) => {\n const currentUserId = client.userID;\n if (!message || currentUserId !== message.user?.id || readEvents === false) return 0;\n\n const readList = channel.state.read;\n if (currentUserId) {\n delete readList[currentUserId];\n }\n\n const messageUpdatedAt = message.updated_at\n ? typeof message.updated_at === 'string'\n ? new Date(message.updated_at)\n : message.updated_at\n : undefined;\n\n return Object.values(readList).some(\n ({ last_read }) => messageUpdatedAt && messageUpdatedAt < last_read,\n )\n ? 2\n : 1;\n};\n\nconst getLatestMessagePreview = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(params: {\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>;\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>;\n readEvents: boolean;\n t: (key: string) => string;\n tDateTimeParser: TDateTimeParser;\n lastMessage?:\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>;\n}) => {\n const { channel, client, lastMessage, readEvents, t, tDateTimeParser } = params;\n\n const messages = channel.state.messages;\n\n if (!messages.length && !lastMessage) {\n return {\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: t('Nothing yet...'),\n },\n ],\n status: 0,\n };\n }\n const message = lastMessage || messages.length ? messages[messages.length - 1] : undefined;\n\n return {\n created_at: getLatestMessageDisplayDate(message, tDateTimeParser),\n messageObject: message,\n previews: getLatestMessageDisplayText(channel, client, message, t),\n status: getLatestMessageReadStatus(channel, client, message, readEvents),\n };\n};\n\n/**\n * Hook to set the display preview for latest message on channel.\n *\n * @param {*} channel Channel object\n *\n * @returns {object} latest message preview e.g.. { text: 'this was last message ...', created_at: '11/12/2020', messageObject: { originalMessageObject } }\n */\nexport const useLatestMessagePreview = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n channel: Channel<At, Ch, Co, Ev, Me, Re, Us>,\n forceUpdate: number,\n lastMessage?:\n | ReturnType<ChannelState<At, Ch, Co, Ev, Me, Re, Us>['formatMessage']>\n | MessageResponse<At, Ch, Co, Me, Re, Us>,\n) => {\n const { client } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n const channelConfigExists = typeof channel?.getConfig === 'function';\n\n const messages = channel.state.messages;\n const message = messages.length ? messages[messages.length - 1] : undefined;\n\n const channelLastMessageString = `${lastMessage?.id || message?.id}${\n lastMessage?.updated_at || message?.updated_at\n }`;\n\n const [readEvents, setReadEvents] = useState(true);\n const [latestMessagePreview, setLatestMessagePreview] = useState<\n LatestMessagePreview<At, Ch, Co, Ev, Me, Re, Us>\n >({\n created_at: '',\n messageObject: undefined,\n previews: [\n {\n bold: false,\n text: '',\n },\n ],\n status: 0,\n });\n\n const readStatus = getLatestMessageReadStatus(\n channel,\n client,\n lastMessage || message,\n readEvents,\n );\n\n useEffect(() => {\n if (channelConfigExists) {\n const read_events = channel.getConfig()?.read_events;\n if (typeof read_events === 'boolean') {\n setReadEvents(read_events);\n }\n }\n }, [channelConfigExists]);\n\n useEffect(\n () =>\n setLatestMessagePreview(\n getLatestMessagePreview({\n channel,\n client,\n lastMessage,\n readEvents,\n t,\n tDateTimeParser,\n }),\n ),\n [channelLastMessageString, forceUpdate, readEvents, readStatus],\n );\n\n return latestMessagePreview;\n};\n"]}
@@ -77,11 +77,14 @@ var useIsOnline = function useIsOnline(client) {
77
77
  var unsubscribeNetInfo;
78
78
 
79
79
  var setNetInfoListener = function setNetInfoListener() {
80
- _native.NetInfo.fetch().then(function (netInfoState) {
81
- notifyChatClient(netInfoState);
82
- });
83
-
84
80
  unsubscribeNetInfo = _native.NetInfo.addEventListener(function (netInfoState) {
81
+ var _client$wsConnection;
82
+
83
+ if (netInfoState === false && !((_client$wsConnection = client.wsConnection) != null && _client$wsConnection.isHealthy)) {
84
+ setConnectionRecovering(true);
85
+ setIsOnline(false);
86
+ }
87
+
85
88
  notifyChatClient(netInfoState);
86
89
  });
87
90
  };
@@ -98,7 +101,11 @@ var useIsOnline = function useIsOnline(client) {
98
101
 
99
102
  case 2:
100
103
  status = _context.sent;
101
- if (isMounted.current) setIsOnline(status);
104
+
105
+ if (isMounted.current) {
106
+ setIsOnline(status);
107
+ notifyChatClient(status);
108
+ }
102
109
 
103
110
  case 4:
104
111
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","isMounted","clientExits","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","unsubscribeNetInfo","setNetInfoListener","NetInfo","fetch","then","addEventListener","setInitialOnlineState","status","current","chatListeners","push","on","forEach","listener","unsubscribe"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { useAppStateListener } from '../../../hooks/useAppStateListener';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\nimport { NetInfo } from '../../../native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\nimport type { StreamChat, Event as StreamEvent } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\n/**\n * Disconnect the websocket connection when app goes to background,\n * and reconnect when app comes to foreground.\n * We do this to make sure, user receives push notifications when app is in the background.\n * You can't receive push notification until you have active websocket connection.\n */\nexport const useIsOnline = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n closeConnectionOnBackground = true,\n) => {\n const [isOnline, setIsOnline] = useState(true);\n const [connectionRecovering, setConnectionRecovering] = useState(false);\n const isMounted = useIsMountedRef();\n const clientExits = !!client;\n\n const onBackground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n for (const cid in client.activeChannels) {\n const channel = client.activeChannels[cid];\n channel?.state.setIsUpToDate(false);\n }\n\n client.closeConnection();\n setIsOnline(false);\n }, [closeConnectionOnBackground, client]);\n\n const onForeground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n client.openConnection();\n }, [closeConnectionOnBackground, client]);\n\n useAppStateListener(onForeground, onBackground);\n\n useEffect(() => {\n const handleChangedEvent = (event: StreamEvent<At, Ch, Co, Ev, Me, Re, Us>) => {\n setConnectionRecovering(!event.online);\n setIsOnline(event.online || false);\n };\n\n const handleRecoveredEvent = () => setConnectionRecovering(false);\n\n const notifyChatClient = (netInfoState: boolean) => {\n if (client?.wsConnection) {\n if (netInfoState) {\n client.wsConnection.onlineStatusChanged({\n type: 'online',\n } as Event);\n } else {\n client.wsConnection.onlineStatusChanged({\n type: 'offline',\n } as Event);\n }\n }\n };\n\n let unsubscribeNetInfo: NetInfoSubscription;\n const setNetInfoListener = () => {\n NetInfo.fetch().then((netInfoState) => {\n notifyChatClient(netInfoState);\n });\n unsubscribeNetInfo = NetInfo.addEventListener((netInfoState) => {\n notifyChatClient(netInfoState);\n });\n };\n\n const setInitialOnlineState = async () => {\n const status = await NetInfo.fetch();\n\n if (isMounted.current) setIsOnline(status);\n };\n\n setInitialOnlineState();\n const chatListeners: Array<ReturnType<StreamChat['on']>> = [];\n\n if (client) {\n chatListeners.push(client.on('connection.changed', handleChangedEvent));\n chatListeners.push(client.on('connection.recovered', handleRecoveredEvent));\n setNetInfoListener();\n }\n\n return () => {\n chatListeners.forEach((listener) => listener.unsubscribe?.());\n unsubscribeNetInfo?.();\n };\n }, [clientExits]);\n\n return { connectionRecovering, isOnline };\n};\n"]}
1
+ {"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","isMounted","clientExits","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","unsubscribeNetInfo","setNetInfoListener","NetInfo","addEventListener","isHealthy","setInitialOnlineState","fetch","status","current","chatListeners","push","on","forEach","listener","unsubscribe"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { useAppStateListener } from '../../../hooks/useAppStateListener';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\nimport { NetInfo } from '../../../native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\nimport type { StreamChat, Event as StreamEvent } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\n\n/**\n * Disconnect the websocket connection when app goes to background,\n * and reconnect when app comes to foreground.\n * We do this to make sure, user receives push notifications when app is in the background.\n * You can't receive push notification until you have active websocket connection.\n */\nexport const useIsOnline = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n client: StreamChat<At, Ch, Co, Ev, Me, Re, Us>,\n closeConnectionOnBackground = true,\n) => {\n const [isOnline, setIsOnline] = useState(true);\n const [connectionRecovering, setConnectionRecovering] = useState(false);\n const isMounted = useIsMountedRef();\n const clientExits = !!client;\n\n const onBackground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n for (const cid in client.activeChannels) {\n const channel = client.activeChannels[cid];\n channel?.state.setIsUpToDate(false);\n }\n\n client.closeConnection();\n setIsOnline(false);\n }, [closeConnectionOnBackground, client]);\n\n const onForeground = useCallback(() => {\n if (!closeConnectionOnBackground) return;\n\n client.openConnection();\n }, [closeConnectionOnBackground, client]);\n\n useAppStateListener(onForeground, onBackground);\n\n useEffect(() => {\n const handleChangedEvent = (event: StreamEvent<At, Ch, Co, Ev, Me, Re, Us>) => {\n setConnectionRecovering(!event.online);\n setIsOnline(event.online || false);\n };\n\n const handleRecoveredEvent = () => setConnectionRecovering(false);\n\n const notifyChatClient = (netInfoState: boolean) => {\n if (client?.wsConnection) {\n if (netInfoState) {\n client.wsConnection.onlineStatusChanged({\n type: 'online',\n } as Event);\n } else {\n client.wsConnection.onlineStatusChanged({\n type: 'offline',\n } as Event);\n }\n }\n };\n\n let unsubscribeNetInfo: NetInfoSubscription;\n const setNetInfoListener = () => {\n unsubscribeNetInfo = NetInfo.addEventListener((netInfoState) => {\n if (netInfoState === false && !client.wsConnection?.isHealthy) {\n setConnectionRecovering(true);\n setIsOnline(false);\n }\n notifyChatClient(netInfoState);\n });\n };\n\n const setInitialOnlineState = async () => {\n const status = await NetInfo.fetch();\n if (isMounted.current) {\n setIsOnline(status);\n notifyChatClient(status);\n }\n };\n\n setInitialOnlineState();\n const chatListeners: Array<ReturnType<StreamChat['on']>> = [];\n\n if (client) {\n chatListeners.push(client.on('connection.changed', handleChangedEvent));\n chatListeners.push(client.on('connection.recovered', handleRecoveredEvent));\n setNetInfoListener();\n }\n\n return () => {\n chatListeners.forEach((listener) => listener.unsubscribe?.());\n unsubscribeNetInfo?.();\n };\n }, [clientExits]);\n\n return { connectionRecovering, isOnline };\n};\n"]}
@@ -94,7 +94,6 @@ var ImageGallery = function ImageGallery(props) {
94
94
 
95
95
  var _useOverlayContext = (0, _OverlayContext.useOverlayContext)(),
96
96
  overlay = _useOverlayContext.overlay,
97
- setBlurType = _useOverlayContext.setBlurType,
98
97
  setOverlay = _useOverlayContext.setOverlay,
99
98
  translucentStatusBar = _useOverlayContext.translucentStatusBar;
100
99
 
@@ -235,6 +234,7 @@ var ImageGallery = function ImageGallery(props) {
235
234
  })) || [];
236
235
  var attachmentPhotos = attachmentImages.map(function (attachmentImage) {
237
236
  return {
237
+ channelId: cur.cid,
238
238
  created_at: cur.created_at,
239
239
  id: "photoId-" + cur.id + "-" + (attachmentImage.image_url || attachmentImage.thumb_url),
240
240
  messageId: cur.id,
@@ -358,7 +358,6 @@ var ImageGallery = function ImageGallery(props) {
358
358
  }, function () {
359
359
  showScreen.value = 0;
360
360
  (0, _reactNativeReanimated.runOnJS)(setOverlay)('none');
361
- (0, _reactNativeReanimated.runOnJS)(setBlurType)(undefined);
362
361
  });
363
362
  scale.value = (0, _reactNativeReanimated.withTiming)(0.6, {
364
363
  duration: 200,