stream-chat-react-native-core 5.8.0-beta.2 → 5.8.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.
@@ -251,17 +251,26 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
251
251
  });
252
252
  }
253
253
  }, [imagesForInput]);
254
+ var MEGA_BYTES_TO_BYTES = 1024 * 1024;
255
+ var MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;
254
256
 
255
257
  var uploadImagesHandler = function uploadImagesHandler() {
256
- var imagesToUpload = selectedImages.filter(function (selectedImage) {
258
+ var imageToUpload = selectedImages.find(function (selectedImage) {
257
259
  var uploadedImage = imageUploads.find(function (imageUpload) {
258
260
  return imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri;
259
261
  });
260
262
  return !uploadedImage;
261
263
  });
262
- imagesToUpload.forEach(function (image) {
263
- return uploadNewImage(image);
264
- });
264
+
265
+ if (imageToUpload && Number(imageToUpload.fileSize) / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {
266
+ _reactNative.Alert.alert("Maximum file size upload limit reached, please upload an image below " + MAX_FILE_SIZE_TO_UPLOAD_IN_MB + "MB.");
267
+
268
+ setSelectedImages(selectedImages.filter(function (selectedImage) {
269
+ return selectedImage.uri !== imageToUpload.uri;
270
+ }));
271
+ } else {
272
+ if (imageToUpload) uploadNewImage(imageToUpload);
273
+ }
265
274
  };
266
275
 
267
276
  var removeImagesHandler = function removeImagesHandler() {
@@ -286,15 +295,22 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
286
295
  }, [selectedImagesLength]);
287
296
  (0, _react.useEffect)(function () {
288
297
  if (selectedFilesLength > fileUploadsLength) {
289
- var filesToUpload = selectedFiles.filter(function (selectedFile) {
298
+ var fileToUpload = selectedFiles.find(function (selectedFile) {
290
299
  var uploadedFile = fileUploads.find(function (fileUpload) {
291
300
  return fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri;
292
301
  });
293
302
  return !uploadedFile;
294
303
  });
295
- filesToUpload.forEach(function (file) {
296
- return uploadNewFile(file);
297
- });
304
+
305
+ if (fileToUpload && Number(fileToUpload.size) / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {
306
+ _reactNative.Alert.alert("Maximum file size upload limit reached, please upload a file below " + MAX_FILE_SIZE_TO_UPLOAD_IN_MB + "MB.");
307
+
308
+ setSelectedFiles(selectedFiles.filter(function (selectedFile) {
309
+ return selectedFile.uri !== fileToUpload.uri;
310
+ }));
311
+ } else {
312
+ if (fileToUpload) uploadNewFile(fileToUpload);
313
+ }
298
314
  } else {
299
315
  var filesToRemove = fileUploads.filter(function (fileUpload) {
300
316
  return !selectedFiles.find(function (selectedFile) {
@@ -430,21 +446,21 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
430
446
  __self: _this,
431
447
  __source: {
432
448
  fileName: _jsxFileName,
433
- lineNumber: 482,
449
+ lineNumber: 511,
434
450
  columnNumber: 7
435
451
  }
436
452
  }, editing && _react["default"].createElement(InputEditingStateHeader, {
437
453
  __self: _this,
438
454
  __source: {
439
455
  fileName: _jsxFileName,
440
- lineNumber: 490,
456
+ lineNumber: 519,
441
457
  columnNumber: 21
442
458
  }
443
459
  }), quotedMessage && _react["default"].createElement(InputReplyStateHeader, {
444
460
  __self: _this,
445
461
  __source: {
446
462
  fileName: _jsxFileName,
447
- lineNumber: 491,
463
+ lineNumber: 520,
448
464
  columnNumber: 27
449
465
  }
450
466
  }), _react["default"].createElement(_reactNative.View, {
@@ -452,7 +468,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
452
468
  __self: _this,
453
469
  __source: {
454
470
  fileName: _jsxFileName,
455
- lineNumber: 492,
471
+ lineNumber: 521,
456
472
  columnNumber: 9
457
473
  }
458
474
  }, Input ? _react["default"].createElement(Input, {
@@ -461,7 +477,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
461
477
  __self: _this,
462
478
  __source: {
463
479
  fileName: _jsxFileName,
464
- lineNumber: 494,
480
+ lineNumber: 523,
465
481
  columnNumber: 13
466
482
  }
467
483
  }) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -469,14 +485,14 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
469
485
  __self: _this,
470
486
  __source: {
471
487
  fileName: _jsxFileName,
472
- lineNumber: 500,
488
+ lineNumber: 529,
473
489
  columnNumber: 15
474
490
  }
475
491
  }, InputButtons && _react["default"].createElement(InputButtons, {
476
492
  __self: _this,
477
493
  __source: {
478
494
  fileName: _jsxFileName,
479
- lineNumber: 501,
495
+ lineNumber: 530,
480
496
  columnNumber: 34
481
497
  }
482
498
  })), _react["default"].createElement(_reactNative.View, {
@@ -487,7 +503,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
487
503
  __self: _this,
488
504
  __source: {
489
505
  fileName: _jsxFileName,
490
- lineNumber: 503,
506
+ lineNumber: 532,
491
507
  columnNumber: 15
492
508
  }
493
509
  }, (typeof editing !== 'boolean' && (editing == null ? void 0 : editing.quoted_message) || quotedMessage) && _react["default"].createElement(_reactNative.View, {
@@ -495,21 +511,21 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
495
511
  __self: _this,
496
512
  __source: {
497
513
  fileName: _jsxFileName,
498
- lineNumber: 514,
514
+ lineNumber: 543,
499
515
  columnNumber: 19
500
516
  }
501
517
  }, _react["default"].createElement(Reply, {
502
518
  __self: _this,
503
519
  __source: {
504
520
  fileName: _jsxFileName,
505
- lineNumber: 515,
521
+ lineNumber: 544,
506
522
  columnNumber: 21
507
523
  }
508
524
  })), imageUploads.length ? _react["default"].createElement(ImageUploadPreview, {
509
525
  __self: _this,
510
526
  __source: {
511
527
  fileName: _jsxFileName,
512
- lineNumber: 518,
528
+ lineNumber: 547,
513
529
  columnNumber: 40
514
530
  }
515
531
  }) : null, imageUploads.length && fileUploads.length ? _react["default"].createElement(_reactNative.View, {
@@ -520,14 +536,14 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
520
536
  __self: _this,
521
537
  __source: {
522
538
  fileName: _jsxFileName,
523
- lineNumber: 520,
539
+ lineNumber: 549,
524
540
  columnNumber: 19
525
541
  }
526
542
  }) : null, fileUploads.length ? _react["default"].createElement(FileUploadPreview, {
527
543
  __self: _this,
528
544
  __source: {
529
545
  fileName: _jsxFileName,
530
- lineNumber: 530,
546
+ lineNumber: 559,
531
547
  columnNumber: 39
532
548
  }
533
549
  }) : null, giphyActive ? _react["default"].createElement(InputGiphySearch, {
@@ -535,7 +551,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
535
551
  __self: _this,
536
552
  __source: {
537
553
  fileName: _jsxFileName,
538
- lineNumber: 532,
554
+ lineNumber: 561,
539
555
  columnNumber: 19
540
556
  }
541
557
  }) : _react["default"].createElement(_reactNative.View, {
@@ -543,7 +559,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
543
559
  __self: _this,
544
560
  __source: {
545
561
  fileName: _jsxFileName,
546
- lineNumber: 534,
562
+ lineNumber: 563,
547
563
  columnNumber: 19
548
564
  }
549
565
  }, _react["default"].createElement(_AutoCompleteInput.AutoCompleteInput, {
@@ -552,7 +568,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
552
568
  __self: _this,
553
569
  __source: {
554
570
  fileName: _jsxFileName,
555
- lineNumber: 535,
571
+ lineNumber: 564,
556
572
  columnNumber: 21
557
573
  }
558
574
  }))), _react["default"].createElement(_reactNative.View, {
@@ -560,7 +576,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
560
576
  __self: _this,
561
577
  __source: {
562
578
  fileName: _jsxFileName,
563
- lineNumber: 542,
579
+ lineNumber: 571,
564
580
  columnNumber: 15
565
581
  }
566
582
  }, cooldownRemainingSeconds ? _react["default"].createElement(CooldownTimer, {
@@ -568,7 +584,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
568
584
  __self: _this,
569
585
  __source: {
570
586
  fileName: _jsxFileName,
571
- lineNumber: 544,
587
+ lineNumber: 573,
572
588
  columnNumber: 19
573
589
  }
574
590
  }) : _react["default"].createElement(SendButton, {
@@ -576,7 +592,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
576
592
  __self: _this,
577
593
  __source: {
578
594
  fileName: _jsxFileName,
579
- lineNumber: 546,
595
+ lineNumber: 575,
580
596
  columnNumber: 19
581
597
  }
582
598
  })))), _react["default"].createElement(ShowThreadMessageInChannelButton, {
@@ -584,7 +600,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
584
600
  __self: _this,
585
601
  __source: {
586
602
  fileName: _jsxFileName,
587
- lineNumber: 556,
603
+ lineNumber: 585,
588
604
  columnNumber: 9
589
605
  }
590
606
  })), triggerType && suggestions ? _react["default"].createElement(_reactNative.View, {
@@ -595,7 +611,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
595
611
  __self: _this,
596
612
  __source: {
597
613
  fileName: _jsxFileName,
598
- lineNumber: 560,
614
+ lineNumber: 589,
599
615
  columnNumber: 9
600
616
  }
601
617
  }, _react["default"].createElement(AutoCompleteSuggestionList, {
@@ -607,7 +623,7 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
607
623
  __self: _this,
608
624
  __source: {
609
625
  fileName: _jsxFileName,
610
- lineNumber: 567,
626
+ lineNumber: 596,
611
627
  columnNumber: 11
612
628
  }
613
629
  })) : null, selectedPicker && _react["default"].createElement(_reactNative.View, {
@@ -618,14 +634,14 @@ var MessageInputWithContext = function MessageInputWithContext(props) {
618
634
  __self: _this,
619
635
  __source: {
620
636
  fileName: _jsxFileName,
621
- lineNumber: 577,
637
+ lineNumber: 606,
622
638
  columnNumber: 9
623
639
  }
624
640
  }, _react["default"].createElement(_AttachmentSelectionBar.AttachmentSelectionBar, {
625
641
  __self: _this,
626
642
  __source: {
627
643
  fileName: _jsxFileName,
628
- lineNumber: 589,
644
+ lineNumber: 618,
629
645
  columnNumber: 11
630
646
  }
631
647
  })));
@@ -783,7 +799,7 @@ var MessageInput = function MessageInput(props) {
783
799
  __self: _this,
784
800
  __source: {
785
801
  fileName: _jsxFileName,
786
- lineNumber: 795,
802
+ lineNumber: 824,
787
803
  columnNumber: 12
788
804
  }
789
805
  });
@@ -843,7 +859,7 @@ var MessageInput = function MessageInput(props) {
843
859
  __self: _this,
844
860
  __source: {
845
861
  fileName: _jsxFileName,
846
- lineNumber: 799,
862
+ lineNumber: 828,
847
863
  columnNumber: 5
848
864
  }
849
865
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","composerContainer","container","borderTopWidth","padding","inputBoxContainer","borderRadius","borderWidth","flex","optionsContainer","paddingBottom","replyContainer","paddingHorizontal","sendButtonContainer","suggestionsListContainer","elevation","left","position","right","shadowOffset","height","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","isOnline","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeFile","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","ShowThreadMessageInChannelButton","suggestions","thread","threadList","triggerType","uploadNewFile","uploadNewImage","watchers","setHeight","theme","colors","border","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedFiles","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","hasResetFiles","setHasResetFiles","selectedImagesLength","length","imageUploadsLength","selectedFilesLength","fileUploadsLength","imagesForInput","forEach","image","id","file","uploadImagesHandler","imagesToUpload","filter","selectedImage","uploadedImage","find","imageUpload","uri","url","removeImagesHandler","imagesToRemove","filesToUpload","selectedFile","uploadedFile","fileUpload","filesToRemove","updatedSelectedImages","map","source","Boolean","updatedSelectedFiles","duration","name","size","type","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsOnline","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","t","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsOnline","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isOnlineEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","clearEditingState","clearQuotedMessageState","SendMessageDisallowedIndicator","setGiphyActive","setShowMoreOptions","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { ChatContextValue, useChatContext } from '../../contexts';\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Asset, DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 16,\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'isOnline'> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'InputEditingStateHeader'\n | 'InputGiphySearch'\n | 'InputReplyStateHeader'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeFile'\n | 'removeImage'\n | 'uploadNewFile'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isOnline,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n ShowThreadMessageInChannelButton,\n suggestions,\n thread,\n threadList,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: { border, grey_whisper, white, white_smoke },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const [hasResetFiles, setHasResetFiles] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const selectedFilesLength = hasResetFiles ? selectedFiles.length : 0;\n const fileUploadsLength = hasResetFiles ? fileUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n setSelectedFiles([]);\n if (fileUploads.length) {\n fileUploads.forEach((file) => removeFile(file.id));\n }\n return () => setSelectedFiles([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (hasResetFiles === false && fileUploadsLength === 0 && selectedFilesLength === 0) {\n setHasResetFiles(true);\n }\n }, [fileUploadsLength, selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n const uploadImagesHandler = () => {\n const imagesToUpload = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n imagesToUpload.forEach((image) => uploadNewImage(image));\n };\n\n const removeImagesHandler = () => {\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n };\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n uploadImagesHandler();\n } else {\n /** User de-selected an image in bottom sheet attachment picker */\n removeImagesHandler();\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (selectedFilesLength > fileUploadsLength) {\n /** User selected a video in bottom sheet attachment picker */\n const filesToUpload = selectedFiles.filter((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return !uploadedFile;\n });\n filesToUpload.forEach((file) => uploadNewFile(file));\n } else {\n /** User de-selected a video in bottom sheet attachment picker */\n const filesToRemove = fileUploads.filter(\n (fileUpload) =>\n !selectedFiles.find(\n (selectedFile) =>\n selectedFile.uri === fileUpload.file.uri || selectedFile.uri === fileUpload.url,\n ),\n );\n filesToRemove.forEach((file) => removeFile(file.id));\n }\n }, [selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n useEffect(() => {\n if (fileUploadsLength < selectedFilesLength) {\n /** User removed some video from seleted files within ImageUploadPreview. */\n const updatedSelectedFiles = selectedFiles.filter((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return uploadedFile;\n });\n setSelectedFiles(updatedSelectedFiles);\n } else if (fileUploadsLength > selectedFilesLength) {\n /**\n * User is editing some message which contains video attachments OR\n * video attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewFile` function from `MessageInputContext`.\n **/\n setSelectedFiles(\n fileUploads.map((fileUpload) => ({\n duration: fileUpload.file.duration,\n name: fileUpload.file.name,\n size: fileUpload.file.size,\n type: fileUpload.file.type,\n uri: fileUpload.file.uri,\n })),\n );\n }\n }, [fileUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {editing && <InputEditingStateHeader />}\n {quotedMessage && <InputReplyStateHeader />}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n {giphyActive ? (\n <InputGiphySearch disabled={!isOnline} />\n ) : (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n </View>\n )}\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton\n disabled={\n disabled || sending.current || !isValidMessage() || (giphyActive && !isOnline)\n }\n />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isOnline: prevIsOnline,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isOnline: nextIsOnline,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isOnlineEqual = prevIsOnline === nextIsOnline;\n if (!isOnlineEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/),\n * [Chat Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/),\n * [MessageInput Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/message-input-context/),\n * [Suggestions Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/suggestions-context/), and\n * [Translation Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const { isOnline } = useChatContext();\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewFile,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isOnline,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
1
+ {"version":3,"sources":["MessageInput.tsx"],"names":["styles","StyleSheet","create","attachmentSeparator","borderBottomWidth","marginBottom","autoCompleteInputContainer","alignItems","flexDirection","paddingLeft","paddingRight","composerContainer","container","borderTopWidth","padding","inputBoxContainer","borderRadius","borderWidth","flex","optionsContainer","paddingBottom","replyContainer","paddingHorizontal","sendButtonContainer","suggestionsListContainer","elevation","left","position","right","shadowOffset","height","width","shadowOpacity","MessageInputWithContext","props","additionalTextInputProps","asyncIds","asyncUploads","AutoCompleteSuggestionList","closeAttachmentPicker","cooldownEndsAt","CooldownTimer","disabled","editing","FileUploadPreview","fileUploads","giphyActive","ImageUploadPreview","imageUploads","Input","inputBoxRef","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","isOnline","isValidMessage","maxNumberOfFiles","members","mentionedUsers","numberOfUploads","quotedMessage","removeFile","removeImage","Reply","resetInput","SendButton","sending","sendMessageAsync","ShowThreadMessageInChannelButton","suggestions","thread","threadList","triggerType","uploadNewFile","uploadNewImage","watchers","setHeight","theme","colors","border","grey_whisper","white","white_smoke","messageInput","attachmentSelectionBar","suggestionListContainer","attachmentPickerBottomSheetHeight","attachmentSelectionBarHeight","bottomInset","selectedFiles","selectedImages","selectedPicker","setMaxNumberOfFiles","setSelectedFiles","setSelectedImages","cooldownRemainingSeconds","seconds","hasResetImages","setHasResetImages","hasResetFiles","setHasResetFiles","selectedImagesLength","length","imageUploadsLength","selectedFilesLength","fileUploadsLength","imagesForInput","forEach","image","id","file","MEGA_BYTES_TO_BYTES","MAX_FILE_SIZE_TO_UPLOAD_IN_MB","uploadImagesHandler","imageToUpload","find","selectedImage","uploadedImage","imageUpload","uri","url","Number","fileSize","Alert","alert","filter","removeImagesHandler","imagesToRemove","fileToUpload","selectedFile","uploadedFile","fileUpload","size","filesToRemove","updatedSelectedImages","map","source","Boolean","updatedSelectedFiles","duration","name","type","editingExists","current","focus","asyncIdsString","join","asyncUploadsString","Object","values","state","keys","getMembers","result","member","user","push","getUsers","users","getWatchers","uniqueUsers","usersArray","additionalTextInputContainerProps","editable","undefined","newHeight","nativeEvent","layout","backgroundColor","borderColor","paddingVertical","quoted_message","borderBottomColor","marginHorizontal","bottom","data","onSelect","queryText","areEqual","prevProps","nextProps","prevAdditionalTextInputProps","prevAsyncUploads","prevDisabled","prevEditing","prevFileUploads","prevGiphyActive","prevImageUploads","prevIsOnline","prevIsValidMessage","prevMentionedUsers","prevQuotedMessage","prevSending","prevShowMoreOptions","showMoreOptions","prevSuggestions","prevT","t","prevThread","prevThreadList","nextAdditionalTextInputProps","nextAsyncUploads","nextDisabled","nextEditing","nextFileUploads","nextGiphyActive","nextImageUploads","nextIsOnline","nextIsValidMessage","nextMentionedUsers","nextQuotedMessage","nextSending","nextShowMoreOptions","nextSuggestions","nextT","nextThread","nextThreadList","tEqual","additionalTextInputPropsEven","disabledEqual","editingEqual","imageUploadsEqual","giphyActiveEqual","quotedMessageEqual","sendingEqual","showMoreOptionsEqual","isOnlineEqual","isValidMessageEqual","asyncUploadsEqual","every","key","fileUploadsEqual","mentionedUsersEqual","suggestionsEqual","index","threadEqual","text","reply_count","threadListEqual","MemoizedMessageInput","React","memo","MessageInput","ownCapabilities","clearEditingState","clearQuotedMessageState","SendMessageDisallowedIndicator","setGiphyActive","setShowMoreOptions","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","sendMessage","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Alert, StyleSheet, View } from 'react-native';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { useCountdown } from './hooks/useCountdown';\n\nimport { ChatContextValue, useChatContext } from '../../contexts';\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport type { Asset, DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentSelectionBar } from '../AttachmentPicker/components/AttachmentSelectionBar';\nimport { AutoCompleteInput } from '../AutoCompleteInput/AutoCompleteInput';\n\nconst styles = StyleSheet.create({\n attachmentSeparator: {\n borderBottomWidth: 1,\n marginBottom: 10,\n },\n autoCompleteInputContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n paddingLeft: 16,\n paddingRight: 16,\n },\n composerContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n container: {\n borderTopWidth: 1,\n padding: 10,\n },\n inputBoxContainer: {\n borderRadius: 20,\n borderWidth: 1,\n flex: 1,\n },\n optionsContainer: {\n flexDirection: 'row',\n paddingBottom: 10,\n paddingRight: 10,\n },\n replyContainer: { paddingBottom: 12, paddingHorizontal: 8 },\n sendButtonContainer: { paddingBottom: 10, paddingLeft: 10 },\n suggestionsListContainer: {\n borderRadius: 10,\n elevation: 3,\n left: 8,\n position: 'absolute',\n right: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\ntype MessageInputPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'isOnline'> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'disabled' | 'members' | 'watchers'> &\n Pick<\n MessageInputContextValue<StreamChatGenerics>,\n | 'additionalTextInputProps'\n | 'asyncIds'\n | 'asyncUploads'\n | 'cooldownEndsAt'\n | 'CooldownTimer'\n | 'clearEditingState'\n | 'clearQuotedMessageState'\n | 'closeAttachmentPicker'\n | 'editing'\n | 'FileUploadPreview'\n | 'fileUploads'\n | 'giphyActive'\n | 'ImageUploadPreview'\n | 'imageUploads'\n | 'Input'\n | 'inputBoxRef'\n | 'InputButtons'\n | 'InputEditingStateHeader'\n | 'InputGiphySearch'\n | 'InputReplyStateHeader'\n | 'isValidMessage'\n | 'maxNumberOfFiles'\n | 'mentionedUsers'\n | 'numberOfUploads'\n | 'quotedMessage'\n | 'resetInput'\n | 'SendButton'\n | 'sending'\n | 'sendMessageAsync'\n | 'setShowMoreOptions'\n | 'setGiphyActive'\n | 'showMoreOptions'\n | 'ShowThreadMessageInChannelButton'\n | 'removeFile'\n | 'removeImage'\n | 'uploadNewFile'\n | 'uploadNewImage'\n > &\n Pick<MessagesContextValue<StreamChatGenerics>, 'Reply'> &\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n | 'AutoCompleteSuggestionHeader'\n | 'AutoCompleteSuggestionItem'\n | 'AutoCompleteSuggestionList'\n | 'suggestions'\n | 'triggerType'\n > &\n Pick<ThreadContextValue<StreamChatGenerics>, 'thread'> &\n Pick<TranslationContextValue, 't'> & {\n threadList?: boolean;\n };\n\nconst MessageInputWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionList,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isOnline,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n ShowThreadMessageInChannelButton,\n suggestions,\n thread,\n threadList,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n } = props;\n\n const [height, setHeight] = useState(0);\n\n const {\n theme: {\n colors: { border, grey_whisper, white, white_smoke },\n messageInput: {\n attachmentSelectionBar,\n autoCompleteInputContainer,\n composerContainer,\n container,\n inputBoxContainer,\n optionsContainer,\n replyContainer,\n sendButtonContainer,\n suggestionsListContainer: { container: suggestionListContainer },\n },\n },\n } = useTheme();\n\n const {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setMaxNumberOfFiles,\n setSelectedFiles,\n setSelectedImages,\n } = useAttachmentPickerContext();\n\n const { seconds: cooldownRemainingSeconds } = useCountdown(cooldownEndsAt);\n\n /**\n * Mounting and un-mounting logic are un-related in following useEffect.\n * While mounting we want to pass maxNumberOfFiles (which is prop on Channel component)\n * to AttachmentPicker (on OverlayProvider)\n *\n * While un-mounting, we want to close the picker e.g., while navigating away.\n */\n useEffect(() => {\n setMaxNumberOfFiles(maxNumberOfFiles ?? 10);\n\n return closeAttachmentPicker;\n }, []);\n\n const [hasResetImages, setHasResetImages] = useState(false);\n const [hasResetFiles, setHasResetFiles] = useState(false);\n const selectedImagesLength = hasResetImages ? selectedImages.length : 0;\n const imageUploadsLength = hasResetImages ? imageUploads.length : 0;\n const selectedFilesLength = hasResetFiles ? selectedFiles.length : 0;\n const fileUploadsLength = hasResetFiles ? fileUploads.length : 0;\n const imagesForInput = (!!thread && !!threadList) || (!thread && !threadList);\n\n useEffect(() => {\n setSelectedImages([]);\n if (imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n return () => setSelectedImages([]);\n }, []);\n\n useEffect(() => {\n setSelectedFiles([]);\n if (fileUploads.length) {\n fileUploads.forEach((file) => removeFile(file.id));\n }\n return () => setSelectedFiles([]);\n }, []);\n\n useEffect(() => {\n if (hasResetImages === false && imageUploadsLength === 0 && selectedImagesLength === 0) {\n setHasResetImages(true);\n }\n }, [imageUploadsLength, selectedImagesLength]);\n\n useEffect(() => {\n if (hasResetFiles === false && fileUploadsLength === 0 && selectedFilesLength === 0) {\n setHasResetFiles(true);\n }\n }, [fileUploadsLength, selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput === false && imageUploads.length) {\n imageUploads.forEach((image) => removeImage(image.id));\n }\n }, [imagesForInput]);\n\n const MEGA_BYTES_TO_BYTES = 1024 * 1024;\n const MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;\n\n const uploadImagesHandler = () => {\n const imageToUpload = selectedImages.find((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return !uploadedImage;\n });\n // Check if the file size of the image exceeds the threshold of 100MB\n if (\n imageToUpload &&\n Number(imageToUpload.fileSize) / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB\n ) {\n Alert.alert(\n `Maximum file size upload limit reached, please upload an image below ${MAX_FILE_SIZE_TO_UPLOAD_IN_MB}MB.`,\n );\n setSelectedImages(\n selectedImages.filter((selectedImage) => selectedImage.uri !== imageToUpload.uri),\n );\n } else {\n if (imageToUpload) uploadNewImage(imageToUpload);\n }\n };\n\n const removeImagesHandler = () => {\n const imagesToRemove = imageUploads.filter(\n (imageUpload) =>\n !selectedImages.find(\n (selectedImage) =>\n selectedImage.uri === imageUpload.file.uri || selectedImage.uri === imageUpload.url,\n ),\n );\n imagesToRemove.forEach((image) => removeImage(image.id));\n };\n\n useEffect(() => {\n if (imagesForInput) {\n if (selectedImagesLength > imageUploadsLength) {\n /** User selected an image in bottom sheet attachment picker */\n uploadImagesHandler();\n } else {\n /** User de-selected an image in bottom sheet attachment picker */\n removeImagesHandler();\n }\n }\n }, [selectedImagesLength]);\n\n useEffect(() => {\n if (selectedFilesLength > fileUploadsLength) {\n /** User selected a video in bottom sheet attachment picker */\n const fileToUpload = selectedFiles.find((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return !uploadedFile;\n });\n // Check if the file size exceeds the threshold of 100MB\n if (\n fileToUpload &&\n Number(fileToUpload.size) / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB\n ) {\n Alert.alert(\n `Maximum file size upload limit reached, please upload a file below ${MAX_FILE_SIZE_TO_UPLOAD_IN_MB}MB.`,\n );\n setSelectedFiles(\n selectedFiles.filter((selectedFile) => selectedFile.uri !== fileToUpload.uri),\n );\n } else {\n if (fileToUpload) uploadNewFile(fileToUpload);\n }\n } else {\n /** User de-selected a video in bottom sheet attachment picker */\n const filesToRemove = fileUploads.filter(\n (fileUpload) =>\n !selectedFiles.find(\n (selectedFile) =>\n selectedFile.uri === fileUpload.file.uri || selectedFile.uri === fileUpload.url,\n ),\n );\n filesToRemove.forEach((file) => removeFile(file.id));\n }\n }, [selectedFilesLength]);\n\n useEffect(() => {\n if (imagesForInput) {\n if (imageUploadsLength < selectedImagesLength) {\n /** User removed some image from seleted images within ImageUploadPreview. */\n const updatedSelectedImages = selectedImages.filter((selectedImage) => {\n const uploadedImage = imageUploads.find(\n (imageUpload) =>\n imageUpload.file.uri === selectedImage.uri || imageUpload.url === selectedImage.uri,\n );\n return uploadedImage;\n });\n setSelectedImages(updatedSelectedImages);\n } else if (imageUploadsLength > selectedImagesLength) {\n /**\n * User is editing some message which contains image attachments OR\n * image attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewImage` function from `MessageInputContext`.\n **/\n setSelectedImages(\n imageUploads\n .map((imageUpload) => ({\n height: imageUpload.file.height,\n source: imageUpload.file.source,\n uri: imageUpload.url || imageUpload.file.uri,\n width: imageUpload.file.width,\n }))\n .filter(Boolean) as Asset[],\n );\n }\n }\n }, [imageUploadsLength]);\n\n useEffect(() => {\n if (fileUploadsLength < selectedFilesLength) {\n /** User removed some video from seleted files within ImageUploadPreview. */\n const updatedSelectedFiles = selectedFiles.filter((selectedFile) => {\n const uploadedFile = fileUploads.find(\n (fileUpload) =>\n fileUpload.file.uri === selectedFile.uri || fileUpload.url === selectedFile.uri,\n );\n return uploadedFile;\n });\n setSelectedFiles(updatedSelectedFiles);\n } else if (fileUploadsLength > selectedFilesLength) {\n /**\n * User is editing some message which contains video attachments OR\n * video attachment is added from custom image picker (other than the default bottomsheet image picker)\n * using `uploadNewFile` function from `MessageInputContext`.\n **/\n setSelectedFiles(\n fileUploads.map((fileUpload) => ({\n duration: fileUpload.file.duration,\n name: fileUpload.file.name,\n size: fileUpload.file.size,\n type: fileUpload.file.type,\n uri: fileUpload.file.uri,\n })),\n );\n }\n }, [fileUploadsLength]);\n\n const editingExists = !!editing;\n useEffect(() => {\n if (editing && inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n\n /**\n * Make sure to test `initialValue` functionality, if you are modifying following condition.\n *\n * We have the following condition, to make sure - when user comes out of \"editing message\" state,\n * we wipe out all the state around message input such as text, mentioned users, image uploads etc.\n * But it also means, this condition will be fired up on first render, which may result in clearing\n * the initial value set on input box, through the prop - `initialValue`.\n * This prop generally gets used for the case of draft message functionality.\n */\n if (\n !editing &&\n (giphyActive ||\n fileUploads.length > 0 ||\n mentionedUsers.length > 0 ||\n imageUploads.length > 0 ||\n numberOfUploads > 0)\n ) {\n resetInput();\n }\n }, [editingExists]);\n\n const asyncIdsString = asyncIds.join();\n const asyncUploadsString = Object.values(asyncUploads)\n .map(({ state, url }) => `${state}${url}`)\n .join();\n useEffect(() => {\n if (Object.keys(asyncUploads).length) {\n /**\n * When successful image upload response occurs after hitting send,\n * send a follow up message with the image\n */\n sending.current = true;\n asyncIds.forEach((id) => sendMessageAsync(id));\n sending.current = false;\n }\n }, [asyncIdsString, asyncUploadsString, sendMessageAsync]);\n\n const getMembers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (members && Object.values(members).length) {\n Object.values(members).forEach((member) => {\n if (member.user) {\n result.push(member.user);\n }\n });\n }\n\n return result;\n };\n\n const getUsers = () => {\n const users = [...getMembers(), ...getWatchers()];\n\n // make sure we don't list users twice\n const uniqueUsers: { [key: string]: UserResponse<StreamChatGenerics> } = {};\n for (const user of users) {\n if (user && !uniqueUsers[user.id]) {\n uniqueUsers[user.id] = user;\n }\n }\n const usersArray = Object.values(uniqueUsers);\n\n return usersArray;\n };\n\n const getWatchers = () => {\n const result: UserResponse<StreamChatGenerics>[] = [];\n if (watchers && Object.values(watchers).length) {\n result.push(...Object.values(watchers));\n }\n\n return result;\n };\n\n const additionalTextInputContainerProps = {\n editable: disabled ? false : undefined,\n ...additionalTextInputProps,\n };\n\n return (\n <>\n <View\n onLayout={({\n nativeEvent: {\n layout: { height: newHeight },\n },\n }) => setHeight(newHeight)}\n style={[styles.container, { backgroundColor: white, borderColor: border }, container]}\n >\n {editing && <InputEditingStateHeader />}\n {quotedMessage && <InputReplyStateHeader />}\n <View style={[styles.composerContainer, composerContainer]}>\n {Input ? (\n <Input\n additionalTextInputProps={additionalTextInputContainerProps}\n getUsers={getUsers}\n />\n ) : (\n <>\n <View style={[styles.optionsContainer, optionsContainer]}>\n {InputButtons && <InputButtons />}\n </View>\n <View\n style={[\n styles.inputBoxContainer,\n {\n borderColor: grey_whisper,\n paddingVertical: giphyActive ? 8 : 12,\n },\n inputBoxContainer,\n ]}\n >\n {((typeof editing !== 'boolean' && editing?.quoted_message) || quotedMessage) && (\n <View style={[styles.replyContainer, replyContainer]}>\n <Reply />\n </View>\n )}\n {imageUploads.length ? <ImageUploadPreview /> : null}\n {imageUploads.length && fileUploads.length ? (\n <View\n style={[\n styles.attachmentSeparator,\n {\n borderBottomColor: grey_whisper,\n marginHorizontal: giphyActive ? 8 : 12,\n },\n ]}\n />\n ) : null}\n {fileUploads.length ? <FileUploadPreview /> : null}\n {giphyActive ? (\n <InputGiphySearch disabled={!isOnline} />\n ) : (\n <View style={[styles.autoCompleteInputContainer, autoCompleteInputContainer]}>\n <AutoCompleteInput<StreamChatGenerics>\n additionalTextInputProps={additionalTextInputProps}\n cooldownActive={!!cooldownRemainingSeconds}\n />\n </View>\n )}\n </View>\n <View style={[styles.sendButtonContainer, sendButtonContainer]}>\n {cooldownRemainingSeconds ? (\n <CooldownTimer seconds={cooldownRemainingSeconds} />\n ) : (\n <SendButton\n disabled={\n disabled || sending.current || !isValidMessage() || (giphyActive && !isOnline)\n }\n />\n )}\n </View>\n </>\n )}\n </View>\n <ShowThreadMessageInChannelButton threadList={threadList} />\n </View>\n\n {triggerType && suggestions ? (\n <View\n style={[\n suggestionListContainer,\n styles.suggestionsListContainer,\n { backgroundColor: white, bottom: height },\n ]}\n >\n <AutoCompleteSuggestionList\n active={!!suggestions}\n data={suggestions.data}\n onSelect={suggestions.onSelect}\n queryText={suggestions.queryText}\n triggerType={triggerType}\n />\n </View>\n ) : null}\n {selectedPicker && (\n <View\n style={[\n {\n backgroundColor: white_smoke,\n height:\n (attachmentPickerBottomSheetHeight\n ? attachmentPickerBottomSheetHeight + (attachmentSelectionBarHeight ?? 52)\n : 360) - bottomInset,\n },\n attachmentSelectionBar,\n ]}\n >\n <AttachmentSelectionBar />\n </View>\n )}\n </>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageInputPropsWithContext<StreamChatGenerics>,\n nextProps: MessageInputPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTextInputProps: prevAdditionalTextInputProps,\n asyncUploads: prevAsyncUploads,\n disabled: prevDisabled,\n editing: prevEditing,\n fileUploads: prevFileUploads,\n giphyActive: prevGiphyActive,\n imageUploads: prevImageUploads,\n isOnline: prevIsOnline,\n isValidMessage: prevIsValidMessage,\n mentionedUsers: prevMentionedUsers,\n quotedMessage: prevQuotedMessage,\n sending: prevSending,\n showMoreOptions: prevShowMoreOptions,\n suggestions: prevSuggestions,\n t: prevT,\n thread: prevThread,\n threadList: prevThreadList,\n } = prevProps;\n const {\n additionalTextInputProps: nextAdditionalTextInputProps,\n asyncUploads: nextAsyncUploads,\n disabled: nextDisabled,\n editing: nextEditing,\n fileUploads: nextFileUploads,\n giphyActive: nextGiphyActive,\n imageUploads: nextImageUploads,\n isOnline: nextIsOnline,\n isValidMessage: nextIsValidMessage,\n mentionedUsers: nextMentionedUsers,\n quotedMessage: nextQuotedMessage,\n sending: nextSending,\n showMoreOptions: nextShowMoreOptions,\n suggestions: nextSuggestions,\n t: nextT,\n thread: nextThread,\n threadList: nextThreadList,\n } = nextProps;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const additionalTextInputPropsEven =\n prevAdditionalTextInputProps === nextAdditionalTextInputProps;\n if (!additionalTextInputPropsEven) return false;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const editingEqual = !!prevEditing === !!nextEditing;\n if (!editingEqual) return false;\n\n const imageUploadsEqual = prevImageUploads.length === nextImageUploads.length;\n if (!imageUploadsEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id\n : !!prevQuotedMessage === !!nextQuotedMessage;\n if (!quotedMessageEqual) return false;\n\n const sendingEqual = prevSending.current === nextSending.current;\n if (!sendingEqual) return false;\n\n const showMoreOptionsEqual = prevShowMoreOptions === nextShowMoreOptions;\n if (!showMoreOptionsEqual) return false;\n\n const isOnlineEqual = prevIsOnline === nextIsOnline;\n if (!isOnlineEqual) return false;\n\n const isValidMessageEqual = prevIsValidMessage() === nextIsValidMessage();\n if (!isValidMessageEqual) return false;\n\n const asyncUploadsEqual = Object.keys(prevAsyncUploads).every(\n (key) =>\n prevAsyncUploads[key].state === nextAsyncUploads[key].state &&\n prevAsyncUploads[key].url === nextAsyncUploads[key].url,\n );\n if (!asyncUploadsEqual) return false;\n\n const fileUploadsEqual = prevFileUploads.length === nextFileUploads.length;\n if (!fileUploadsEqual) return false;\n\n const mentionedUsersEqual = prevMentionedUsers.length === nextMentionedUsers.length;\n if (!mentionedUsersEqual) return false;\n\n const suggestionsEqual =\n !!prevSuggestions?.data && !!nextSuggestions?.data\n ? prevSuggestions.data.length === nextSuggestions.data.length &&\n prevSuggestions.data.every(({ name }, index) => name === nextSuggestions.data[index].name)\n : !!prevSuggestions === !!nextSuggestions;\n if (!suggestionsEqual) return false;\n\n const threadEqual =\n prevThread?.id === nextThread?.id &&\n prevThread?.text === nextThread?.text &&\n prevThread?.reply_count === nextThread?.reply_count;\n if (!threadEqual) return false;\n\n const threadListEqual = prevThreadList === nextThreadList;\n if (!threadListEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageInput = React.memo(\n MessageInputWithContext,\n areEqual,\n) as typeof MessageInputWithContext;\n\nexport type MessageInputProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<MessageInputPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for message input\n * It's a consumer of\n * [Channel Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/channel-context/),\n * [Chat Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/chat-context/),\n * [MessageInput Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/message-input-context/),\n * [Suggestions Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/suggestions-context/), and\n * [Translation Context](https://getstream.io/chat/docs/sdk/reactnative/contexts/translation-context/)\n */\nexport const MessageInput = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageInputProps<StreamChatGenerics>,\n) => {\n const { isOnline } = useChatContext();\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const { disabled = false, members, watchers } = useChannelContext<StreamChatGenerics>();\n\n const {\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isValidMessage,\n maxNumberOfFiles,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n SendMessageDisallowedIndicator,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n uploadNewFile,\n uploadNewImage,\n } = useMessageInputContext<StreamChatGenerics>();\n\n const { Reply } = useMessagesContext<StreamChatGenerics>();\n\n const {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n suggestions,\n triggerType,\n } = useSuggestionsContext<StreamChatGenerics>();\n\n const { thread } = useThreadContext<StreamChatGenerics>();\n\n const { t } = useTranslationContext();\n\n if (!ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {\n return <SendMessageDisallowedIndicator />;\n }\n\n return (\n <MemoizedMessageInput\n {...{\n additionalTextInputProps,\n asyncIds,\n asyncUploads,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n clearEditingState,\n clearQuotedMessageState,\n closeAttachmentPicker,\n cooldownEndsAt,\n CooldownTimer,\n disabled,\n editing,\n FileUploadPreview,\n fileUploads,\n giphyActive,\n ImageUploadPreview,\n imageUploads,\n Input,\n inputBoxRef,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n isOnline,\n isValidMessage,\n maxNumberOfFiles,\n members,\n mentionedUsers,\n numberOfUploads,\n quotedMessage,\n removeFile,\n removeImage,\n Reply,\n resetInput,\n SendButton,\n sending,\n sendMessageAsync,\n setGiphyActive,\n setShowMoreOptions,\n showMoreOptions,\n ShowThreadMessageInChannelButton,\n suggestions,\n t,\n thread,\n triggerType,\n uploadNewFile,\n uploadNewImage,\n watchers,\n }}\n {...props}\n />\n );\n};\n\nMessageInput.displayName = 'MessageInput{messageInput}';\n"]}
@@ -291,7 +291,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
291
291
 
292
292
  var pickFile = function () {
293
293
  var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
294
- var result;
294
+ var result, MEGA_BYTES_TO_BYTES, MAX_FILE_SIZE_TO_UPLOAD_IN_MB, totalFileSize;
295
295
  return _regenerator["default"].wrap(function _callee$(_context) {
296
296
  while (1) {
297
297
  switch (_context.prev = _context.next) {
@@ -322,14 +322,24 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
322
322
 
323
323
  case 8:
324
324
  result = _context.sent;
325
+ MEGA_BYTES_TO_BYTES = 1024 * 1024;
326
+ MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;
325
327
 
326
328
  if (!result.cancelled && result.docs) {
327
- result.docs.forEach(function (doc) {
328
- uploadNewFile(doc);
329
- });
329
+ totalFileSize = result.docs.reduce(function (acc, doc) {
330
+ return acc + Number(doc.size);
331
+ }, 0);
332
+
333
+ if (totalFileSize / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {
334
+ _reactNative.Alert.alert("Maximum file size upload limit reached, please upload files below " + MAX_FILE_SIZE_TO_UPLOAD_IN_MB + "MB.");
335
+ } else {
336
+ result.docs.forEach(function (doc) {
337
+ uploadNewFile(doc);
338
+ });
339
+ }
330
340
  }
331
341
 
332
- case 10:
342
+ case 12:
333
343
  case "end":
334
344
  return _context.stop();
335
345
  }
@@ -1240,7 +1250,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
1240
1250
  __self: _this,
1241
1251
  __source: {
1242
1252
  fileName: _jsxFileName,
1243
- lineNumber: 1188,
1253
+ lineNumber: 1199,
1244
1254
  columnNumber: 5
1245
1255
  }
1246
1256
  }, children);
@@ -1267,7 +1277,7 @@ var withMessageInputContext = function withMessageInputContext(Component) {
1267
1277
  __self: _this,
1268
1278
  __source: {
1269
1279
  fileName: _jsxFileName,
1270
- lineNumber: 1228,
1280
+ lineNumber: 1239,
1271
1281
  columnNumber: 12
1272
1282
  }
1273
1283
  }));