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.
- package/lib/commonjs/components/Attachment/FileIcon.js +20 -20
- package/lib/commonjs/components/Attachment/FileIcon.js.map +1 -1
- package/lib/commonjs/components/Attachment/Giphy.js +37 -28
- package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +4 -7
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js +183 -173
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +3 -3
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js +3 -3
- package/lib/commonjs/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js +8 -8
- package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +32 -32
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +9 -9
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/FileIcon.js +20 -20
- package/lib/module/components/Attachment/FileIcon.js.map +1 -1
- package/lib/module/components/Attachment/Giphy.js +37 -28
- package/lib/module/components/Attachment/Giphy.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +4 -7
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js +183 -173
- package/lib/module/components/Message/MessageSimple/utils/renderText.test.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +3 -3
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js +3 -3
- package/lib/module/components/MessageList/utils/getLastReceivedMessage.js.map +1 -1
- package/lib/module/components/MessageList/utils/getReadStates.js +8 -8
- package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +32 -32
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +9 -9
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
- package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +2 -3
- package/package.json +12 -10
- package/src/components/Attachment/Giphy.tsx +19 -6
- package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +14 -4
- package/src/components/Message/MessageSimple/MessageContent.tsx +1 -1
- package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageReplies.test.js.snap +1 -0
- package/src/components/Message/MessageSimple/utils/renderText.test.tsx +30 -23
- package/src/components/MessageInput/__tests__/__snapshots__/AttachButton.test.js.snap +2 -0
- package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +24 -68
- package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +20 -36
- package/src/components/MessageInput/__tests__/__snapshots__/MessageInput.test.js.snap +7 -10
- package/src/components/MessageInput/__tests__/__snapshots__/SendButton.test.js.snap +4 -0
- package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +1 -3
- package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -0
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +10 -7
- 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
|
|
16
|
+
var message = _step.value;
|
|
17
17
|
|
|
18
|
-
if ((
|
|
19
|
-
return
|
|
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,
|
|
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
|
|
33
|
+
var message = _step.value;
|
|
34
34
|
|
|
35
35
|
if (!members.length) {
|
|
36
|
-
readData[
|
|
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 (
|
|
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[
|
|
47
|
+
readData[message.id] = true;
|
|
48
48
|
} else {
|
|
49
|
-
var currentMessageReadData = readData[
|
|
50
|
-
readData[
|
|
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[
|
|
79
|
-
readData[
|
|
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,
|
|
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
|
|
162
|
+
var _image = _step.value;
|
|
163
163
|
|
|
164
|
-
if (!
|
|
164
|
+
if (!_image || _image.state === _utils.FileState.UPLOAD_FAILED) {
|
|
165
165
|
continue;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
if (
|
|
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
|
|
176
|
+
var _file = _step2.value;
|
|
177
177
|
|
|
178
|
-
if (!
|
|
178
|
+
if (!_file || _file.state === _utils.FileState.UPLOAD_FAILED) {
|
|
179
179
|
continue;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
if (
|
|
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,
|
|
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(
|
|
378
|
-
if (!
|
|
377
|
+
_loop = function _loop(_image2) {
|
|
378
|
+
if (!_image2 || _image2.state === _utils.FileState.UPLOAD_FAILED) {
|
|
379
379
|
return "continue";
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
-
if (
|
|
382
|
+
if (_image2.state === _utils.FileState.UPLOADING) {
|
|
383
383
|
if (value.sendImageAsync) {
|
|
384
384
|
setAsyncIds(function (prevAsyncIds) {
|
|
385
|
-
return [].concat((0, _toConsumableArray2["default"])(prevAsyncIds), [
|
|
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 (
|
|
395
|
+
if (_image2.state === _utils.FileState.UPLOADED || _image2.state === _utils.FileState.FINISHED) {
|
|
396
396
|
attachments.push({
|
|
397
|
-
fallback:
|
|
398
|
-
image_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
|
-
|
|
413
|
-
_ret = _loop(
|
|
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
|
-
|
|
443
|
+
_file2 = _step4.value;
|
|
444
444
|
|
|
445
|
-
if (!(!
|
|
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 (!(
|
|
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 (
|
|
463
|
-
if ((
|
|
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:
|
|
466
|
-
image_url:
|
|
465
|
+
fallback: _file2.file.name,
|
|
466
|
+
image_url: _file2.url,
|
|
467
467
|
type: 'image'
|
|
468
468
|
});
|
|
469
|
-
} else if ((
|
|
469
|
+
} else if ((_file2$file$type2 = _file2.file.type) != null && _file2$file$type2.startsWith('video/')) {
|
|
470
470
|
attachments.push({
|
|
471
|
-
asset_url:
|
|
472
|
-
file_size:
|
|
473
|
-
mime_type:
|
|
474
|
-
title:
|
|
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:
|
|
480
|
-
file_size:
|
|
481
|
-
mime_type:
|
|
482
|
-
title:
|
|
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
|
}
|