diff --git a/examples/TypeScriptMessaging/ios/Podfile.lock b/examples/TypeScriptMessaging/ios/Podfile.lock index 622d093c3b..47c9e973e8 100644 --- a/examples/TypeScriptMessaging/ios/Podfile.lock +++ b/examples/TypeScriptMessaging/ios/Podfile.lock @@ -3248,4 +3248,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 6b7a4b74915b42bfe4ffddaf67cbf5e7a2bfeab3 -COCOAPODS: 1.16.2 +COCOAPODS: 1.14.3 diff --git a/examples/TypeScriptMessaging/yarn.lock b/examples/TypeScriptMessaging/yarn.lock index e5cb3eef85..5ae0cf23fe 100644 --- a/examples/TypeScriptMessaging/yarn.lock +++ b/examples/TypeScriptMessaging/yarn.lock @@ -7329,9 +7329,9 @@ stream-chat-react-native-core@8.1.0: uid "" stream-chat@^9.23.0: - version "9.23.0" - resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.23.0.tgz#e7e5cf729861597e7198907c1cab22a57d68a2fc" - integrity sha512-UW112HYsLnYb4RMIXBtAouNQCCe0weVzNivjezsw+JKK1b/TX0JLBi+wK25mBUEO+coOGKfXiye6IB3gao8ipw== + version "9.24.0" + resolved "https://registry.yarnpkg.com/stream-chat/-/stream-chat-9.24.0.tgz#e6af5d4b0eb396e24e0ab7f852719581c39f18bc" + integrity sha512-zLtguYRqxeEc/Cjw8Zp00u/wTrqFg4gFPKdj3mvl/Jq1Pt95mY9nMc38KW0GOu/2quIAAar0NNMq8fsXl4jupQ== dependencies: "@types/jsonwebtoken" "^9.0.8" "@types/ws" "^8.5.14" diff --git a/package/expo-package/src/optionalDependencies/pickImage.ts b/package/expo-package/src/optionalDependencies/pickImage.ts index 25ef02f531..280710b4c2 100644 --- a/package/expo-package/src/optionalDependencies/pickImage.ts +++ b/package/expo-package/src/optionalDependencies/pickImage.ts @@ -1,4 +1,5 @@ import { Platform } from 'react-native'; +import { PickImageOptions } from 'stream-chat-react-native-core'; let ImagePicker; try { @@ -14,7 +15,7 @@ if (!ImagePicker) { } export const pickImage = ImagePicker - ? async () => { + ? async ({ maxNumberOfFiles }: PickImageOptions = {}) => { try { let permissionGranted = true; if (Platform.OS === 'ios') { @@ -35,6 +36,7 @@ export const pickImage = ImagePicker allowsMultipleSelection: true, mediaTypes: ['images', 'videos'], preferredAssetRepresentationMode: 'current', + selectionLimit: maxNumberOfFiles, }); const canceled = result.canceled; diff --git a/package/native-package/src/optionalDependencies/pickImage.ts b/package/native-package/src/optionalDependencies/pickImage.ts index 1d04e68753..dc7966dd99 100644 --- a/package/native-package/src/optionalDependencies/pickImage.ts +++ b/package/native-package/src/optionalDependencies/pickImage.ts @@ -1,4 +1,5 @@ import { Platform } from 'react-native'; +import { PickImageOptions } from 'stream-chat-react-native-core'; let ImagePicker; try { @@ -8,11 +9,12 @@ try { } export const pickImage = ImagePicker - ? async () => { + ? async ({ maxNumberOfFiles }: PickImageOptions = {}) => { try { const result = await ImagePicker.launchImageLibrary({ assetRepresentationMode: 'current', mediaType: 'mixed', + selectionLimit: maxNumberOfFiles, }); const canceled = result.didCancel; const errorCode = result.errorCode; diff --git a/package/src/contexts/messageInputContext/MessageInputContext.tsx b/package/src/contexts/messageInputContext/MessageInputContext.tsx index c84726f9c3..64414cfa8e 100644 --- a/package/src/contexts/messageInputContext/MessageInputContext.tsx +++ b/package/src/contexts/messageInputContext/MessageInputContext.tsx @@ -495,7 +495,7 @@ export const MessageInputProvider = ({ return; } - const result = await NativeHandlers.pickImage(); + const result = await NativeHandlers.pickImage({ maxNumberOfFiles: availableUploadSlots }); if (result.askToOpenSettings) { Alert.alert( t('Allow access to your Gallery'), diff --git a/package/src/native.ts b/package/src/native.ts index 7debba4ecc..f20d52b09b 100644 --- a/package/src/native.ts +++ b/package/src/native.ts @@ -50,7 +50,11 @@ type PickImageAssetType = { cancelled?: boolean; }; -type PickImage = () => Promise | never; +export type PickImageOptions = { + maxNumberOfFiles?: number; +}; + +type PickImage = (options?: PickImageOptions) => Promise | never; type SaveFileOptions = { fileName: string;