Skip to content

Commit 46de905

Browse files
Merge pull request #787 from GetStream/vishal/native-image-picker-docs
fix(attachment-picker): fixing sync logic between `imageUploads` and `selectedImages`
2 parents 1bc81f0 + 1b8e3e6 commit 46de905

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

docusaurus/docs/reactnative/core-components/channel.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ import InputButtons from '../common-content/core-components/channel/props/input_
7373
import MarkdownRules from '../common-content/core-components/channel/props/markdown_rules.mdx';
7474
import MaxMessageLength from '../common-content/core-components/channel/props/max_message_length.mdx'
7575
import MaxNumberOfFiles from '../common-content/core-components/channel/props/max_number_of_files.mdx'
76-
// import Message from '../common-content/core-components/channel/props/message.mdx';
7776
import MessageAvatar from '../common-content/core-components/channel/props/message_avatar.mdx';
7877
import MessageContent from '../common-content/core-components/channel/props/message_content.mdx';
7978
import MessageActions from '../common-content/core-components/channel/props/message_actions.mdx';

docusaurus/docs/reactnative/guides/message_input_customization.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ import {
333333
useMessageInputContext
334334
} from 'stream-chat-react-native';
335335
import { ActionSheetProvider, useActionSheet } from '@expo/react-native-action-sheet';
336+
import ImagePicker from 'react-native-image-crop-picker';
336337

337338
const CustomAttachButton = () => {
338339
const { showActionSheetWithOptions } = useActionSheet();

package/src/components/MessageInput/MessageInput.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ const MessageInputWithContext = <
292292
useEffect(() => {
293293
if (imagesForInput) {
294294
if (selectedImagesLength > imageUploadsLength) {
295+
/** User selected an image in bottom sheet attachment picker */
295296
const imagesToUpload = selectedImages.filter((selectedImage) => {
296297
const uploadedImage = imageUploads.find(
297298
(imageUpload) =>
@@ -301,6 +302,7 @@ const MessageInputWithContext = <
301302
});
302303
imagesToUpload.forEach((image) => uploadNewImage(image));
303304
} else if (selectedImagesLength < imageUploadsLength) {
305+
/** User de-selected an image in bottom sheet attachment picker */
304306
const imagesToRemove = imageUploads.filter(
305307
(imageUpload) =>
306308
!selectedImages.find(
@@ -316,6 +318,7 @@ const MessageInputWithContext = <
316318
useEffect(() => {
317319
if (imagesForInput) {
318320
if (imageUploadsLength < selectedImagesLength) {
321+
/** User removed some image from seleted images within ImageUploadPreview. */
319322
const updatedSelectedImages = selectedImages.filter((selectedImage) => {
320323
const uploadedImage = imageUploads.find(
321324
(imageUpload) =>
@@ -325,12 +328,17 @@ const MessageInputWithContext = <
325328
});
326329
setSelectedImages(updatedSelectedImages);
327330
} else if (imageUploadsLength > selectedImagesLength) {
331+
/**
332+
* User is editing some message which contains image attachments OR
333+
* image attachment is added from custom image picker (other than the default bottomsheet image picker)
334+
* using `uploadNewImage` function from `MessageInputContext`.
335+
**/
328336
setSelectedImages(
329337
imageUploads
330338
.map((imageUpload) => ({
331339
height: imageUpload.file.height,
332340
source: imageUpload.file.source,
333-
uri: imageUpload.url,
341+
uri: imageUpload.url || imageUpload.file.uri,
334342
width: imageUpload.file.width,
335343
}))
336344
.filter(Boolean) as Asset[],

0 commit comments

Comments
 (0)