stream-chat-react-native-core 4.7.0-beta.4 → 4.7.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +23 -13
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +12 -11
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +23 -13
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +12 -11
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts +11 -0
- package/package.json +1 -1
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +19 -25
- package/src/contexts/messageInputContext/MessageInputContext.tsx +4 -3
- package/src/version.json +1 -1
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { BottomSheetHandleProps } from '@gorhom/bottom-sheet';
|
|
3
3
|
import type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';
|
|
4
|
+
import type { Asset, File } from '../../types/types';
|
|
5
|
+
export declare type AttachmentPickerItemType = {
|
|
6
|
+
asset: Asset;
|
|
7
|
+
ImageOverlaySelectedComponent: React.ComponentType;
|
|
8
|
+
maxNumberOfFiles: number;
|
|
9
|
+
numberOfUploads: number;
|
|
10
|
+
selected: boolean;
|
|
11
|
+
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
|
|
12
|
+
setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;
|
|
13
|
+
numberOfAttachmentPickerImageColumns?: number;
|
|
14
|
+
};
|
|
4
15
|
export declare type AttachmentPickerProps = {
|
|
5
16
|
/**
|
|
6
17
|
* Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "4.7.0-beta.
|
|
4
|
+
"version": "4.7.0-beta.5",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import {
|
|
3
|
+
Alert,
|
|
3
4
|
BackHandler,
|
|
4
5
|
Dimensions,
|
|
5
6
|
ImageBackground,
|
|
@@ -56,23 +57,20 @@ const styles = StyleSheet.create({
|
|
|
56
57
|
const screenHeight = vh(100);
|
|
57
58
|
const fullScreenHeight = Dimensions.get('window').height;
|
|
58
59
|
|
|
59
|
-
type
|
|
60
|
+
export type AttachmentPickerItemType = {
|
|
60
61
|
asset: Asset;
|
|
61
62
|
ImageOverlaySelectedComponent: React.ComponentType;
|
|
62
63
|
maxNumberOfFiles: number;
|
|
64
|
+
numberOfUploads: number;
|
|
63
65
|
selected: boolean;
|
|
66
|
+
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
|
|
64
67
|
setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;
|
|
65
68
|
numberOfAttachmentPickerImageColumns?: number;
|
|
66
69
|
};
|
|
67
70
|
|
|
68
|
-
type
|
|
69
|
-
|
|
70
|
-
|
|
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'>;
|
|
76
74
|
|
|
77
75
|
const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
|
|
78
76
|
const {
|
|
@@ -80,6 +78,7 @@ const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
|
|
|
80
78
|
ImageOverlaySelectedComponent,
|
|
81
79
|
maxNumberOfFiles,
|
|
82
80
|
numberOfAttachmentPickerImageColumns,
|
|
81
|
+
numberOfUploads,
|
|
83
82
|
selected,
|
|
84
83
|
setSelectedFiles,
|
|
85
84
|
} = props;
|
|
@@ -115,7 +114,8 @@ const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
|
|
|
115
114
|
setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));
|
|
116
115
|
} else {
|
|
117
116
|
setSelectedFiles((files) => {
|
|
118
|
-
if (
|
|
117
|
+
if (numberOfUploads >= maxNumberOfFiles) {
|
|
118
|
+
Alert.alert('Maximum number of files reached');
|
|
119
119
|
return files;
|
|
120
120
|
}
|
|
121
121
|
return [
|
|
@@ -169,6 +169,7 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
|
|
|
169
169
|
ImageOverlaySelectedComponent,
|
|
170
170
|
maxNumberOfFiles,
|
|
171
171
|
numberOfAttachmentPickerImageColumns,
|
|
172
|
+
numberOfUploads,
|
|
172
173
|
selected,
|
|
173
174
|
setSelectedImages,
|
|
174
175
|
} = props;
|
|
@@ -188,7 +189,8 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
|
|
|
188
189
|
setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));
|
|
189
190
|
} else {
|
|
190
191
|
setSelectedImages((images) => {
|
|
191
|
-
if (
|
|
192
|
+
if (numberOfUploads >= maxNumberOfFiles) {
|
|
193
|
+
Alert.alert('Maximum number of files reached');
|
|
192
194
|
return images;
|
|
193
195
|
}
|
|
194
196
|
return [...images, asset];
|
|
@@ -219,24 +221,13 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
|
|
|
219
221
|
);
|
|
220
222
|
};
|
|
221
223
|
|
|
222
|
-
const
|
|
223
|
-
item,
|
|
224
|
-
}: {
|
|
225
|
-
item: {
|
|
226
|
-
asset: Asset;
|
|
227
|
-
ImageOverlaySelectedComponent: React.ComponentType;
|
|
228
|
-
maxNumberOfFiles: number;
|
|
229
|
-
selected: boolean;
|
|
230
|
-
setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;
|
|
231
|
-
setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;
|
|
232
|
-
numberOfAttachmentPickerImageColumns?: number;
|
|
233
|
-
};
|
|
234
|
-
}) => {
|
|
224
|
+
const renderItem = ({ item }: { item: AttachmentPickerItemType }) => {
|
|
235
225
|
const {
|
|
236
226
|
asset,
|
|
237
227
|
ImageOverlaySelectedComponent,
|
|
238
228
|
maxNumberOfFiles,
|
|
239
229
|
numberOfAttachmentPickerImageColumns,
|
|
230
|
+
numberOfUploads,
|
|
240
231
|
selected,
|
|
241
232
|
setSelectedFiles,
|
|
242
233
|
setSelectedImages,
|
|
@@ -258,6 +249,7 @@ const renderImage = ({
|
|
|
258
249
|
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
|
|
259
250
|
maxNumberOfFiles={maxNumberOfFiles}
|
|
260
251
|
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
|
|
252
|
+
numberOfUploads={numberOfUploads}
|
|
261
253
|
selected={selected}
|
|
262
254
|
setSelectedImages={setSelectedImages}
|
|
263
255
|
/>
|
|
@@ -267,6 +259,7 @@ const renderImage = ({
|
|
|
267
259
|
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
|
|
268
260
|
maxNumberOfFiles={maxNumberOfFiles}
|
|
269
261
|
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
|
|
262
|
+
numberOfUploads={numberOfUploads}
|
|
270
263
|
selected={selected}
|
|
271
264
|
setSelectedFiles={setSelectedFiles}
|
|
272
265
|
/>
|
|
@@ -453,6 +446,7 @@ export const AttachmentPicker = React.forwardRef(
|
|
|
453
446
|
ImageOverlaySelectedComponent,
|
|
454
447
|
maxNumberOfFiles,
|
|
455
448
|
numberOfAttachmentPickerImageColumns,
|
|
449
|
+
numberOfUploads: selectedFiles.length + selectedImages.length,
|
|
456
450
|
selected:
|
|
457
451
|
selectedImages.some((image) => image.uri === asset.uri) ||
|
|
458
452
|
selectedFiles.some((file) => file.uri === asset.uri),
|
|
@@ -535,7 +529,7 @@ export const AttachmentPicker = React.forwardRef(
|
|
|
535
529
|
keyExtractor={(item) => item.asset.uri}
|
|
536
530
|
numColumns={numberOfAttachmentPickerImageColumns ?? 3}
|
|
537
531
|
onEndReached={getMorePhotos}
|
|
538
|
-
renderItem={
|
|
532
|
+
renderItem={renderItem}
|
|
539
533
|
/>
|
|
540
534
|
</BottomSheet>
|
|
541
535
|
{selectedPicker === 'images' && photoError && (
|
|
@@ -447,7 +447,7 @@ export const MessageInputProvider = <
|
|
|
447
447
|
}>({});
|
|
448
448
|
const [giphyActive, setGiphyActive] = useState(false);
|
|
449
449
|
const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);
|
|
450
|
-
const { editing, hasFilePicker, hasImagePicker, initialValue
|
|
450
|
+
const { editing, hasFilePicker, hasImagePicker, initialValue } = value;
|
|
451
451
|
const {
|
|
452
452
|
fileUploads,
|
|
453
453
|
imageUploads,
|
|
@@ -536,7 +536,7 @@ export const MessageInputProvider = <
|
|
|
536
536
|
};
|
|
537
537
|
|
|
538
538
|
const openAttachmentPicker = () => {
|
|
539
|
-
if (hasImagePicker
|
|
539
|
+
if (hasImagePicker) {
|
|
540
540
|
Keyboard.dismiss();
|
|
541
541
|
openPicker();
|
|
542
542
|
setSelectedPicker('images');
|
|
@@ -548,7 +548,7 @@ export const MessageInputProvider = <
|
|
|
548
548
|
* https://github.com/gorhom/react-native-bottom-sheet/issues/446
|
|
549
549
|
*/
|
|
550
550
|
setTimeout(openPicker, 600);
|
|
551
|
-
} else if (hasFilePicker
|
|
551
|
+
} else if (hasFilePicker) {
|
|
552
552
|
pickFile();
|
|
553
553
|
}
|
|
554
554
|
};
|
|
@@ -572,6 +572,7 @@ export const MessageInputProvider = <
|
|
|
572
572
|
|
|
573
573
|
const pickFile = async () => {
|
|
574
574
|
if (numberOfUploads >= value.maxNumberOfFiles) {
|
|
575
|
+
Alert.alert('Maximum number of files reached');
|
|
575
576
|
return;
|
|
576
577
|
}
|
|
577
578
|
|
package/src/version.json
CHANGED