stream-chat-react-native-core 4.2.0-beta.2 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/lib/commonjs/components/Attachment/FileIcon.js +20 -20
  2. package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Giphy.js +37 -28
  4. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  5. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
  6. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  7. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +4 -7
  8. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  9. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +183 -173
  10. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
  11. package/lib/commonjs/components/MessageInput/MessageInput.js +3 -3
  12. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  13. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -3
  14. package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  15. package/lib/commonjs/components/MessageList/utils/getReadStates.js +8 -8
  16. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +32 -32
  18. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  19. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +9 -9
  20. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  21. package/lib/commonjs/version.json +1 -1
  22. package/lib/module/components/Attachment/FileIcon.js +20 -20
  23. package/lib/module/components/Attachment/FileIcon.js.map +1 -1
  24. package/lib/module/components/Attachment/Giphy.js +37 -28
  25. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  26. package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
  27. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  28. package/lib/module/components/Message/MessageSimple/utils/renderText.js +4 -7
  29. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  30. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +183 -173
  31. package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
  32. package/lib/module/components/MessageInput/MessageInput.js +3 -3
  33. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  34. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -3
  35. package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
  36. package/lib/module/components/MessageList/utils/getReadStates.js +8 -8
  37. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  38. package/lib/module/contexts/messageInputContext/MessageInputContext.js +32 -32
  39. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  40. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +9 -9
  41. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  42. package/lib/module/version.json +1 -1
  43. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  44. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +2 -3
  45. package/package.json +12 -10
  46. package/src/components/Attachment/Giphy.tsx +19 -6
  47. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +14 -4
  48. package/src/components/Message/MessageSimple/MessageContent.tsx +1 -1
  49. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageReplies.test.js.snap +1 -0
  50. package/src/components/Message/MessageSimple/utils/renderText.test.tsx +30 -23
  51. package/src/components/MessageInput/__tests__/__snapshots__/AttachButton.test.js.snap +2 -0
  52. package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +24 -68
  53. package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +20 -36
  54. package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +7 -10
  55. package/src/components/MessageInput/__tests__/__snapshots__/SendButton.test.js.snap +4 -0
  56. package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +1 -3
  57. package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -0
  58. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +10 -7
  59. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","composerContainer","container","borderTopWidth","padding","editingBoxHeader","justifyContent","paddingBottom","editingBoxHeaderTitle","fontSize","fontWeight","giphyContainer","borderRadius","height","marginRight","paddingHorizontal","giphyText","inputBoxContainer","borderWidth","flex","optionsContainer","paddingRight","replyContainer","sendButtonContainer","paddingLeft","suggestionsListContainer","elevation","left","position","right","shadowOffset","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","clearEditingState","clearQuotedMessageState","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","setGiphyActive","setShowMoreOptions","ShowThreadMessageInChannelButton","suggestions","t","thread","threadList","triggerType","uploadNewImage","watchers","setHeight","theme","colors","accent_blue","black","border","grey","grey_gainsboro","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","selectedImagesLength","length","imageUploadsLength","imagesForInput","forEach","image","id","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","file","uri","url","imagesToRemove","updatedSelectedImages","map","source","Boolean","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","color","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","name","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","SendMessageDisallowedIndicator","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { CircleClose, CurveLineLeftUp, Edit, Lightning } from '../../icons';\n\nimport type { Asset } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n editingBoxHeader: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingBottom: 10,\n },\n editingBoxHeaderTitle: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n marginRight: 8,\n paddingHorizontal: 8,\n },\n giphyText: {\n fontSize: 12,\n fontWeight: 'bold',\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeImage'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n threadList,\n triggerType,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: {\n accent_blue,\n black,\n border,\n grey,\n grey_gainsboro,\n grey_whisper,\n white,\n white_smoke,\n },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n editingBoxHeader,\n editingBoxHeaderTitle,\n giphyContainer,\n giphyText,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n } else if (selectedImagesLength < imageUploadsLength) {\n /** User de-selected an image in bottom sheet attachment picker */\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {(editing || quotedMessage) && (\n <View style={[styles.editingBoxHeader, editingBoxHeader]}>\n {editing ? (\n <Edit pathFill={grey_gainsboro} />\n ) : (\n <CurveLineLeftUp pathFill={grey_gainsboro} />\n )}\n <Text style={[styles.editingBoxHeaderTitle, { color: black }, editingBoxHeaderTitle]}>\n {editing ? t('Editing Message') : t('Reply to Message')}\n </Text>\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n resetInput();\n if (editing) {\n clearEditingState();\n }\n if (quotedMessage) {\n clearQuotedMessageState();\n }\n }}\n testID='close-button'\n >\n <CircleClose pathFill={grey} />\n </TouchableOpacity>\n </View>\n )}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n <View\n style={[\n styles.autoCompleteInputContainer,\n {\n paddingLeft: giphyActive ? 8 : 16,\n paddingRight: giphyActive ? 10 : 16,\n },\n autoCompleteInputContainer,\n ]}\n >\n {giphyActive && (\n <View\n style={[\n styles.giphyContainer,\n { backgroundColor: accent_blue },\n giphyContainer,\n ]}\n >\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyText, { color: white }, giphyText]}>GIPHY</Text>\n </View>\n )}\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n {giphyActive && (\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n setGiphyActive(false);\n setShowMoreOptions(true);\n }}\n testID='close-button'\n >\n <CircleClose height={20} pathFill={grey} width={20} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
1
+ {"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","composerContainer","container","borderTopWidth","padding","editingBoxHeader","justifyContent","paddingBottom","editingBoxHeaderTitle","fontSize","fontWeight","giphyContainer","borderRadius","height","marginRight","paddingHorizontal","giphyText","inputBoxContainer","borderWidth","flex","optionsContainer","paddingRight","replyContainer","sendButtonContainer","paddingLeft","suggestionsListContainer","elevation","left","position","right","shadowOffset","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","clearEditingState","clearQuotedMessageState","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","setGiphyActive","setShowMoreOptions","ShowThreadMessageInChannelButton","suggestions","t","thread","threadList","triggerType","uploadNewImage","watchers","setHeight","theme","colors","accent_blue","black","border","grey","grey_gainsboro","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","selectedImagesLength","length","imageUploadsLength","imagesForInput","forEach","image","id","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","file","uri","url","imagesToRemove","updatedSelectedImages","map","source","Boolean","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","color","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","name","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","SendMessageDisallowedIndicator","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { CircleClose, CurveLineLeftUp, Edit, Lightning } from '../../icons';\n\nimport type { Asset } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n editingBoxHeader: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingBottom: 10,\n },\n editingBoxHeaderTitle: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n giphyContainer: {\n alignItems: 'center',\n borderRadius: 12,\n flexDirection: 'row',\n height: 24,\n marginRight: 8,\n paddingHorizontal: 8,\n },\n giphyText: {\n fontSize: 12,\n fontWeight: 'bold',\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeImage'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n threadList,\n triggerType,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: {\n accent_blue,\n black,\n border,\n grey,\n grey_gainsboro,\n grey_whisper,\n white,\n white_smoke,\n },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n editingBoxHeader,\n editingBoxHeaderTitle,\n giphyContainer,\n giphyText,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n } else if (selectedImagesLength < imageUploadsLength) {\n /** User de-selected an image in bottom sheet attachment picker */\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {(editing || quotedMessage) && (\n <View style={[styles.editingBoxHeader, editingBoxHeader]}>\n {editing ? (\n <Edit pathFill={grey_gainsboro} />\n ) : (\n <CurveLineLeftUp pathFill={grey_gainsboro} />\n )}\n <Text style={[styles.editingBoxHeaderTitle, { color: black }, editingBoxHeaderTitle]}>\n {editing ? t('Editing Message') : t('Reply to Message')}\n </Text>\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n resetInput();\n if (editing) {\n clearEditingState();\n }\n if (quotedMessage) {\n clearQuotedMessageState();\n }\n }}\n testID='close-button'\n >\n <CircleClose pathFill={grey} />\n </TouchableOpacity>\n </View>\n )}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n <View\n style={[\n styles.autoCompleteInputContainer,\n {\n paddingLeft: giphyActive ? 8 : 16,\n paddingRight: giphyActive ? 10 : 16,\n },\n autoCompleteInputContainer,\n ]}\n >\n {giphyActive && (\n <View\n style={[\n styles.giphyContainer,\n { backgroundColor: accent_blue },\n giphyContainer,\n ]}\n >\n <Lightning height={16} pathFill={white} width={16} />\n <Text style={[styles.giphyText, { color: white }, giphyText]}>GIPHY</Text>\n </View>\n )}\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n {giphyActive && (\n <TouchableOpacity\n disabled={disabled}\n onPress={() => {\n setGiphyActive(false);\n setShowMoreOptions(true);\n }}\n testID='close-button'\n >\n <CircleClose height={20} pathFill={grey} width={20} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton disabled={disabled || sending.current || !isValidMessage()} />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.github.io/stream-chat-react-native/v3/#channelcontext),\n * [Chat Context](https://getstream.github.io/stream-chat-react-native/v3/#chatcontext),\n * [MessageInput Context](https://getstream.github.io/stream-chat-react-native/v3/#messageinputcontext),\n * [Suggestions Context](https://getstream.github.io/stream-chat-react-native/v3/#suggestionscontext), and\n * [Translation Context](https://getstream.github.io/stream-chat-react-native/v3/#translationcontext)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
@@ -13,10 +13,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
13
13
 
14
14
  var getLastReceivedMessage = function getLastReceivedMessage(messages) {
15
15
  for (var _iterator = _createForOfIteratorHelperLoose(messages), _step; !(_step = _iterator()).done;) {
16
- var _message = _step.value;
16
+ var message = _step.value;
17
17
 
18
- if ((_message == null ? void 0 : _message.status) === _utils.MessageStatusTypes.RECEIVED || (_message == null ? void 0 : _message.status) === _utils.MessageStatusTypes.SENDING) {
19
- return _message;
18
+ if ((message == null ? void 0 : message.status) === _utils.MessageStatusTypes.RECEIVED || (message == null ? void 0 : message.status) === _utils.MessageStatusTypes.SENDING) {
19
+ return message;
20
20
  }
21
21
  }
22
22
 
@@ -1 +1 @@
1
- {"version":3,"sources":["getLastReceivedMessage.ts"],"names":["getLastReceivedMessage","messages","message","status","MessageStatusTypes","RECEIVED","SENDING"],"mappings":";;;;;AACA;;;;;;;;AAIO,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAGpCC,QAHoC,EAIjC;AAIH,uDAAsBA,QAAtB,wCAAgC;AAAA,QAArBC,QAAqB;;AAC9B,QACE,CAAAA,QAAO,QAAP,YAAAA,QAAO,CAAEC,MAAT,MAAoBC,0BAAmBC,QAAvC,IACA,CAAAH,QAAO,QAAP,YAAAA,QAAO,CAAEC,MAAT,MAAoBC,0BAAmBE,OAFzC,EAGE;AACA,aAAOJ,QAAP;AACD;AACF;;AAED;AACD,CAlBM","sourcesContent":["import type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../hooks/useMessageList';\n\nexport const getLastReceivedMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n messages: MessageType<StreamChatGenerics>[],\n) => {\n /**\n * There are no status on dates so they will be skipped\n */\n for (const message of messages) {\n if (\n message?.status === MessageStatusTypes.RECEIVED ||\n message?.status === MessageStatusTypes.SENDING\n ) {\n return message;\n }\n }\n\n return;\n};\n"]}
1
+ {"version":3,"sources":["getLastReceivedMessage.ts"],"names":["getLastReceivedMessage","messages","message","status","MessageStatusTypes","RECEIVED","SENDING"],"mappings":";;;;;AACA;;;;;;;;AAIO,IAAMA,sBAAsB,GAAG,SAAzBA,sBAAyB,CAGpCC,QAHoC,EAIjC;AAIH,uDAAsBA,QAAtB,wCAAgC;AAAA,QAArBC,OAAqB;;AAC9B,QACE,CAAAA,OAAO,QAAP,YAAAA,OAAO,CAAEC,MAAT,MAAoBC,0BAAmBC,QAAvC,IACA,CAAAH,OAAO,QAAP,YAAAA,OAAO,CAAEC,MAAT,MAAoBC,0BAAmBE,OAFzC,EAGE;AACA,aAAOJ,OAAP;AACD;AACF;;AAED;AACD,CAlBM","sourcesContent":["import type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../hooks/useMessageList';\n\nexport const getLastReceivedMessage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n messages: MessageType<StreamChatGenerics>[],\n) => {\n /**\n * There are no status on dates so they will be skipped\n */\n for (const message of messages) {\n if (\n message?.status === MessageStatusTypes.RECEIVED ||\n message?.status === MessageStatusTypes.SENDING\n ) {\n return message;\n }\n }\n\n return;\n};\n"]}
@@ -30,24 +30,24 @@ var getReadStates = function getReadStates(clientUserId, messages, read) {
30
30
  var memberReadCount = 0;
31
31
 
32
32
  for (var _iterator = _createForOfIteratorHelperLoose(filteredMessagesReversed), _step; !(_step = _iterator()).done;) {
33
- var _message = _step.value;
33
+ var message = _step.value;
34
34
 
35
35
  if (!members.length) {
36
- readData[_message.id] = memberReadCount || true;
36
+ readData[message.id] = memberReadCount || true;
37
37
  } else {
38
38
  var _loop = function _loop(member) {
39
39
  if (!member.last_read) {
40
40
  return "continue";
41
41
  }
42
42
 
43
- if (_message.updated_at < member.last_read) {
43
+ if (message.updated_at < member.last_read) {
44
44
  var numberOfReads = Object.keys(read).length;
45
45
 
46
46
  if (numberOfReads === 1) {
47
- readData[_message.id] = true;
47
+ readData[message.id] = true;
48
48
  } else {
49
- var currentMessageReadData = readData[_message.id];
50
- readData[_message.id] = typeof currentMessageReadData === 'boolean' ? memberReadCount + 1 : currentMessageReadData + 1;
49
+ var currentMessageReadData = readData[message.id];
50
+ readData[message.id] = typeof currentMessageReadData === 'boolean' ? memberReadCount + 1 : currentMessageReadData + 1;
51
51
  }
52
52
 
53
53
  var userIndex = members.findIndex(function (_ref) {
@@ -75,8 +75,8 @@ var getReadStates = function getReadStates(clientUserId, messages, read) {
75
75
  if (_ret === "continue") continue;
76
76
  }
77
77
 
78
- if (readData[_message.id] === false) {
79
- readData[_message.id] = memberReadCount || false;
78
+ if (readData[message.id] === false) {
79
+ readData[message.id] = memberReadCount || false;
80
80
  }
81
81
  }
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,QAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,QAAO,CAACN,UAAR,GAAqBQ,MAAM,CAACC,SAAhC,EAA2C;AAKzC,gBAAMC,aAAa,GAAGP,MAAM,CAACQ,IAAP,CAAYpB,IAAZ,EAAkBgB,MAAxC;;AACA,gBAAIG,aAAa,KAAK,CAAtB,EAAyB;AACvBlB,cAAAA,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAR,GAAuB,IAAvB;AACD,aAFD,MAEO;AACL,kBAAMgB,sBAAsB,GAAGpB,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAvC;AACAJ,cAAAA,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAR,GACE,OAAOgB,sBAAP,KAAkC,SAAlC,GACIP,eAAe,GAAG,CADtB,GAEIO,sBAAsB,GAAG,CAH/B;AAID;;AACD,gBAAMC,SAAS,GAAGX,OAAO,CAACY,SAAR,CAAkB;AAAA;;AAAA,kBAAGC,IAAH,QAAGA,IAAH;AAAA,qBAAcA,IAAI,CAACnB,EAAL,sBAAYY,MAAM,CAACO,IAAnB,qBAAY,aAAanB,EAAzB,CAAd;AAAA,aAAlB,CAAlB;;AACA,gBAAIiB,SAAS,KAAK,CAAC,CAAnB,EAAsB;AACpBX,cAAAA,OAAO,CAACc,MAAR,CAAeH,SAAf,EAA0B,CAA1B;;AACA,kBAAIH,aAAa,GAAG,CAApB,EAAuB;AACrBL,gBAAAA,eAAe,IAAI,CAAnB;AACD;AACF;AACF;AAtCE;;AACL,8DAAqBH,OAArB,2CAA8B;AAAA,cAAnBM,MAAmB;;AAAA,2BAAnBA,MAAmB;;AAAA,mCAO1B;AA+BH;;AAOD,YAAIhB,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAR,KAAyB,KAA7B,EAAoC;AAClCJ,UAAAA,QAAQ,CAACc,QAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,KAA1C;AACD;AACF;AACF;AACF;;AAED,SAAOb,QAAP;AACD,CArGM","sourcesContent":["import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const getReadStates = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n clientUserId: string | undefined,\n messages:\n | PaginatedMessageListContextValue<StreamChatGenerics>['messages']\n | ThreadContextValue<StreamChatGenerics>['threadMessages'],\n read?: ChannelContextValue<StreamChatGenerics>['read'],\n) => {\n const readData = messages.reduce((acc, cur) => {\n if (cur.id) {\n acc[cur.id] = false;\n }\n return acc;\n }, {} as { [key: string]: boolean | number });\n\n const filteredMessagesReversed = messages.filter((msg) => msg.updated_at).reverse();\n\n if (read) {\n /**\n * Channel read state is stored by user and we only care about users who aren't the client\n */\n if (clientUserId) {\n delete read[clientUserId];\n }\n const members = Object.values(read);\n\n /**\n * Track number of members who have read previous messages\n */\n let memberReadCount = 0;\n\n /**\n * Array is in reverse order so newest message is at 0,\n * we find the index of the first message that is older\n * than the last read and then set last read to that, or\n * if there are no newer messages, the first message is\n * last read message.\n */\n for (const message of filteredMessagesReversed) {\n /**\n * If all members are removed then they have read these\n * messages. We do not increment memberReadCount for 1:1\n * chats, so this should be true, not a number in that case.\n */\n if (!members.length) {\n readData[message.id] = memberReadCount || true;\n } else {\n for (const member of members) {\n /**\n * If no last read continue, we can't remove the user\n * because this would mark all messages in a new channel\n * true until at least one other user reads a message.\n */\n if (!member.last_read) {\n continue;\n }\n\n /**\n * If there there is a last read message add the user\n * to the array of last reads for that message and remove\n * the user from the list of users being checked\n */\n if (message.updated_at < member.last_read) {\n /**\n * if this is a direct message the length will be 1\n * as we already deleted the current user from the object\n */\n const numberOfReads = Object.keys(read).length;\n if (numberOfReads === 1) {\n readData[message.id] = true;\n } else {\n const currentMessageReadData = readData[message.id];\n readData[message.id] =\n typeof currentMessageReadData === 'boolean'\n ? memberReadCount + 1\n : currentMessageReadData + 1;\n }\n const userIndex = members.findIndex(({ user }) => user.id === member.user?.id);\n if (userIndex !== -1) {\n members.splice(userIndex, 1);\n if (numberOfReads > 1) {\n memberReadCount += 1;\n }\n }\n }\n }\n\n /**\n * If this is not the last message for a user this will still be\n * set to false. But if other users have read further the number\n * should be how many have read beyond this message.\n */\n if (readData[message.id] === false) {\n readData[message.id] = memberReadCount || false;\n }\n }\n }\n }\n\n return readData;\n};\n"]}
1
+ {"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,OAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,OAAO,CAACN,UAAR,GAAqBQ,MAAM,CAACC,SAAhC,EAA2C;AAKzC,gBAAMC,aAAa,GAAGP,MAAM,CAACQ,IAAP,CAAYpB,IAAZ,EAAkBgB,MAAxC;;AACA,gBAAIG,aAAa,KAAK,CAAtB,EAAyB;AACvBlB,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuB,IAAvB;AACD,aAFD,MAEO;AACL,kBAAMgB,sBAAsB,GAAGpB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAvC;AACAJ,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GACE,OAAOgB,sBAAP,KAAkC,SAAlC,GACIP,eAAe,GAAG,CADtB,GAEIO,sBAAsB,GAAG,CAH/B;AAID;;AACD,gBAAMC,SAAS,GAAGX,OAAO,CAACY,SAAR,CAAkB;AAAA;;AAAA,kBAAGC,IAAH,QAAGA,IAAH;AAAA,qBAAcA,IAAI,CAACnB,EAAL,sBAAYY,MAAM,CAACO,IAAnB,qBAAY,aAAanB,EAAzB,CAAd;AAAA,aAAlB,CAAlB;;AACA,gBAAIiB,SAAS,KAAK,CAAC,CAAnB,EAAsB;AACpBX,cAAAA,OAAO,CAACc,MAAR,CAAeH,SAAf,EAA0B,CAA1B;;AACA,kBAAIH,aAAa,GAAG,CAApB,EAAuB;AACrBL,gBAAAA,eAAe,IAAI,CAAnB;AACD;AACF;AACF;AAtCE;;AACL,8DAAqBH,OAArB,2CAA8B;AAAA,cAAnBM,MAAmB;;AAAA,2BAAnBA,MAAmB;;AAAA,mCAO1B;AA+BH;;AAOD,YAAIhB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,KAAyB,KAA7B,EAAoC;AAClCJ,UAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,KAA1C;AACD;AACF;AACF;AACF;;AAED,SAAOb,QAAP;AACD,CArGM","sourcesContent":["import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const getReadStates = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n clientUserId: string | undefined,\n messages:\n | PaginatedMessageListContextValue<StreamChatGenerics>['messages']\n | ThreadContextValue<StreamChatGenerics>['threadMessages'],\n read?: ChannelContextValue<StreamChatGenerics>['read'],\n) => {\n const readData = messages.reduce((acc, cur) => {\n if (cur.id) {\n acc[cur.id] = false;\n }\n return acc;\n }, {} as { [key: string]: boolean | number });\n\n const filteredMessagesReversed = messages.filter((msg) => msg.updated_at).reverse();\n\n if (read) {\n /**\n * Channel read state is stored by user and we only care about users who aren't the client\n */\n if (clientUserId) {\n delete read[clientUserId];\n }\n const members = Object.values(read);\n\n /**\n * Track number of members who have read previous messages\n */\n let memberReadCount = 0;\n\n /**\n * Array is in reverse order so newest message is at 0,\n * we find the index of the first message that is older\n * than the last read and then set last read to that, or\n * if there are no newer messages, the first message is\n * last read message.\n */\n for (const message of filteredMessagesReversed) {\n /**\n * If all members are removed then they have read these\n * messages. We do not increment memberReadCount for 1:1\n * chats, so this should be true, not a number in that case.\n */\n if (!members.length) {\n readData[message.id] = memberReadCount || true;\n } else {\n for (const member of members) {\n /**\n * If no last read continue, we can't remove the user\n * because this would mark all messages in a new channel\n * true until at least one other user reads a message.\n */\n if (!member.last_read) {\n continue;\n }\n\n /**\n * If there there is a last read message add the user\n * to the array of last reads for that message and remove\n * the user from the list of users being checked\n */\n if (message.updated_at < member.last_read) {\n /**\n * if this is a direct message the length will be 1\n * as we already deleted the current user from the object\n */\n const numberOfReads = Object.keys(read).length;\n if (numberOfReads === 1) {\n readData[message.id] = true;\n } else {\n const currentMessageReadData = readData[message.id];\n readData[message.id] =\n typeof currentMessageReadData === 'boolean'\n ? memberReadCount + 1\n : currentMessageReadData + 1;\n }\n const userIndex = members.findIndex(({ user }) => user.id === member.user?.id);\n if (userIndex !== -1) {\n members.splice(userIndex, 1);\n if (numberOfReads > 1) {\n memberReadCount += 1;\n }\n }\n }\n }\n\n /**\n * If this is not the last message for a user this will still be\n * set to false. But if other users have read further the number\n * should be how many have read beyond this message.\n */\n if (readData[message.id] === false) {\n readData[message.id] = memberReadCount || false;\n }\n }\n }\n }\n\n return readData;\n};\n"]}
@@ -159,13 +159,13 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
159
159
  }
160
160
 
161
161
  for (var _iterator = _createForOfIteratorHelperLoose(imageUploads), _step; !(_step = _iterator()).done;) {
162
- var _image2 = _step.value;
162
+ var _image = _step.value;
163
163
 
164
- if (!_image2 || _image2.state === _utils.FileState.UPLOAD_FAILED) {
164
+ if (!_image || _image.state === _utils.FileState.UPLOAD_FAILED) {
165
165
  continue;
166
166
  }
167
167
 
168
- if (_image2.state === _utils.FileState.UPLOADING) {
168
+ if (_image.state === _utils.FileState.UPLOADING) {
169
169
  return false;
170
170
  }
171
171
 
@@ -173,13 +173,13 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
173
173
  }
174
174
 
175
175
  for (var _iterator2 = _createForOfIteratorHelperLoose(fileUploads), _step2; !(_step2 = _iterator2()).done;) {
176
- var _file2 = _step2.value;
176
+ var _file = _step2.value;
177
177
 
178
- if (!_file2 || _file2.state === _utils.FileState.UPLOAD_FAILED) {
178
+ if (!_file || _file.state === _utils.FileState.UPLOAD_FAILED) {
179
179
  continue;
180
180
  }
181
181
 
182
- if (_file2.state === _utils.FileState.UPLOADING) {
182
+ if (_file.state === _utils.FileState.UPLOADING) {
183
183
  return false;
184
184
  }
185
185
 
@@ -339,7 +339,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
339
339
 
340
340
  var sendMessage = function () {
341
341
  var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
342
- var prevText, attachments, _loop, _iterator3, _step3, _image4, _ret, _iterator4, _step4, _file4, _file4$file$type, _file4$file$type2, updatedMessage, updateMessagePromise;
342
+ var prevText, attachments, _loop, _iterator3, _step3, _image2, _ret, _iterator4, _step4, _file2, _file2$file$type, _file2$file$type2, updatedMessage, updateMessagePromise;
343
343
 
344
344
  return _regenerator["default"].wrap(function _callee2$(_context2) {
345
345
  while (1) {
@@ -374,15 +374,15 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
374
374
 
375
375
  attachments = [];
376
376
 
377
- _loop = function _loop(_image3) {
378
- if (!_image3 || _image3.state === _utils.FileState.UPLOAD_FAILED) {
377
+ _loop = function _loop(_image2) {
378
+ if (!_image2 || _image2.state === _utils.FileState.UPLOAD_FAILED) {
379
379
  return "continue";
380
380
  }
381
381
 
382
- if (_image3.state === _utils.FileState.UPLOADING) {
382
+ if (_image2.state === _utils.FileState.UPLOADING) {
383
383
  if (value.sendImageAsync) {
384
384
  setAsyncIds(function (prevAsyncIds) {
385
- return [].concat((0, _toConsumableArray2["default"])(prevAsyncIds), [_image3.id]);
385
+ return [].concat((0, _toConsumableArray2["default"])(prevAsyncIds), [_image2.id]);
386
386
  });
387
387
  } else {
388
388
  sending.current = false;
@@ -392,10 +392,10 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
392
392
  }
393
393
  }
394
394
 
395
- if (_image3.state === _utils.FileState.UPLOADED || _image3.state === _utils.FileState.FINISHED) {
395
+ if (_image2.state === _utils.FileState.UPLOADED || _image2.state === _utils.FileState.FINISHED) {
396
396
  attachments.push({
397
- fallback: _image3.file.name,
398
- image_url: _image3.url,
397
+ fallback: _image2.file.name,
398
+ image_url: _image2.url,
399
399
  type: 'image'
400
400
  });
401
401
  }
@@ -409,8 +409,8 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
409
409
  break;
410
410
  }
411
411
 
412
- _image4 = _step3.value;
413
- _ret = _loop(_image4);
412
+ _image2 = _step3.value;
413
+ _ret = _loop(_image2);
414
414
 
415
415
  if (!(_ret === "continue")) {
416
416
  _context2.next = 18;
@@ -440,9 +440,9 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
440
440
  break;
441
441
  }
442
442
 
443
- _file4 = _step4.value;
443
+ _file2 = _step4.value;
444
444
 
445
- if (!(!_file4 || _file4.state === _utils.FileState.UPLOAD_FAILED)) {
445
+ if (!(!_file2 || _file2.state === _utils.FileState.UPLOAD_FAILED)) {
446
446
  _context2.next = 27;
447
447
  break;
448
448
  }
@@ -450,7 +450,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
450
450
  return _context2.abrupt("continue", 31);
451
451
 
452
452
  case 27:
453
- if (!(_file4.state === _utils.FileState.UPLOADING)) {
453
+ if (!(_file2.state === _utils.FileState.UPLOADING)) {
454
454
  _context2.next = 30;
455
455
  break;
456
456
  }
@@ -459,27 +459,27 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
459
459
  return _context2.abrupt("return");
460
460
 
461
461
  case 30:
462
- if (_file4.state === _utils.FileState.UPLOADED || _file4.state === _utils.FileState.FINISHED) {
463
- if ((_file4$file$type = _file4.file.type) != null && _file4$file$type.startsWith('image/')) {
462
+ if (_file2.state === _utils.FileState.UPLOADED || _file2.state === _utils.FileState.FINISHED) {
463
+ if ((_file2$file$type = _file2.file.type) != null && _file2$file$type.startsWith('image/')) {
464
464
  attachments.push({
465
- fallback: _file4.file.name,
466
- image_url: _file4.url,
465
+ fallback: _file2.file.name,
466
+ image_url: _file2.url,
467
467
  type: 'image'
468
468
  });
469
- } else if ((_file4$file$type2 = _file4.file.type) != null && _file4$file$type2.startsWith('video/')) {
469
+ } else if ((_file2$file$type2 = _file2.file.type) != null && _file2$file$type2.startsWith('video/')) {
470
470
  attachments.push({
471
- asset_url: _file4.url,
472
- file_size: _file4.file.size,
473
- mime_type: _file4.file.type,
474
- title: _file4.file.name,
471
+ asset_url: _file2.url,
472
+ file_size: _file2.file.size,
473
+ mime_type: _file2.file.type,
474
+ title: _file2.file.name,
475
475
  type: 'video'
476
476
  });
477
477
  } else {
478
478
  attachments.push({
479
- asset_url: _file4.url,
480
- file_size: _file4.file.size,
481
- mime_type: _file4.file.type,
482
- title: _file4.file.name,
479
+ asset_url: _file2.url,
480
+ file_size: _file2.file.size,
481
+ mime_type: _file2.file.type,
482
+ title: _file2.file.name,
483
483
  type: 'file'
484
484
  });
485
485
  }