stream-chat-react-native-core 5.14.0-beta.1 → 5.14.0-beta.3

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.
@@ -133,6 +133,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
133
133
  return true;
134
134
  }
135
135
  var imagesAndFiles = [].concat((0, _toConsumableArray2["default"])(imageUploads), (0, _toConsumableArray2["default"])(fileUploads));
136
+ if (imagesAndFiles.length === 0) return false;
136
137
  if (enableOfflineSupport) {
137
138
  for (var _iterator = _createForOfIteratorHelperLoose(imagesAndFiles), _step; !(_step = _iterator()).done;) {
138
139
  var _file = _step.value;
@@ -997,7 +998,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
997
998
  __self: _this,
998
999
  __source: {
999
1000
  fileName: _jsxFileName,
1000
- lineNumber: 1177,
1001
+ lineNumber: 1179,
1001
1002
  columnNumber: 5
1002
1003
  }
1003
1004
  }, children);
@@ -1018,7 +1019,7 @@ var withMessageInputContext = function withMessageInputContext(Component) {
1018
1019
  __self: _this,
1019
1020
  __source: {
1020
1021
  fileName: _jsxFileName,
1021
- lineNumber: 1217,
1022
+ lineNumber: 1219,
1022
1023
  columnNumber: 12
1023
1024
  }
1024
1025
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uniq","_interopRequireDefault","_mimeTypes","_streamChat","_useCreateMessageInputContext","_useMessageDetailsForState","_useCooldown2","_native","_removeReservedFields","_utils","_AttachmentPickerContext","_ChannelContext","_ChatContext","_OwnCapabilitiesContext","_ThreadContext","_TranslationContext","_defaultBaseContextValue","_getDisplayName","_isTestEnvironment","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof3","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","from","test","arr","len","arr2","MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","exports","MessageInputProvider","_ref","_getFileUploadConfig","_getFileUploadConfig2","_getImageUploadConfig","_getImageUploadConfig2","children","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","openPicker","selectedPicker","setSelectedPicker","_useChatContext","useChatContext","appSettings","client","enableOfflineSupport","getFileUploadConfig","_appSettings$app","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","_appSettings$app2","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","useOwnCapabilitiesContext","_useChannelContext","useChannelContext","channel","giphyEnabled","_useThreadContext","useThreadContext","thread","_useTranslationContex","useTranslationContext","t","inputBoxRef","useRef","sending","_useState","useState","_useState2","_slicedToArray2","asyncIds","setAsyncIds","_useState3","_useState4","asyncUploads","setAsyncUploads","_useState5","_useState6","giphyActive","setGiphyActive","_useState7","_useState8","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","_useMessageDetailsFor","useMessageDetailsForState","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","_useCooldown","useCooldown","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","useEffect","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","concat","_toConsumableArray2","_iterator","_step","file","state","FileState","NOT_SUPPORTED","_iterator2","_step2","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","logChatPromiseExecution","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","result","MEGA_BYTES_TO_BYTES","MAX_FILE_SIZE_TO_UPLOAD_IN_MB","totalFileSize","wrap","_callee$","_context","prev","pickDocument","console","log","abrupt","maxNumberOfFiles","Alert","alert","sent","cancelled","docs","reduce","acc","doc","Number","size","forEach","uploadNewFile","stop","apply","arguments","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","mapImageUploadToAttachment","mime_type","lookup","filename","fallback","image_url","url","original_height","height","original_width","width","originalFile","type","mapFileUploadToAttachment","_file$file$type","_file$file$type2","_file$file$type3","startsWith","asset_url","uri","duration","file_size","title","thumb_url","sendMessage","_ref3","_callee3","attachments","_loop","_iterator3","_step3","_image","_ret","_iterator4","_step4","_file3","updatedMessage","updateMessagePromise","_callee3$","_context3","sendLinks","match","urlRegex","clear","_callee2","_callee2$","_context2","v","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","delegateYield","t0","_typeof2","isEditingBoolean","_extends2","mentioned_users","quoted_message","clearEditingState","editMessage","removeReservedFields","then","uniq","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","ACITriggerSettings","updateMessage","_ref4","_callee4","_callee4$","_context4","regExcondition","getUploadSetStateAction","fileState","extraData","uploads","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","message","uploadFile","_ref6","_callee5","_ref5","newFile","response","localAssetURI","_callee5$","_context5","doDocUploadRequest","Platform","OS","getLocalAssetUri","sendFile","t1","_x","uploadImage","_ref8","_callee6","_ref7","newImage","_ref9","compressedUri","contentType","newImageUploads","_callee6$","_context6","source","compressImageQuality","compressImage","replace","doImageUploadRequest","sendImage","res","includes","keys","_x2","_ref10","_callee7","mimeType","isBlockedFileExtension","isBlockedFileMimeType","_callee7$","_context7","generateRandomId","fileExtensionType","_file$name","_file$name2","paused","progress","Promise","all","_x3","uploadNewImage","_ref11","_callee8","isBlockedImageMimeType","isBlockedImageExtension","imageState","_callee8$","_context8","_image$uri","imageExtensionType","_image$uri2","_x4","messageInputContext","useCreateMessageInputContext","openFilePicker","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","useMessageInputContext","contextValue","useContext","isTestEnvironment","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName","getDisplayName"],"sources":["MessageInputContext.tsx"],"sourcesContent":["import React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Alert, Keyboard, Platform } from 'react-native';\n\nimport type { TextInput, TextInputProps } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { isEditingBoolean, useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { compressImage, getLocalAssetUri, pickDocument } from '../../native';\nimport type { Asset, DefaultStreamChatGenerics, File, UnknownType } from '../../types/types';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n TriggerSettings,\n urlRegex,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type FileUpload = {\n file: File;\n id: string;\n state: FileStateValue;\n duration?: number;\n paused?: boolean;\n progress?: number;\n thumb_url?: string;\n url?: string;\n};\n\nexport type ImageUpload = {\n file: Partial<Asset> & {\n name?: string;\n };\n id: string;\n state: FileStateValue;\n height?: number;\n url?: string;\n width?: number;\n};\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: () => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: (ref: TextInput | null) => void;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editing: boolean | MessageType<StreamChatGenerics>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: File,\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled } = useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (pickDocument === null) {\n console.log(\n 'The file picker is not installed. Check our Getting Started documentation to install it.',\n );\n return;\n }\n\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n\n const MEGA_BYTES_TO_BYTES = 1024 * 1024;\n const MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;\n\n if (!result.cancelled && result.docs) {\n const totalFileSize = result.docs.reduce((acc, doc) => acc + Number(doc.size), 0);\n if (totalFileSize / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {\n Alert.alert(\n `Maximum file size upload limit reached, please upload files below ${MAX_FILE_SIZE_TO_UPLOAD_IN_MB}MB.`,\n );\n } else {\n result.docs.forEach((doc) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(doc);\n });\n }\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload) => {\n const mime_type: string | boolean = lookup(image.file.filename as string);\n return {\n fallback: image.file.name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalFile: image.file,\n type: 'image',\n } as Attachment;\n };\n\n const mapFileUploadToAttachment = (file: FileUpload) => {\n const mime_type: string | boolean = lookup(file.file.name as string);\n if (file.file.type?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: mime_type ? mime_type : undefined,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.type?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.type?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async () => {\n if (sending.current) {\n return;\n }\n\n if (!channelCapabities.sendLinks && !!text.match(urlRegex)) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n if (value.editing && !isEditingBoolean(value.editing)) {\n const updatedMessage = {\n ...value.editing,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (!isEditingBoolean(value.editing)) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n resetInput();\n value.clearEditingState();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regExcondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction = <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> => {\n const uploads: (prevUploads: UploadType[]) => UploadType[] = (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n return uploads;\n };\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n // For the case of expo messaging app where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && file.id && (await getLocalAssetUri(file.id));\n response = await channel.sendFile(localAssetURI || file.uri, file.name, file.type);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n try {\n // For the case of expo messaging app where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && file.id && (await getLocalAssetUri(file.id));\n const uri = localAssetURI || file.uri || '';\n /**\n * We skip compression if:\n * - the file is from the camera as that should already be compressed\n * - the file has not height/width value to maintain for compression\n * - the compressImageQuality number is not present or is 1 (meaning no compression)\n */\n const compressedUri = await (file.source === 'camera' ||\n !file.height ||\n !file.width ||\n typeof value.compressImageQuality !== 'number' ||\n value.compressImageQuality === 1\n ? uri\n : compressImage({\n compressImageQuality: value.compressImageQuality,\n height: file.height,\n uri,\n width: file.width,\n }));\n const filename = uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n channel.sendImage(compressedUri, file.filename, contentType).then((res) => {\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n url: res.file,\n });\n setImageUploads(newImageUploads);\n }\n });\n } else {\n response = await channel.sendImage(compressedUri, file.filename, contentType);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: File) => {\n const id: string = generateRandomId();\n const mimeType: string | boolean = lookup(file.name);\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file: { ...file, type: mimeType || file?.type },\n id: file.id || id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uniq","_interopRequireDefault","_mimeTypes","_streamChat","_useCreateMessageInputContext","_useMessageDetailsForState","_useCooldown2","_native","_removeReservedFields","_utils","_AttachmentPickerContext","_ChannelContext","_ChatContext","_OwnCapabilitiesContext","_ThreadContext","_TranslationContext","_defaultBaseContextValue","_getDisplayName","_isTestEnvironment","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof3","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","from","test","arr","len","arr2","MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","exports","MessageInputProvider","_ref","_getFileUploadConfig","_getFileUploadConfig2","_getImageUploadConfig","_getImageUploadConfig2","children","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","openPicker","selectedPicker","setSelectedPicker","_useChatContext","useChatContext","appSettings","client","enableOfflineSupport","getFileUploadConfig","_appSettings$app","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","_appSettings$app2","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","useOwnCapabilitiesContext","_useChannelContext","useChannelContext","channel","giphyEnabled","_useThreadContext","useThreadContext","thread","_useTranslationContex","useTranslationContext","t","inputBoxRef","useRef","sending","_useState","useState","_useState2","_slicedToArray2","asyncIds","setAsyncIds","_useState3","_useState4","asyncUploads","setAsyncUploads","_useState5","_useState6","giphyActive","setGiphyActive","_useState7","_useState8","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","_useMessageDetailsFor","useMessageDetailsForState","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","_useCooldown","useCooldown","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","useEffect","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","concat","_toConsumableArray2","_iterator","_step","file","state","FileState","NOT_SUPPORTED","_iterator2","_step2","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","logChatPromiseExecution","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","result","MEGA_BYTES_TO_BYTES","MAX_FILE_SIZE_TO_UPLOAD_IN_MB","totalFileSize","wrap","_callee$","_context","prev","pickDocument","console","log","abrupt","maxNumberOfFiles","Alert","alert","sent","cancelled","docs","reduce","acc","doc","Number","size","forEach","uploadNewFile","stop","apply","arguments","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","mapImageUploadToAttachment","mime_type","lookup","filename","fallback","image_url","url","original_height","height","original_width","width","originalFile","type","mapFileUploadToAttachment","_file$file$type","_file$file$type2","_file$file$type3","startsWith","asset_url","uri","duration","file_size","title","thumb_url","sendMessage","_ref3","_callee3","attachments","_loop","_iterator3","_step3","_image","_ret","_iterator4","_step4","_file3","updatedMessage","updateMessagePromise","_callee3$","_context3","sendLinks","match","urlRegex","clear","_callee2","_callee2$","_context2","v","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","delegateYield","t0","_typeof2","isEditingBoolean","_extends2","mentioned_users","quoted_message","clearEditingState","editMessage","removeReservedFields","then","uniq","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","ACITriggerSettings","updateMessage","_ref4","_callee4","_callee4$","_context4","regExcondition","getUploadSetStateAction","fileState","extraData","uploads","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","message","uploadFile","_ref6","_callee5","_ref5","newFile","response","localAssetURI","_callee5$","_context5","doDocUploadRequest","Platform","OS","getLocalAssetUri","sendFile","t1","_x","uploadImage","_ref8","_callee6","_ref7","newImage","_ref9","compressedUri","contentType","newImageUploads","_callee6$","_context6","source","compressImageQuality","compressImage","replace","doImageUploadRequest","sendImage","res","includes","keys","_x2","_ref10","_callee7","mimeType","isBlockedFileExtension","isBlockedFileMimeType","_callee7$","_context7","generateRandomId","fileExtensionType","_file$name","_file$name2","paused","progress","Promise","all","_x3","uploadNewImage","_ref11","_callee8","isBlockedImageMimeType","isBlockedImageExtension","imageState","_callee8$","_context8","_image$uri","imageExtensionType","_image$uri2","_x4","messageInputContext","useCreateMessageInputContext","openFilePicker","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","useMessageInputContext","contextValue","useContext","isTestEnvironment","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName","getDisplayName"],"sources":["MessageInputContext.tsx"],"sourcesContent":["import React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\n\nimport { Alert, Keyboard, Platform } from 'react-native';\n\nimport type { TextInput, TextInputProps } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { isEditingBoolean, useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { compressImage, getLocalAssetUri, pickDocument } from '../../native';\nimport type { Asset, DefaultStreamChatGenerics, File, UnknownType } from '../../types/types';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n TriggerSettings,\n urlRegex,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type FileUpload = {\n file: File;\n id: string;\n state: FileStateValue;\n duration?: number;\n paused?: boolean;\n progress?: number;\n thumb_url?: string;\n url?: string;\n};\n\nexport type ImageUpload = {\n file: Partial<Asset> & {\n name?: string;\n };\n id: string;\n state: FileStateValue;\n height?: number;\n url?: string;\n width?: number;\n};\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: () => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: (ref: TextInput | null) => void;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editing: boolean | MessageType<StreamChatGenerics>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: File,\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled } = useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (imagesAndFiles.length === 0) return false;\n\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (pickDocument === null) {\n console.log(\n 'The file picker is not installed. Check our Getting Started documentation to install it.',\n );\n return;\n }\n\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n\n const MEGA_BYTES_TO_BYTES = 1024 * 1024;\n const MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;\n\n if (!result.cancelled && result.docs) {\n const totalFileSize = result.docs.reduce((acc, doc) => acc + Number(doc.size), 0);\n if (totalFileSize / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {\n Alert.alert(\n `Maximum file size upload limit reached, please upload files below ${MAX_FILE_SIZE_TO_UPLOAD_IN_MB}MB.`,\n );\n } else {\n result.docs.forEach((doc) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(doc);\n });\n }\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload) => {\n const mime_type: string | boolean = lookup(image.file.filename as string);\n return {\n fallback: image.file.name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalFile: image.file,\n type: 'image',\n } as Attachment;\n };\n\n const mapFileUploadToAttachment = (file: FileUpload) => {\n const mime_type: string | boolean = lookup(file.file.name as string);\n if (file.file.type?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: mime_type ? mime_type : undefined,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.type?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.type?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.type,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async () => {\n if (sending.current) {\n return;\n }\n\n if (!channelCapabities.sendLinks && !!text.match(urlRegex)) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n if (value.editing && !isEditingBoolean(value.editing)) {\n const updatedMessage = {\n ...value.editing,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (!isEditingBoolean(value.editing)) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n resetInput();\n value.clearEditingState();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regExcondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction = <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> => {\n const uploads: (prevUploads: UploadType[]) => UploadType[] = (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n return uploads;\n };\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regExcondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n // For the case of expo messaging app where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && file.id && (await getLocalAssetUri(file.id));\n response = await channel.sendFile(localAssetURI || file.uri, file.name, file.type);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n try {\n // For the case of expo messaging app where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && file.id && (await getLocalAssetUri(file.id));\n const uri = localAssetURI || file.uri || '';\n /**\n * We skip compression if:\n * - the file is from the camera as that should already be compressed\n * - the file has not height/width value to maintain for compression\n * - the compressImageQuality number is not present or is 1 (meaning no compression)\n */\n const compressedUri = await (file.source === 'camera' ||\n !file.height ||\n !file.width ||\n typeof value.compressImageQuality !== 'number' ||\n value.compressImageQuality === 1\n ? uri\n : compressImage({\n compressImageQuality: value.compressImageQuality,\n height: file.height,\n uri,\n width: file.width,\n }));\n const filename = uri.replace(/^(file:\\/\\/|content:\\/\\/|assets-library:\\/\\/)/, '');\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n channel.sendImage(compressedUri, file.filename, contentType).then((res) => {\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n url: res.file,\n });\n setImageUploads(newImageUploads);\n }\n });\n } else {\n response = await channel.sendImage(compressedUri, file.filename, contentType);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: File) => {\n const id: string = generateRandomId();\n const mimeType: string | boolean = lookup(file.name);\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file: { ...file, type: mimeType || file?.type },\n id: file.id || id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"],"mappings":"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"}
@@ -7,14 +7,17 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
7
7
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _constants = require("./constants");
10
- var _QuickSqliteClient_v = require("./QuickSqliteClient_v4");
11
10
  var _schema = require("./schema");
12
11
  var _createCreateTableQuery = require("./sqlite-utils/createCreateTableQuery");
13
- var _sqlite;
14
12
  var sqlite;
15
13
  try {
16
14
  sqlite = require('react-native-quick-sqlite').QuickSQLite;
17
- } catch (e) {}
15
+ } catch (e) {
16
+ var isRemoteDebuggerError = e instanceof Error && e.message.includes('Failed to install');
17
+ if (isRemoteDebuggerError) {
18
+ throw e;
19
+ }
20
+ }
18
21
  var QuickSqliteClient = (0, _createClass2["default"])(function QuickSqliteClient() {
19
22
  (0, _classCallCheck2["default"])(this, QuickSqliteClient);
20
23
  });
@@ -28,12 +31,7 @@ QuickSqliteClient.getDbVersion = function () {
28
31
  QuickSqliteClient.setDbVersion = function (version) {
29
32
  return QuickSqliteClient.dbVersion = version;
30
33
  };
31
- QuickSqliteClient.isQuickSqliteV4 = (_sqlite = sqlite) != null && _sqlite.executeSql ? true : false;
32
34
  QuickSqliteClient.openDB = function () {
33
- if (QuickSqliteClient.isQuickSqliteV4) {
34
- _QuickSqliteClient_v.QuickSqliteClient_v4.openDB();
35
- return;
36
- }
37
35
  try {
38
36
  sqlite.open(QuickSqliteClient.dbName, QuickSqliteClient.dbLocation);
39
37
  sqlite.execute(QuickSqliteClient.dbName, "PRAGMA foreign_keys = ON", []);
@@ -42,10 +40,6 @@ QuickSqliteClient.openDB = function () {
42
40
  }
43
41
  };
44
42
  QuickSqliteClient.closeDB = function () {
45
- if (QuickSqliteClient.isQuickSqliteV4) {
46
- _QuickSqliteClient_v.QuickSqliteClient_v4.closeDB();
47
- return;
48
- }
49
43
  try {
50
44
  sqlite.close(QuickSqliteClient.dbName);
51
45
  } catch (e) {
@@ -54,10 +48,6 @@ QuickSqliteClient.closeDB = function () {
54
48
  };
55
49
  QuickSqliteClient.executeSqlBatch = function (queries) {
56
50
  if (!queries || !queries.length) return;
57
- if (QuickSqliteClient.isQuickSqliteV4) {
58
- _QuickSqliteClient_v.QuickSqliteClient_v4.executeSqlBatch(queries);
59
- return;
60
- }
61
51
  QuickSqliteClient.openDB();
62
52
  try {
63
53
  sqlite.executeBatch(_constants.DB_NAME, queries);
@@ -68,9 +58,6 @@ QuickSqliteClient.executeSqlBatch = function (queries) {
68
58
  }
69
59
  };
70
60
  QuickSqliteClient.executeSql = function (query, params) {
71
- if (QuickSqliteClient.isQuickSqliteV4) {
72
- return _QuickSqliteClient_v.QuickSqliteClient_v4.executeSql(query, params);
73
- }
74
61
  try {
75
62
  QuickSqliteClient.openDB();
76
63
  var _sqlite$execute = sqlite.execute(_constants.DB_NAME, query, params),
@@ -89,9 +76,6 @@ QuickSqliteClient.dropTables = function () {
89
76
  QuickSqliteClient.executeSqlBatch(queries);
90
77
  };
91
78
  QuickSqliteClient.deleteDatabase = function () {
92
- if (QuickSqliteClient.isQuickSqliteV4) {
93
- return _QuickSqliteClient_v.QuickSqliteClient_v4.deleteDatabase();
94
- }
95
79
  try {
96
80
  sqlite["delete"](QuickSqliteClient.dbName, QuickSqliteClient.dbLocation);
97
81
  } catch (e) {
@@ -103,9 +87,6 @@ QuickSqliteClient.initializeDatabase = function () {
103
87
  if (sqlite === undefined) {
104
88
  throw new Error('Please install "react-native-quick-sqlite" package to enable offline support');
105
89
  }
106
- if (QuickSqliteClient.isQuickSqliteV4) {
107
- console.warn('You seem to be using an older version of "react-native-quick-sqlite" dependency,', 'and we are going to drop support for it in the next major release.', 'Please upgrade to the version v5 of "react-native-quick-sqlite" to avoid any issues.');
108
- }
109
90
  var version = QuickSqliteClient.getUserPragmaVersion();
110
91
  if (version !== QuickSqliteClient.dbVersion) {
111
92
  QuickSqliteClient.dropTables();
@@ -118,18 +99,11 @@ QuickSqliteClient.initializeDatabase = function () {
118
99
  QuickSqliteClient.executeSqlBatch(q);
119
100
  };
120
101
  QuickSqliteClient.updateUserPragmaVersion = function (version) {
121
- if (QuickSqliteClient.isQuickSqliteV4) {
122
- _QuickSqliteClient_v.QuickSqliteClient_v4.updateUserPragmaVersion(version);
123
- return;
124
- }
125
102
  QuickSqliteClient.openDB();
126
103
  sqlite.execute(_constants.DB_NAME, "PRAGMA user_version = " + version, []);
127
104
  QuickSqliteClient.closeDB();
128
105
  };
129
106
  QuickSqliteClient.getUserPragmaVersion = function () {
130
- if (QuickSqliteClient.isQuickSqliteV4) {
131
- return _QuickSqliteClient_v.QuickSqliteClient_v4.getUserPragmaVersion();
132
- }
133
107
  QuickSqliteClient.openDB();
134
108
  try {
135
109
  var _sqlite$execute2 = sqlite.execute(_constants.DB_NAME, "PRAGMA user_version", []),
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_QuickSqliteClient_v","_schema","_createCreateTableQuery","_sqlite","sqlite","QuickSQLite","e","QuickSqliteClient","_createClass2","_classCallCheck2","exports","dbVersion","dbName","DB_NAME","dbLocation","DB_LOCATION","getDbVersion","setDbVersion","version","isQuickSqliteV4","executeSql","openDB","QuickSqliteClient_v4","open","execute","console","error","closeDB","close","executeSqlBatch","queries","length","executeBatch","Error","query","params","_sqlite$execute","rows","_array","dropTables","Object","keys","tables","map","table","deleteDatabase","initializeDatabase","undefined","warn","getUserPragmaVersion","updateUserPragmaVersion","q","reduce","queriesSoFar","tableName","push","apply","_toConsumableArray2","createCreateTableQuery","_sqlite$execute2","result","user_version","resetDB"],"sources":["QuickSqliteClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { QuickSQLite } from 'react-native-quick-sqlite';\nlet sqlite: typeof QuickSQLite;\n\ntry {\n sqlite = require('react-native-quick-sqlite').QuickSQLite;\n} catch (e) {\n // Failed for one of the reason\n // 1. Running on expo, where we don't support offline storage yet.\n // 2. Offline support is disabled, in which case this library is not installed.\n}\n\nimport { DB_LOCATION, DB_NAME } from './constants';\nimport { QuickSqliteClient_v4 } from './QuickSqliteClient_v4';\nimport { tables } from './schema';\nimport { createCreateTableQuery } from './sqlite-utils/createCreateTableQuery';\nimport type { PreparedQueries, Table } from './types';\n\n/**\n * QuickSqliteClient takes care of any direct interaction with sqlite.\n * This way usage react-native-quick-sqlite package is scoped to a single class/file.\n *\n * TODO: Drop the support for v4 of react-native-quick-sqlite in the next major release.\n */\nexport class QuickSqliteClient {\n static dbVersion = 3;\n\n static dbName = DB_NAME;\n static dbLocation = DB_LOCATION;\n\n static getDbVersion = () => this.dbVersion;\n // Force a specific db version. This is mainly useful for testsuit.\n static setDbVersion = (version: number) => (this.dbVersion = version);\n\n // @ts-ignore\n static isQuickSqliteV4 = sqlite?.executeSql ? true : false;\n\n // print if legacy version\n static openDB = () => {\n if (this.isQuickSqliteV4) {\n QuickSqliteClient_v4.openDB();\n return;\n }\n\n try {\n sqlite.open(this.dbName, this.dbLocation);\n sqlite.execute(this.dbName, `PRAGMA foreign_keys = ON`, []);\n } catch (e) {\n console.error(`Error opening database ${this.dbName}: ${e}`);\n }\n };\n\n static closeDB = () => {\n if (this.isQuickSqliteV4) {\n QuickSqliteClient_v4.closeDB();\n return;\n }\n\n try {\n sqlite.close(this.dbName);\n } catch (e) {\n console.error(`Error closing database ${this.dbName}: ${e}`);\n }\n };\n\n static executeSqlBatch = (queries: PreparedQueries[]) => {\n if (!queries || !queries.length) return;\n\n if (this.isQuickSqliteV4) {\n QuickSqliteClient_v4.executeSqlBatch(queries);\n return;\n }\n\n this.openDB();\n try {\n sqlite.executeBatch(DB_NAME, queries);\n\n this.closeDB();\n } catch (e) {\n this.closeDB();\n throw new Error(`Query/queries failed: ${e}`);\n }\n };\n\n static executeSql = (query: string, params?: string[]) => {\n if (this.isQuickSqliteV4) {\n return QuickSqliteClient_v4.executeSql(query, params);\n }\n\n try {\n this.openDB();\n const { rows } = sqlite.execute(DB_NAME, query, params);\n this.closeDB();\n\n return rows ? rows._array : [];\n } catch (e) {\n this.closeDB();\n throw new Error(`Query/queries failed: ${e}: `);\n }\n };\n\n static dropTables = () => {\n const queries: PreparedQueries[] = Object.keys(tables).map((table) => [\n `DROP TABLE IF EXISTS ${table}`,\n [],\n ]);\n\n this.executeSqlBatch(queries);\n };\n\n static deleteDatabase = () => {\n if (this.isQuickSqliteV4) {\n return QuickSqliteClient_v4.deleteDatabase();\n }\n\n try {\n sqlite.delete(this.dbName, this.dbLocation);\n } catch (e) {\n throw new Error(`Error deleting DB: ${e}`);\n }\n\n return true;\n };\n\n static initializeDatabase = () => {\n // @ts-ignore\n if (sqlite === undefined) {\n throw new Error(\n 'Please install \"react-native-quick-sqlite\" package to enable offline support',\n );\n }\n\n if (this.isQuickSqliteV4) {\n console.warn(\n 'You seem to be using an older version of \"react-native-quick-sqlite\" dependency,',\n 'and we are going to drop support for it in the next major release.',\n 'Please upgrade to the version v5 of \"react-native-quick-sqlite\" to avoid any issues.',\n );\n }\n\n const version = this.getUserPragmaVersion();\n\n if (version !== this.dbVersion) {\n this.dropTables();\n this.updateUserPragmaVersion(this.dbVersion);\n }\n const q = (Object.keys(tables) as Table[]).reduce<PreparedQueries[]>(\n (queriesSoFar, tableName) => {\n queriesSoFar.push(...createCreateTableQuery(tableName));\n return queriesSoFar;\n },\n [],\n );\n\n this.executeSqlBatch(q);\n };\n\n static updateUserPragmaVersion = (version: number) => {\n if (this.isQuickSqliteV4) {\n QuickSqliteClient_v4.updateUserPragmaVersion(version);\n return;\n }\n\n this.openDB();\n sqlite.execute(DB_NAME, `PRAGMA user_version = ${version}`, []);\n this.closeDB();\n };\n\n static getUserPragmaVersion = () => {\n if (this.isQuickSqliteV4) {\n return QuickSqliteClient_v4.getUserPragmaVersion();\n }\n\n this.openDB();\n try {\n const { rows } = sqlite.execute(DB_NAME, `PRAGMA user_version`, []);\n const result = rows ? rows._array : [];\n this.closeDB();\n return result[0].user_version as number;\n } catch (e) {\n this.closeDB();\n throw new Error(`Querying for user_version failed: ${e}`);\n }\n };\n\n static resetDB = () => {\n this.dropTables();\n this.initializeDatabase();\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_schema","_createCreateTableQuery","sqlite","QuickSQLite","e","isRemoteDebuggerError","Error","message","includes","QuickSqliteClient","_createClass2","_classCallCheck2","exports","dbVersion","dbName","DB_NAME","dbLocation","DB_LOCATION","getDbVersion","setDbVersion","version","openDB","open","execute","console","error","closeDB","close","executeSqlBatch","queries","length","executeBatch","executeSql","query","params","_sqlite$execute","rows","_array","dropTables","Object","keys","tables","map","table","deleteDatabase","initializeDatabase","undefined","getUserPragmaVersion","updateUserPragmaVersion","q","reduce","queriesSoFar","tableName","push","apply","_toConsumableArray2","createCreateTableQuery","_sqlite$execute2","result","user_version","resetDB"],"sources":["QuickSqliteClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport type { QuickSQLite } from 'react-native-quick-sqlite';\nlet sqlite: typeof QuickSQLite;\n\ntry {\n sqlite = require('react-native-quick-sqlite').QuickSQLite;\n} catch (e) {\n // We want to throw the original error when remote debugger (e.g. Chrome) is enabled.\n // QuickSQLite can only be used when synchronous method invocations (JSI) are possible.\n // e.g on-device debugger (e.g. Flipper).\n const isRemoteDebuggerError = e instanceof Error && e.message.includes('Failed to install');\n if (isRemoteDebuggerError) {\n throw e;\n }\n // Reaching here will mean that QuickSQLite is not installed for one of the reasons\n // 1. Running on regular expo, where we don't support offline storage yet.\n // 2. Offline support is disabled, in which case this library is not installed.\n}\n\nimport { DB_LOCATION, DB_NAME } from './constants';\nimport { tables } from './schema';\nimport { createCreateTableQuery } from './sqlite-utils/createCreateTableQuery';\nimport type { PreparedQueries, Table } from './types';\n\n/**\n * QuickSqliteClient takes care of any direct interaction with sqlite.\n * This way usage react-native-quick-sqlite package is scoped to a single class/file.\n *\n */\nexport class QuickSqliteClient {\n static dbVersion = 3;\n\n static dbName = DB_NAME;\n static dbLocation = DB_LOCATION;\n\n static getDbVersion = () => QuickSqliteClient.dbVersion;\n // Force a specific db version. This is mainly useful for testsuit.\n static setDbVersion = (version: number) => (QuickSqliteClient.dbVersion = version);\n\n static openDB = () => {\n try {\n sqlite.open(QuickSqliteClient.dbName, QuickSqliteClient.dbLocation);\n sqlite.execute(QuickSqliteClient.dbName, `PRAGMA foreign_keys = ON`, []);\n } catch (e) {\n console.error(`Error opening database ${QuickSqliteClient.dbName}: ${e}`);\n }\n };\n\n static closeDB = () => {\n try {\n sqlite.close(QuickSqliteClient.dbName);\n } catch (e) {\n console.error(`Error closing database ${QuickSqliteClient.dbName}: ${e}`);\n }\n };\n\n static executeSqlBatch = (queries: PreparedQueries[]) => {\n if (!queries || !queries.length) return;\n\n QuickSqliteClient.openDB();\n try {\n sqlite.executeBatch(DB_NAME, queries);\n\n QuickSqliteClient.closeDB();\n } catch (e) {\n QuickSqliteClient.closeDB();\n throw new Error(`Query/queries failed: ${e}`);\n }\n };\n\n static executeSql = (query: string, params?: string[]) => {\n try {\n QuickSqliteClient.openDB();\n const { rows } = sqlite.execute(DB_NAME, query, params);\n QuickSqliteClient.closeDB();\n\n return rows ? rows._array : [];\n } catch (e) {\n QuickSqliteClient.closeDB();\n throw new Error(`Query/queries failed: ${e}: `);\n }\n };\n\n static dropTables = () => {\n const queries: PreparedQueries[] = Object.keys(tables).map((table) => [\n `DROP TABLE IF EXISTS ${table}`,\n [],\n ]);\n\n QuickSqliteClient.executeSqlBatch(queries);\n };\n\n static deleteDatabase = () => {\n try {\n sqlite.delete(QuickSqliteClient.dbName, QuickSqliteClient.dbLocation);\n } catch (e) {\n throw new Error(`Error deleting DB: ${e}`);\n }\n\n return true;\n };\n\n static initializeDatabase = () => {\n if (sqlite === undefined) {\n throw new Error(\n 'Please install \"react-native-quick-sqlite\" package to enable offline support',\n );\n }\n\n const version = QuickSqliteClient.getUserPragmaVersion();\n\n if (version !== QuickSqliteClient.dbVersion) {\n QuickSqliteClient.dropTables();\n QuickSqliteClient.updateUserPragmaVersion(QuickSqliteClient.dbVersion);\n }\n const q = (Object.keys(tables) as Table[]).reduce<PreparedQueries[]>(\n (queriesSoFar, tableName) => {\n queriesSoFar.push(...createCreateTableQuery(tableName));\n return queriesSoFar;\n },\n [],\n );\n\n QuickSqliteClient.executeSqlBatch(q);\n };\n\n static updateUserPragmaVersion = (version: number) => {\n QuickSqliteClient.openDB();\n sqlite.execute(DB_NAME, `PRAGMA user_version = ${version}`, []);\n QuickSqliteClient.closeDB();\n };\n\n static getUserPragmaVersion = () => {\n QuickSqliteClient.openDB();\n try {\n const { rows } = sqlite.execute(DB_NAME, `PRAGMA user_version`, []);\n const result = rows ? rows._array : [];\n QuickSqliteClient.closeDB();\n return result[0].user_version as number;\n } catch (e) {\n QuickSqliteClient.closeDB();\n throw new Error(`Querying for user_version failed: ${e}`);\n }\n };\n\n static resetDB = () => {\n QuickSqliteClient.dropTables();\n QuickSqliteClient.initializeDatabase();\n };\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.14.0-beta.1"
2
+ "version": "5.14.0-beta.3"
3
3
  }