Skip to content

Commit f671d5d

Browse files
Merge branch 'develop' of https://github.com/GetStream/stream-chat-react-native into vishal/optional-video-dep
2 parents 27fc41a + ae19950 commit f671d5d

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

package/src/components/AttachmentPicker/AttachmentPicker.tsx

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useEffect, useMemo, useRef, useState } from 'react';
22
import {
3+
Alert,
34
BackHandler,
45
Dimensions,
56
ImageBackground,
@@ -56,30 +57,28 @@ const styles = StyleSheet.create({
5657
const screenHeight = vh(100);
5758
const fullScreenHeight = Dimensions.get('window').height;
5859

59-
type AttachmentImageProps = {
60+
export type AttachmentPickerItemType = {
6061
asset: Asset;
6162
ImageOverlaySelectedComponent: React.ComponentType;
6263
maxNumberOfFiles: number;
64+
numberOfUploads: number;
6365
selected: boolean;
66+
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
6467
setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;
6568
numberOfAttachmentPickerImageColumns?: number;
6669
};
6770

68-
type AttachmentVideoProps = {
69-
asset: Asset;
70-
ImageOverlaySelectedComponent: React.ComponentType;
71-
maxNumberOfFiles: number;
72-
selected: boolean;
73-
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
74-
numberOfAttachmentPickerImageColumns?: number;
75-
};
71+
type AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;
72+
73+
type AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;
7674

7775
const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
7876
const {
7977
asset,
8078
ImageOverlaySelectedComponent,
8179
maxNumberOfFiles,
8280
numberOfAttachmentPickerImageColumns,
81+
numberOfUploads,
8382
selected,
8483
setSelectedFiles,
8584
} = props;
@@ -116,7 +115,8 @@ const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
116115
setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));
117116
} else {
118117
setSelectedFiles((files) => {
119-
if (files.length >= maxNumberOfFiles) {
118+
if (numberOfUploads >= maxNumberOfFiles) {
119+
Alert.alert('Maximum number of files reached');
120120
return files;
121121
}
122122
return [
@@ -170,6 +170,7 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
170170
ImageOverlaySelectedComponent,
171171
maxNumberOfFiles,
172172
numberOfAttachmentPickerImageColumns,
173+
numberOfUploads,
173174
selected,
174175
setSelectedImages,
175176
} = props;
@@ -189,7 +190,8 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
189190
setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));
190191
} else {
191192
setSelectedImages((images) => {
192-
if (images.length >= maxNumberOfFiles) {
193+
if (numberOfUploads >= maxNumberOfFiles) {
194+
Alert.alert('Maximum number of files reached');
193195
return images;
194196
}
195197
return [...images, asset];
@@ -220,24 +222,13 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
220222
);
221223
};
222224

223-
const renderImage = ({
224-
item,
225-
}: {
226-
item: {
227-
asset: Asset;
228-
ImageOverlaySelectedComponent: React.ComponentType;
229-
maxNumberOfFiles: number;
230-
selected: boolean;
231-
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
232-
setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;
233-
numberOfAttachmentPickerImageColumns?: number;
234-
};
235-
}) => {
225+
const renderItem = ({ item }: { item: AttachmentPickerItemType }) => {
236226
const {
237227
asset,
238228
ImageOverlaySelectedComponent,
239229
maxNumberOfFiles,
240230
numberOfAttachmentPickerImageColumns,
231+
numberOfUploads,
241232
selected,
242233
setSelectedFiles,
243234
setSelectedImages,
@@ -259,6 +250,7 @@ const renderImage = ({
259250
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
260251
maxNumberOfFiles={maxNumberOfFiles}
261252
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
253+
numberOfUploads={numberOfUploads}
262254
selected={selected}
263255
setSelectedImages={setSelectedImages}
264256
/>
@@ -268,6 +260,7 @@ const renderImage = ({
268260
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
269261
maxNumberOfFiles={maxNumberOfFiles}
270262
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
263+
numberOfUploads={numberOfUploads}
271264
selected={selected}
272265
setSelectedFiles={setSelectedFiles}
273266
/>
@@ -454,6 +447,7 @@ export const AttachmentPicker = React.forwardRef(
454447
ImageOverlaySelectedComponent,
455448
maxNumberOfFiles,
456449
numberOfAttachmentPickerImageColumns,
450+
numberOfUploads: selectedFiles.length + selectedImages.length,
457451
selected:
458452
selectedImages.some((image) => image.uri === asset.uri) ||
459453
selectedFiles.some((file) => file.uri === asset.uri),
@@ -536,7 +530,7 @@ export const AttachmentPicker = React.forwardRef(
536530
keyExtractor={(item) => item.asset.uri}
537531
numColumns={numberOfAttachmentPickerImageColumns ?? 3}
538532
onEndReached={getMorePhotos}
539-
renderItem={renderImage}
533+
renderItem={renderItem}
540534
/>
541535
</BottomSheet>
542536
{selectedPicker === 'images' && photoError && (

package/src/contexts/messageInputContext/MessageInputContext.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ export const MessageInputProvider = <
447447
}>({});
448448
const [giphyActive, setGiphyActive] = useState(false);
449449
const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);
450-
const { editing, hasFilePicker, hasImagePicker, initialValue, maxNumberOfFiles } = value;
450+
const { editing, hasFilePicker, hasImagePicker, initialValue } = value;
451451
const {
452452
fileUploads,
453453
imageUploads,
@@ -536,7 +536,7 @@ export const MessageInputProvider = <
536536
};
537537

538538
const openAttachmentPicker = () => {
539-
if (hasImagePicker && !fileUploads.length) {
539+
if (hasImagePicker) {
540540
Keyboard.dismiss();
541541
openPicker();
542542
setSelectedPicker('images');
@@ -548,7 +548,7 @@ export const MessageInputProvider = <
548548
* https://github.com/gorhom/react-native-bottom-sheet/issues/446
549549
*/
550550
setTimeout(openPicker, 600);
551-
} else if (hasFilePicker && numberOfUploads < maxNumberOfFiles) {
551+
} else if (hasFilePicker) {
552552
pickFile();
553553
}
554554
};
@@ -572,6 +572,7 @@ export const MessageInputProvider = <
572572

573573
const pickFile = async () => {
574574
if (numberOfUploads >= value.maxNumberOfFiles) {
575+
Alert.alert('Maximum number of files reached');
575576
return;
576577
}
577578

0 commit comments

Comments
 (0)