stream-chat-react-native-core 5.26.0-beta.5 → 5.26.0-beta.7

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 (231) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +14 -21
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/i18n/es.json +15 -15
  4. package/lib/commonjs/i18n/fr.json +15 -15
  5. package/lib/commonjs/i18n/he.json +15 -15
  6. package/lib/commonjs/i18n/hi.json +15 -15
  7. package/lib/commonjs/i18n/it.json +15 -15
  8. package/lib/commonjs/i18n/ja.json +15 -15
  9. package/lib/commonjs/i18n/ko.json +15 -15
  10. package/lib/commonjs/i18n/nl.json +16 -16
  11. package/lib/commonjs/i18n/pt-BR.json +16 -16
  12. package/lib/commonjs/i18n/ru.json +16 -16
  13. package/lib/commonjs/i18n/tr.json +16 -16
  14. package/lib/commonjs/store/QuickSqliteClient.js +37 -2
  15. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  16. package/lib/commonjs/store/apis/addPendingTask.js +16 -4
  17. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
  18. package/lib/commonjs/store/apis/deleteChannel.js +4 -0
  19. package/lib/commonjs/store/apis/deleteChannel.js.map +1 -1
  20. package/lib/commonjs/store/apis/deleteMember.js +5 -0
  21. package/lib/commonjs/store/apis/deleteMember.js.map +1 -1
  22. package/lib/commonjs/store/apis/deleteMessage.js +4 -0
  23. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
  24. package/lib/commonjs/store/apis/deleteMessagesForChannel.js +4 -0
  25. package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -1
  26. package/lib/commonjs/store/apis/deletePendingTask.js +3 -0
  27. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -1
  28. package/lib/commonjs/store/apis/deleteReaction.js +5 -0
  29. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -1
  30. package/lib/commonjs/store/apis/deleteReactions.js +5 -3
  31. package/lib/commonjs/store/apis/deleteReactions.js.map +1 -1
  32. package/lib/commonjs/store/apis/getAllChannelIds.js +2 -0
  33. package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -1
  34. package/lib/commonjs/store/apis/getAppSettings.js +3 -0
  35. package/lib/commonjs/store/apis/getAppSettings.js.map +1 -1
  36. package/lib/commonjs/store/apis/getChannelMessages.js +5 -0
  37. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  38. package/lib/commonjs/store/apis/getChannels.js +5 -0
  39. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  40. package/lib/commonjs/store/apis/getChannelsForFilterSort.js +5 -0
  41. package/lib/commonjs/store/apis/getChannelsForFilterSort.js.map +1 -1
  42. package/lib/commonjs/store/apis/getLastSyncedAt.js +3 -0
  43. package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -1
  44. package/lib/commonjs/store/apis/getMembers.js +4 -0
  45. package/lib/commonjs/store/apis/getMembers.js.map +1 -1
  46. package/lib/commonjs/store/apis/getPendingTasks.js +3 -0
  47. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
  48. package/lib/commonjs/store/apis/getReads.js +4 -0
  49. package/lib/commonjs/store/apis/getReads.js.map +1 -1
  50. package/lib/commonjs/store/apis/insertReaction.js +6 -1
  51. package/lib/commonjs/store/apis/insertReaction.js.map +1 -1
  52. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js +3 -0
  53. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  54. package/lib/commonjs/store/apis/queries/selectChannels.js +3 -0
  55. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
  56. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js +3 -0
  57. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
  58. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js +3 -0
  59. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  60. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js +3 -0
  61. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  62. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js +3 -0
  63. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
  64. package/lib/commonjs/store/apis/updateMessage.js +18 -4
  65. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  66. package/lib/commonjs/store/apis/updateReaction.js +12 -1
  67. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  68. package/lib/commonjs/store/apis/upsertAppSettings.js +7 -1
  69. package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -1
  70. package/lib/commonjs/store/apis/upsertChannelData.js +6 -1
  71. package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -1
  72. package/lib/commonjs/store/apis/upsertChannels.js +6 -3
  73. package/lib/commonjs/store/apis/upsertChannels.js.map +1 -1
  74. package/lib/commonjs/store/apis/upsertCidsForQuery.js +12 -5
  75. package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -1
  76. package/lib/commonjs/store/apis/upsertMembers.js +15 -3
  77. package/lib/commonjs/store/apis/upsertMembers.js.map +1 -1
  78. package/lib/commonjs/store/apis/upsertMessages.js +20 -8
  79. package/lib/commonjs/store/apis/upsertMessages.js.map +1 -1
  80. package/lib/commonjs/store/apis/upsertReads.js +18 -3
  81. package/lib/commonjs/store/apis/upsertReads.js.map +1 -1
  82. package/lib/commonjs/store/apis/upsertUserSyncStatus.js +4 -0
  83. package/lib/commonjs/store/apis/upsertUserSyncStatus.js.map +1 -1
  84. package/lib/commonjs/version.json +1 -1
  85. package/lib/module/components/Channel/Channel.js +14 -21
  86. package/lib/module/components/Channel/Channel.js.map +1 -1
  87. package/lib/module/i18n/es.json +15 -15
  88. package/lib/module/i18n/fr.json +15 -15
  89. package/lib/module/i18n/he.json +15 -15
  90. package/lib/module/i18n/hi.json +15 -15
  91. package/lib/module/i18n/it.json +15 -15
  92. package/lib/module/i18n/ja.json +15 -15
  93. package/lib/module/i18n/ko.json +15 -15
  94. package/lib/module/i18n/nl.json +16 -16
  95. package/lib/module/i18n/pt-BR.json +16 -16
  96. package/lib/module/i18n/ru.json +16 -16
  97. package/lib/module/i18n/tr.json +16 -16
  98. package/lib/module/store/QuickSqliteClient.js +37 -2
  99. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  100. package/lib/module/store/apis/addPendingTask.js +16 -4
  101. package/lib/module/store/apis/addPendingTask.js.map +1 -1
  102. package/lib/module/store/apis/deleteChannel.js +4 -0
  103. package/lib/module/store/apis/deleteChannel.js.map +1 -1
  104. package/lib/module/store/apis/deleteMember.js +5 -0
  105. package/lib/module/store/apis/deleteMember.js.map +1 -1
  106. package/lib/module/store/apis/deleteMessage.js +4 -0
  107. package/lib/module/store/apis/deleteMessage.js.map +1 -1
  108. package/lib/module/store/apis/deleteMessagesForChannel.js +4 -0
  109. package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -1
  110. package/lib/module/store/apis/deletePendingTask.js +3 -0
  111. package/lib/module/store/apis/deletePendingTask.js.map +1 -1
  112. package/lib/module/store/apis/deleteReaction.js +5 -0
  113. package/lib/module/store/apis/deleteReaction.js.map +1 -1
  114. package/lib/module/store/apis/deleteReactions.js +5 -3
  115. package/lib/module/store/apis/deleteReactions.js.map +1 -1
  116. package/lib/module/store/apis/getAllChannelIds.js +2 -0
  117. package/lib/module/store/apis/getAllChannelIds.js.map +1 -1
  118. package/lib/module/store/apis/getAppSettings.js +3 -0
  119. package/lib/module/store/apis/getAppSettings.js.map +1 -1
  120. package/lib/module/store/apis/getChannelMessages.js +5 -0
  121. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  122. package/lib/module/store/apis/getChannels.js +5 -0
  123. package/lib/module/store/apis/getChannels.js.map +1 -1
  124. package/lib/module/store/apis/getChannelsForFilterSort.js +5 -0
  125. package/lib/module/store/apis/getChannelsForFilterSort.js.map +1 -1
  126. package/lib/module/store/apis/getLastSyncedAt.js +3 -0
  127. package/lib/module/store/apis/getLastSyncedAt.js.map +1 -1
  128. package/lib/module/store/apis/getMembers.js +4 -0
  129. package/lib/module/store/apis/getMembers.js.map +1 -1
  130. package/lib/module/store/apis/getPendingTasks.js +3 -0
  131. package/lib/module/store/apis/getPendingTasks.js.map +1 -1
  132. package/lib/module/store/apis/getReads.js +4 -0
  133. package/lib/module/store/apis/getReads.js.map +1 -1
  134. package/lib/module/store/apis/insertReaction.js +6 -1
  135. package/lib/module/store/apis/insertReaction.js.map +1 -1
  136. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js +3 -0
  137. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  138. package/lib/module/store/apis/queries/selectChannels.js +3 -0
  139. package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
  140. package/lib/module/store/apis/queries/selectMembersForChannels.js +3 -0
  141. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
  142. package/lib/module/store/apis/queries/selectMessagesForChannels.js +3 -0
  143. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  144. package/lib/module/store/apis/queries/selectReactionsForMessages.js +3 -0
  145. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  146. package/lib/module/store/apis/queries/selectReadsForChannels.js +3 -0
  147. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
  148. package/lib/module/store/apis/updateMessage.js +18 -4
  149. package/lib/module/store/apis/updateMessage.js.map +1 -1
  150. package/lib/module/store/apis/updateReaction.js +12 -1
  151. package/lib/module/store/apis/updateReaction.js.map +1 -1
  152. package/lib/module/store/apis/upsertAppSettings.js +7 -1
  153. package/lib/module/store/apis/upsertAppSettings.js.map +1 -1
  154. package/lib/module/store/apis/upsertChannelData.js +6 -1
  155. package/lib/module/store/apis/upsertChannelData.js.map +1 -1
  156. package/lib/module/store/apis/upsertChannels.js +6 -3
  157. package/lib/module/store/apis/upsertChannels.js.map +1 -1
  158. package/lib/module/store/apis/upsertCidsForQuery.js +12 -5
  159. package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -1
  160. package/lib/module/store/apis/upsertMembers.js +15 -3
  161. package/lib/module/store/apis/upsertMembers.js.map +1 -1
  162. package/lib/module/store/apis/upsertMessages.js +20 -8
  163. package/lib/module/store/apis/upsertMessages.js.map +1 -1
  164. package/lib/module/store/apis/upsertReads.js +18 -3
  165. package/lib/module/store/apis/upsertReads.js.map +1 -1
  166. package/lib/module/store/apis/upsertUserSyncStatus.js +4 -0
  167. package/lib/module/store/apis/upsertUserSyncStatus.js.map +1 -1
  168. package/lib/module/version.json +1 -1
  169. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  170. package/lib/typescript/i18n/es.json +15 -15
  171. package/lib/typescript/i18n/fr.json +15 -15
  172. package/lib/typescript/i18n/he.json +15 -15
  173. package/lib/typescript/i18n/hi.json +15 -15
  174. package/lib/typescript/i18n/it.json +15 -15
  175. package/lib/typescript/i18n/ja.json +15 -15
  176. package/lib/typescript/i18n/ko.json +15 -15
  177. package/lib/typescript/i18n/nl.json +16 -16
  178. package/lib/typescript/i18n/pt-BR.json +16 -16
  179. package/lib/typescript/i18n/ru.json +16 -16
  180. package/lib/typescript/i18n/tr.json +16 -16
  181. package/lib/typescript/store/QuickSqliteClient.d.ts +2 -0
  182. package/lib/typescript/store/apis/upsertMessages.d.ts +1 -2
  183. package/package.json +1 -1
  184. package/src/components/Channel/Channel.tsx +9 -8
  185. package/src/i18n/es.json +15 -15
  186. package/src/i18n/fr.json +15 -15
  187. package/src/i18n/he.json +15 -15
  188. package/src/i18n/hi.json +15 -15
  189. package/src/i18n/it.json +15 -15
  190. package/src/i18n/ja.json +15 -15
  191. package/src/i18n/ko.json +15 -15
  192. package/src/i18n/nl.json +16 -16
  193. package/src/i18n/pt-BR.json +16 -16
  194. package/src/i18n/ru.json +16 -16
  195. package/src/i18n/tr.json +16 -16
  196. package/src/store/QuickSqliteClient.ts +40 -3
  197. package/src/store/apis/addPendingTask.ts +20 -1
  198. package/src/store/apis/deleteChannel.ts +5 -0
  199. package/src/store/apis/deleteMember.ts +6 -0
  200. package/src/store/apis/deleteMessage.ts +6 -0
  201. package/src/store/apis/deleteMessagesForChannel.ts +6 -0
  202. package/src/store/apis/deletePendingTask.ts +4 -0
  203. package/src/store/apis/deleteReaction.ts +6 -0
  204. package/src/store/apis/deleteReactions.ts +5 -6
  205. package/src/store/apis/getAllChannelIds.ts +3 -0
  206. package/src/store/apis/getAppSettings.ts +3 -0
  207. package/src/store/apis/getChannelMessages.ts +5 -0
  208. package/src/store/apis/getChannels.ts +2 -0
  209. package/src/store/apis/getChannelsForFilterSort.ts +4 -0
  210. package/src/store/apis/getLastSyncedAt.ts +1 -0
  211. package/src/store/apis/getMembers.ts +2 -0
  212. package/src/store/apis/getPendingTasks.ts +1 -0
  213. package/src/store/apis/getReads.ts +2 -0
  214. package/src/store/apis/insertReaction.ts +8 -1
  215. package/src/store/apis/queries/selectChannelIdsForFilterSort.ts +5 -0
  216. package/src/store/apis/queries/selectChannels.ts +4 -0
  217. package/src/store/apis/queries/selectMembersForChannels.ts +4 -0
  218. package/src/store/apis/queries/selectMessagesForChannels.ts +4 -0
  219. package/src/store/apis/queries/selectReactionsForMessages.ts +4 -0
  220. package/src/store/apis/queries/selectReadsForChannels.ts +5 -0
  221. package/src/store/apis/updateMessage.ts +22 -4
  222. package/src/store/apis/updateReaction.ts +15 -1
  223. package/src/store/apis/upsertAppSettings.ts +8 -1
  224. package/src/store/apis/upsertChannelData.ts +6 -1
  225. package/src/store/apis/upsertChannels.ts +6 -1
  226. package/src/store/apis/upsertCidsForQuery.ts +10 -2
  227. package/src/store/apis/upsertMembers.ts +16 -10
  228. package/src/store/apis/upsertMessages.ts +21 -11
  229. package/src/store/apis/upsertReads.ts +13 -10
  230. package/src/store/apis/upsertUserSyncStatus.ts +5 -0
  231. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_removeReservedFields","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageBounce","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data2","_ref29","_ref30","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$emojiSearchInd","emojiSearchIndex","defaultEmojiSearchIndex","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageBounce","MessageBounce","MessageBounceDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","undefined","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","syncingChannelRef","useRef","_useState25","_useState26","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","_useTargetedMessage","useTargetedMessage","prevTargetedMessage","setTargetedMessage","targetedMessage","hasOverlappingRecentMessagesRef","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","_ref","_asyncToGenerator2","_regenerator","mark","_callee","channelLoaded","wrap","_callee$","_context","prev","next","offlineMode","abrupt","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","stop","apply","arguments","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","current","copyMessagesState","clearInterval","mergeSetsIntervalRef","restartSetsMergeFuncRef","_extends2","_toConsumableArray2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","ignorableEvents","isTypingEvent","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","_client$on2","channelQueryCallRef","_ref2","_callee2","queryCall","onAfterQueryCall","scrollToMessageId","currentMessages","hadCurrentLatestMessages","scrollToMessageIndex","limitAfter","currentLength","noOfMessagesAfter","endIndex","restOfMessages","latestSet","hasLatestMessages","_args2","_callee2$","_context2","Date","latestMessages","findIndex","_ref3","clearMessages","slice","splitLatestCurrentMessageSetRef","messageSets","find","isLatest","setIsUpToDate","flush","t0","Error","_x","unreadMessageIdToScrollTo","_callee3","unreadCount","isLatestMessageSetShown","lastReadDate","_res$messages$find","res","_callee3$","_context3","isCurrent","query","created_at_around","limit","watch","sent","m","created_at","loadMessageIntoState","loadLatestMessagesRef","_ref5","messageIdToLoadAround","_callee4","currentMessageSet","recentCurrentSetMsgId","_callee4$","_context4","id_gte","loadChannelAtMessage","_ref7","_ref7$after","after","_ref7$before","before","_callee5","_callee5$","_context5","queryAtMessage","currentLatestSet","mergeOverlappingMessageSetsRef","limitToMaxRenderPerBatch","latestMessageSet","concat","filter","setInterval","didMerge","_callee6","clearLatest","_args6","_callee6$","_context6","_callee7","_callee7$","_context7","isUpToDate","reloadThread","_ref11","_callee8","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee8$","_context8","getReplies","getMessagesById","console","warn","resyncChannel","_ref12","_callee9","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee9$","_context9","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","statusChanged","online","reloadChannel","_callee10","_callee10$","_context10","_ref15","_callee11","_ref14","_ref14$after","_ref14$before","_callee11$","_context11","queryBeforeMessage","queryAfterMessage","_x2","_ref16","_callee12","_args12","_callee12$","_context12","id_lt","_x3","_ref17","_callee13","currentSet","_args13","_callee13$","_context13","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref18","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref19","_callee14","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee14$","_context14","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref20","_callee15","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee15$","_context15","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref21","_callee16","_channel$state","messagePreview","_callee16$","_context16","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref22","_callee17","statusPendingMessage","messageWithoutReservedFields","_callee17$","_context17","removeReservedFields","isBouncedMessage","_x9","debounce","newMessages","loadMore","_callee18","oldestMessage","oldestID","_args18","_callee18$","_context18","loadMoreRecent","_callee19","latestLengthBeforeMerge","recentMessage","gotAllRecentMessages","_args19","_callee19$","_context19","loadMoreRecentFinished","editMessage","setEditingState","clearQuotedMessageState","setQuotedMessageState","messageOrBoolean","clearEditingState","deleteMessage","sendReaction","_ref25","_callee20","payload","_callee20$","_context20","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref26","_callee21","_data","_callee21$","_context21","dropPendingTasks","toISOString","_x12","deleteReaction","_ref27","_callee22","_callee22$","_context22","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref28","_callee23","_threadMessages$","oldestMessageID","_callee23$","_context23","disabledValue","useMemo","_channel$data","frozen","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n defaultEmojiSearchIndex,\n generateRandomId,\n isBouncedMessage,\n isLocalUrl,\n MessageStatusTypes,\n ReactionData,\n} from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageBounce as MessageBounceDefault } from '../Message/MessageSimple/MessageBounce';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageBounce'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n emojiSearchIndex = defaultEmojiSearchIndex,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageBounce = MessageBounceDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<MessageType<StreamChatGenerics> | undefined>(undefined);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const syncingChannelRef = useRef(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { prevTargetedMessage, setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * If we loaded a channel around message\n * We may have moved latest message to a new message set in that case mark this ref to avoid fetching\n */\n const hasOverlappingRecentMessagesRef = useRef(false);\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n\n useEffect(() => {\n const initChannel = async () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n let channelLoaded = false;\n if (!channel.initialized) {\n await loadChannel();\n channelLoaded = true;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n } else if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else if (!channelLoaded) {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n clearInterval(mergeSetsIntervalRef.current);\n setMessages(channel.state.messages);\n restartSetsMergeFuncRef.current();\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n const ignorableEvents = ['user.watching.start', 'user.watching.stop'];\n if (ignorableEvents.includes(event.type)) return;\n if (shouldSyncChannel) {\n const isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';\n if (!isTypingEvent) {\n if (thread?.id) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread?.id && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n }\n\n // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n channel.initialized &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (channel.cid === event.cid) copyChannelState();\n };\n\n const { unsubscribe } = client.on('notification.mark_read', handleEvent);\n return unsubscribe;\n }, []);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are scrolling to a message after the query, pass it here\n scrollToMessageId: string | (() => string | undefined) | undefined = undefined,\n ) => {\n setError(false);\n try {\n clearInterval(mergeSetsIntervalRef.current);\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n const currentMessages = channel.state.messages;\n const hadCurrentLatestMessages =\n currentMessages.length > 0 && currentMessages === channel.state.latestMessages;\n if (typeof scrollToMessageId === 'function') {\n scrollToMessageId = scrollToMessageId();\n }\n\n const scrollToMessageIndex = scrollToMessageId\n ? currentMessages.findIndex(({ id }) => id === scrollToMessageId)\n : -1;\n if (channel && scrollToMessageIndex !== -1) {\n copyChannelState.cancel();\n // We assume that on average user sees 5 messages on screen\n // We dont want new renders to happen while scrolling to the targeted message\n // hence we limit the number of messages to be rendered after the targeted message to 5 - 1 = 4\n // NOTE: we have one drawback here, if there were already a split latest and current message set\n // the previous latest message set will be thrown away as we cannot merge it with the current message set after the target message is set\n const limitAfter = 4;\n const currentLength = currentMessages.length;\n const noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;\n // number of messages are over the limit, limit the length of messages\n if (noOfMessagesAfter > limitAfter) {\n const endIndex = scrollToMessageIndex + limitAfter;\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(0, endIndex + 1);\n splitLatestCurrentMessageSetRef.current();\n const restOfMessages = currentMessages.slice(endIndex + 1);\n if (hadCurrentLatestMessages) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) {\n latestSet.messages = restOfMessages;\n hasOverlappingRecentMessagesRef.current = true;\n }\n }\n }\n }\n const hasLatestMessages = channel.state.latestMessages.length > 0;\n channel.state.setIsUpToDate(hasLatestMessages);\n setHasNoMoreRecentMessagesToLoad(hasLatestMessages);\n copyChannelState();\n if (scrollToMessageIndex !== -1) {\n // since we need to scroll after immediately do this without throttle\n copyChannelState.flush();\n }\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n const unreadCount = channel.countUnread();\n if (unreadCount === 0) return;\n const isLatestMessageSetShown = !!channel.state.messageSets.find(\n (set) => set.isCurrent && set.isLatest,\n );\n if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {\n unreadMessageIdToScrollTo =\n channel.state.messages[channel.state.messages.length - unreadCount].id;\n return;\n }\n const lastReadDate = channel.lastRead();\n\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n setLoading(true);\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n const res = await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n watch: true,\n },\n 'new',\n );\n unreadMessageIdToScrollTo = res.messages.find(\n (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),\n )?.id;\n if (unreadMessageIdToScrollTo) {\n channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (unreadMessageIdToScrollTo) {\n restartSetsMergeFuncRef.current();\n }\n },\n () => unreadMessageIdToScrollTo,\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n setMessages([]);\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentMessageSet && !currentMessageSet?.isLatest) {\n // if the current message set is not the latest, we will throw away the latest messages\n // in order to attempt to not throw away, will attempt to merge it by loading 25 more messages\n const recentCurrentSetMsgId =\n currentMessageSet.messages[currentMessageSet.messages.length - 1].id;\n await channel.query(\n {\n messages: {\n id_gte: recentCurrentSetMsgId,\n limit: 25,\n },\n },\n 'current',\n );\n // if the gap is more than 25, we will unfortunately have to throw away the latest messages\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (messageIdToLoadAround) {\n clearInterval(mergeSetsIntervalRef.current); // do not merge sets as we will scroll/highlight to the message\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n useEffect(() => {\n if (!targetedMessage && prevTargetedMessage) {\n // we cleared the merge sets interval to wait for the targeted message to be set\n // now restart it since its done\n restartSetsMergeFuncRef.current();\n }\n }, [targetedMessage]);\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n /**\n * Utility method to mark that current set if latest into two.\n * With an empty latest set\n * This is useful when we know that we dont know the latest messages anymore\n * Or if we are loading a channel around a message\n */\n const splitLatestCurrentMessageSetRef = useRef(() => {\n const currentLatestSet = channel.state.messageSets.find((set) => set.isCurrent && set.isLatest);\n if (!currentLatestSet) return;\n // unmark the current latest set\n currentLatestSet.isLatest = false;\n // create a new set with empty latest messages\n channel.state.messageSets.push({\n isCurrent: false,\n isLatest: true,\n messages: [],\n });\n });\n\n /**\n * Utility method to merge current and latest message set.\n * Returns true if merge was successful, false otherwise.\n */\n const mergeOverlappingMessageSetsRef = useRef((limitToMaxRenderPerBatch = false) => {\n if (hasOverlappingRecentMessagesRef.current) {\n const limit = 30; // 30 is the maxToRenderPerBatch\n // merge current and latest sets\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {\n if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {\n currentMessageSet.messages = currentMessageSet.messages.concat(\n latestMessageSet.messages.slice(0, limit),\n );\n latestMessageSet.messages = latestMessageSet.messages.slice(limit);\n } else {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);\n currentMessageSet.isLatest = true;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n }\n return true;\n }\n }\n return false;\n });\n\n const mergeSetsIntervalRef = useRef<NodeJS.Timeout>();\n\n // clear the interval on unmount\n useEffect(\n () => () => {\n clearInterval(mergeSetsIntervalRef.current);\n },\n [],\n );\n\n // if we had split the latest and current message set, we try to merge them back\n const restartSetsMergeFuncRef = useRef(() => {\n clearInterval(mergeSetsIntervalRef.current);\n if (!hasOverlappingRecentMessagesRef.current) return;\n mergeSetsIntervalRef.current = setInterval(() => {\n const currentLength = channel.state.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge && channel.state.messages.length !== currentLength) {\n setMessages(channel.state.messages);\n }\n }, 1000);\n });\n\n /**\n * Shows the latest messages from the channel state\n * If recent messages are empty, fetches new\n * @param clearLatest If true, clears the latest messages before loading (useful for complete refresh)\n */\n const loadLatestMessagesRef = useRef(async (clearLatest = false) => {\n mergeOverlappingMessageSetsRef.current();\n if (clearLatest) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) latestSet.messages = [];\n }\n if (channel.state.latestMessages.length === 0) {\n await channel.query({}, 'latest');\n }\n await channel.state.loadMessageIntoState('latest');\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannelRef.current) return;\n if (!channel.initialized) return;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n syncingChannelRef.current = true;\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n channel.state.addPinnedMessages(state.pinned_messages);\n\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\n setHasNoMoreRecentMessagesToLoad(true);\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n syncingChannelRef.current = false;\n };\n\n // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange((statusChanged) => {\n if (statusChanged) {\n connectionChangedHandler();\n }\n });\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await loadLatestMessagesRef.current(true);\n setLoading(false);\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n channel.state.clearMessages();\n setMessages([]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n // make current set as the latest\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n splitLatestCurrentMessageSetRef.current();\n channel.state.setIsUpToDate(false);\n setHasNoMoreRecentMessagesToLoad(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n ...messageUser,\n id: client.userID,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reaction_counts,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage({ ...message, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n mergeOverlappingMessageSetsRef.current();\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\n }\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n const messageWithoutReservedFields = removeReservedFields(statusPendingMessage);\n\n // For bounced messages, we don't need to update the message, instead always send a new message.\n if (!isBouncedMessage(message)) {\n updateMessage(messageWithoutReservedFields as MessageResponse<StreamChatGenerics>);\n }\n\n await sendMessageRequest(\n messageWithoutReservedFields as MessageResponse<StreamChatGenerics>,\n true,\n );\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoading(false);\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n\n const currentMessages = channel.state.messages;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n setLoadingMore(true);\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const latestLengthBeforeMerge = latestMessageSet?.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge) {\n if (latestMessageSet && latestLengthBeforeMerge >= limit) {\n setLoadingMoreRecent(true);\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n loadMoreRecentFinished(channel.state.messages);\n restartSetsMergeFuncRef.current();\n return;\n }\n }\n if (channel.state.isUpToDate) {\n setLoadingMoreRecent(false);\n return;\n }\n const currentMessages = channel.state.messages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n setLoadingMoreRecent(true);\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n const gotAllRecentMessages = queryResponse.messages.length < limit;\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n // make current set as the latest\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(gotAllRecentMessages);\n setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\n );\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n clearQuotedMessageState();\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(undefined);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\n */\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = useCallback(\n (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n },\n [setThread, setThreadMessages],\n );\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const disabledValue = useMemo(\n () => !!channel?.data?.frozen && disableIfFrozenChannel,\n [channel.data?.frozen, disableIfFrozenChannel],\n );\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: disabledValue,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n disabled: disabledValue,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n emojiSearchIndex,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageBounce,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n enableOfflineSupport,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_removeReservedFields","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageBounce","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data2","_ref29","_ref30","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$emojiSearchInd","emojiSearchIndex","defaultEmojiSearchIndex","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageBounce","MessageBounce","MessageBounceDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","undefined","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","syncingChannelRef","useRef","_useState25","_useState26","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","_useTargetedMessage","useTargetedMessage","prevTargetedMessage","setTargetedMessage","targetedMessage","hasOverlappingRecentMessagesRef","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","_ref","_asyncToGenerator2","_regenerator","mark","_callee","channelLoaded","wrap","_callee$","_context","prev","next","offlineMode","abrupt","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","stop","apply","arguments","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","current","copyMessagesState","clearInterval","mergeSetsIntervalRef","restartSetsMergeFuncRef","_extends2","_toConsumableArray2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","ignorableEvents","isTypingEvent","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","_client$on2","channelQueryCallRef","_ref2","_callee2","queryCall","onAfterQueryCall","scrollToMessageId","currentMessages","hadCurrentLatestMessages","scrollToMessageIndex","limitAfter","currentLength","noOfMessagesAfter","endIndex","restOfMessages","latestSet","hasLatestMessages","_args2","_callee2$","_context2","Date","latestMessages","findIndex","_ref3","clearMessages","slice","splitLatestCurrentMessageSetRef","messageSets","find","isLatest","setIsUpToDate","flush","t0","Error","_x","unreadMessageIdToScrollTo","_callee3","unreadCount","isLatestMessageSetShown","lastReadDate","_res$messages$find","res","_callee3$","_context3","isCurrent","query","created_at_around","limit","watch","sent","m","created_at","loadMessageIntoState","loadLatestMessagesRef","_ref5","messageIdToLoadAround","_callee4","currentMessageSet","recentCurrentSetMsgId","_callee4$","_context4","id_gte","loadChannelAtMessage","_ref7","_ref7$after","after","_ref7$before","before","_callee5","_callee5$","_context5","queryAtMessage","currentLatestSet","mergeOverlappingMessageSetsRef","limitToMaxRenderPerBatch","latestMessageSet","concat","filter","_callee6","clearLatest","_args6","_callee6$","_context6","_callee7","_callee7$","_context7","isUpToDate","reloadThread","_ref11","_callee8","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee8$","_context8","getReplies","getMessagesById","console","warn","resyncChannel","_ref12","_callee9","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee9$","_context9","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","statusChanged","online","reloadChannel","_callee10","_callee10$","_context10","_ref15","_callee11","_ref14","_ref14$after","_ref14$before","_callee11$","_context11","queryBeforeMessage","queryAfterMessage","_x2","_ref16","_callee12","_args12","_callee12$","_context12","id_lt","_x3","_ref17","_callee13","currentSet","_args13","_callee13$","_context13","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref18","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref19","_callee14","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee14$","_context14","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref20","_callee15","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee15$","_context15","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref21","_callee16","_channel$state","messagePreview","_callee16$","_context16","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref22","_callee17","statusPendingMessage","messageWithoutReservedFields","_callee17$","_context17","removeReservedFields","isBouncedMessage","_x9","debounce","newMessages","loadMore","_callee18","oldestMessage","oldestID","_args18","_callee18$","_context18","loadMoreRecent","_callee19","latestLengthBeforeMerge","didMerge","recentMessage","gotAllRecentMessages","_args19","_callee19$","_context19","loadMoreRecentFinished","editMessage","setEditingState","clearQuotedMessageState","setQuotedMessageState","messageOrBoolean","clearEditingState","deleteMessage","sendReaction","_ref25","_callee20","payload","_callee20$","_context20","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref26","_callee21","_data","_callee21$","_context21","dropPendingTasks","toISOString","_x12","deleteReaction","_ref27","_callee22","_callee22$","_context22","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref28","_callee23","_threadMessages$","oldestMessageID","_callee23$","_context23","disabledValue","useMemo","_channel$data","frozen","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n defaultEmojiSearchIndex,\n generateRandomId,\n isBouncedMessage,\n isLocalUrl,\n MessageStatusTypes,\n ReactionData,\n} from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageBounce as MessageBounceDefault } from '../Message/MessageSimple/MessageBounce';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageBounce'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n emojiSearchIndex = defaultEmojiSearchIndex,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageBounce = MessageBounceDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<MessageType<StreamChatGenerics> | undefined>(undefined);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const syncingChannelRef = useRef(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { prevTargetedMessage, setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * If we loaded a channel around message\n * We may have moved latest message to a new message set in that case mark this ref to avoid fetching\n */\n const hasOverlappingRecentMessagesRef = useRef(false);\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n\n useEffect(() => {\n const initChannel = async () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n let channelLoaded = false;\n if (!channel.initialized) {\n await loadChannel();\n channelLoaded = true;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n } else if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else if (!channelLoaded) {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n clearInterval(mergeSetsIntervalRef.current);\n setMessages(channel.state.messages);\n restartSetsMergeFuncRef.current();\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n const ignorableEvents = ['user.watching.start', 'user.watching.stop'];\n if (ignorableEvents.includes(event.type)) return;\n if (shouldSyncChannel) {\n const isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';\n if (!isTypingEvent) {\n if (thread?.id) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread?.id && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n }\n\n // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n channel.initialized &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (channel.cid === event.cid) copyChannelState();\n };\n\n const { unsubscribe } = client.on('notification.mark_read', handleEvent);\n return unsubscribe;\n }, []);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are scrolling to a message after the query, pass it here\n scrollToMessageId: string | (() => string | undefined) | undefined = undefined,\n ) => {\n setError(false);\n try {\n clearInterval(mergeSetsIntervalRef.current);\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n const currentMessages = channel.state.messages;\n const hadCurrentLatestMessages =\n currentMessages.length > 0 && currentMessages === channel.state.latestMessages;\n if (typeof scrollToMessageId === 'function') {\n scrollToMessageId = scrollToMessageId();\n }\n\n const scrollToMessageIndex = scrollToMessageId\n ? currentMessages.findIndex(({ id }) => id === scrollToMessageId)\n : -1;\n if (channel && scrollToMessageIndex !== -1) {\n copyChannelState.cancel();\n // We assume that on average user sees 5 messages on screen\n // We dont want new renders to happen while scrolling to the targeted message\n // hence we limit the number of messages to be rendered after the targeted message to 5 - 1 = 4\n // NOTE: we have one drawback here, if there were already a split latest and current message set\n // the previous latest message set will be thrown away as we cannot merge it with the current message set after the target message is set\n const limitAfter = 4;\n const currentLength = currentMessages.length;\n const noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;\n // number of messages are over the limit, limit the length of messages\n if (noOfMessagesAfter > limitAfter) {\n const endIndex = scrollToMessageIndex + limitAfter;\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(0, endIndex + 1);\n splitLatestCurrentMessageSetRef.current();\n const restOfMessages = currentMessages.slice(endIndex + 1);\n if (hadCurrentLatestMessages) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) {\n latestSet.messages = restOfMessages;\n hasOverlappingRecentMessagesRef.current = true;\n }\n }\n }\n }\n const hasLatestMessages = channel.state.latestMessages.length > 0;\n channel.state.setIsUpToDate(hasLatestMessages);\n setHasNoMoreRecentMessagesToLoad(hasLatestMessages);\n copyChannelState();\n if (scrollToMessageIndex !== -1) {\n // since we need to scroll after immediately do this without throttle\n copyChannelState.flush();\n }\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n const unreadCount = channel.countUnread();\n if (unreadCount === 0) return;\n const isLatestMessageSetShown = !!channel.state.messageSets.find(\n (set) => set.isCurrent && set.isLatest,\n );\n if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {\n unreadMessageIdToScrollTo =\n channel.state.messages[channel.state.messages.length - unreadCount].id;\n return;\n }\n const lastReadDate = channel.lastRead();\n\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n setLoading(true);\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n const res = await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n watch: true,\n },\n 'new',\n );\n unreadMessageIdToScrollTo = res.messages.find(\n (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),\n )?.id;\n if (unreadMessageIdToScrollTo) {\n channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (unreadMessageIdToScrollTo) {\n restartSetsMergeFuncRef.current();\n }\n },\n () => unreadMessageIdToScrollTo,\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n setMessages([]);\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentMessageSet && !currentMessageSet?.isLatest) {\n // if the current message set is not the latest, we will throw away the latest messages\n // in order to attempt to not throw away, will attempt to merge it by loading 25 more messages\n const recentCurrentSetMsgId =\n currentMessageSet.messages[currentMessageSet.messages.length - 1].id;\n await channel.query(\n {\n messages: {\n id_gte: recentCurrentSetMsgId,\n limit: 25,\n },\n },\n 'current',\n );\n // if the gap is more than 25, we will unfortunately have to throw away the latest messages\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (messageIdToLoadAround) {\n clearInterval(mergeSetsIntervalRef.current); // do not merge sets as we will scroll/highlight to the message\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n useEffect(() => {\n if (!targetedMessage && prevTargetedMessage) {\n // we cleared the merge sets interval to wait for the targeted message to be set\n // now restart it since its done\n restartSetsMergeFuncRef.current();\n }\n }, [targetedMessage]);\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n /**\n * Utility method to mark that current set if latest into two.\n * With an empty latest set\n * This is useful when we know that we dont know the latest messages anymore\n * Or if we are loading a channel around a message\n */\n const splitLatestCurrentMessageSetRef = useRef(() => {\n const currentLatestSet = channel.state.messageSets.find((set) => set.isCurrent && set.isLatest);\n if (!currentLatestSet) return;\n // unmark the current latest set\n currentLatestSet.isLatest = false;\n // create a new set with empty latest messages\n channel.state.messageSets.push({\n isCurrent: false,\n isLatest: true,\n messages: [],\n });\n });\n\n /**\n * Utility method to merge current and latest message set.\n * Returns true if merge was successful, false otherwise.\n */\n const mergeOverlappingMessageSetsRef = useRef((limitToMaxRenderPerBatch = false) => {\n if (hasOverlappingRecentMessagesRef.current) {\n const limit = 5; // 5 is the load to recent limit, a larger value seems to cause jumpiness in some devices..\n // merge current and latest sets\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {\n if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {\n currentMessageSet.messages = currentMessageSet.messages.concat(\n latestMessageSet.messages.slice(0, limit),\n );\n latestMessageSet.messages = latestMessageSet.messages.slice(limit);\n } else {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);\n currentMessageSet.isLatest = true;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n }\n return true;\n }\n }\n return false;\n });\n\n const mergeSetsIntervalRef = useRef<NodeJS.Timeout>();\n\n // clear the interval on unmount\n useEffect(\n () => () => {\n clearInterval(mergeSetsIntervalRef.current);\n },\n [],\n );\n\n // if we had split the latest and current message set, we try to merge them back\n // temporarily commented out the interval as it was causing issues with jankiness during scrolling\n const restartSetsMergeFuncRef = useRef(() => {\n clearInterval(mergeSetsIntervalRef.current);\n if (!hasOverlappingRecentMessagesRef.current) return;\n // mergeSetsIntervalRef.current = setInterval(() => {\n // const currentLength = channel.state.messages.length || 0;\n // const didMerge = mergeOverlappingMessageSetsRef.current(true);\n // if (didMerge && channel.state.messages.length !== currentLength) {\n // setMessages(channel.state.messages);\n // }\n // }, 1000);\n });\n\n /**\n * Shows the latest messages from the channel state\n * If recent messages are empty, fetches new\n * @param clearLatest If true, clears the latest messages before loading (useful for complete refresh)\n */\n const loadLatestMessagesRef = useRef(async (clearLatest = false) => {\n mergeOverlappingMessageSetsRef.current();\n if (clearLatest) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) latestSet.messages = [];\n }\n if (channel.state.latestMessages.length === 0) {\n await channel.query({}, 'latest');\n }\n await channel.state.loadMessageIntoState('latest');\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannelRef.current) return;\n if (!channel.initialized) return;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n syncingChannelRef.current = true;\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n channel.state.addPinnedMessages(state.pinned_messages);\n\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\n setHasNoMoreRecentMessagesToLoad(true);\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n syncingChannelRef.current = false;\n };\n\n // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange((statusChanged) => {\n if (statusChanged) {\n connectionChangedHandler();\n }\n });\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await loadLatestMessagesRef.current(true);\n setLoading(false);\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n channel.state.clearMessages();\n setMessages([]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n // make current set as the latest\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n splitLatestCurrentMessageSetRef.current();\n channel.state.setIsUpToDate(false);\n setHasNoMoreRecentMessagesToLoad(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n ...messageUser,\n id: client.userID,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reaction_counts,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage({ ...message, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n mergeOverlappingMessageSetsRef.current();\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\n }\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n const messageWithoutReservedFields = removeReservedFields(statusPendingMessage);\n\n // For bounced messages, we don't need to update the message, instead always send a new message.\n if (!isBouncedMessage(message)) {\n updateMessage(messageWithoutReservedFields as MessageResponse<StreamChatGenerics>);\n }\n\n await sendMessageRequest(\n messageWithoutReservedFields as MessageResponse<StreamChatGenerics>,\n true,\n );\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoading(false);\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n\n const currentMessages = channel.state.messages;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n setLoadingMore(true);\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const latestLengthBeforeMerge = latestMessageSet?.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge) {\n if (latestMessageSet && latestLengthBeforeMerge >= limit) {\n setLoadingMoreRecent(true);\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n loadMoreRecentFinished(channel.state.messages);\n restartSetsMergeFuncRef.current();\n return;\n }\n }\n if (channel.state.isUpToDate) {\n setLoadingMoreRecent(false);\n return;\n }\n const currentMessages = channel.state.messages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n setLoadingMoreRecent(true);\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n const gotAllRecentMessages = queryResponse.messages.length < limit;\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n // make current set as the latest\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(gotAllRecentMessages);\n setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\n );\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n clearQuotedMessageState();\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(undefined);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\n */\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = useCallback(\n (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n },\n [setThread, setThreadMessages],\n );\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const disabledValue = useMemo(\n () => !!channel?.data?.frozen && disableIfFrozenChannel,\n [channel.data?.frozen, disableIfFrozenChannel],\n );\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: disabledValue,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n disabled: disabledValue,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n emojiSearchIndex,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageBounce,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n enableOfflineSupport,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"],"mappings":"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"}