1- import type ExpoDocumentPicker from 'expo-document-picker' ;
2- import type ExpoFs from 'expo-file-system' ;
3- import type ExpoImagePicker from 'expo-image-picker' ;
4- import type ExpoMediaLibrary from 'expo-media-library' ;
1+ import type * as ExpoDocumentPicker from 'expo-document-picker' ;
2+ import type * as ExpoFs from 'expo-file-system' ;
3+ import type * as ExpoImagePicker from 'expo-image-picker' ;
4+ import type * as ExpoMediaLibrary from 'expo-media-library' ;
55
66import { getFileExtension , getFileType } from '@sendbird/uikit-utils' ;
77
@@ -83,7 +83,6 @@ const createExpoFileService = ({
8383 return fileTypeGuard ( { uri, size, type : `${ type } /${ ext . slice ( 1 ) } ` , name : Date . now ( ) + ext } ) ;
8484 }
8585 async openMediaLibrary ( options : OpenMediaLibraryOptions ) {
86- const selectionLimit = options ?. selectionLimit || 1 ;
8786 const hasPermission = await this . hasMediaLibraryPermission ( 'read' ) ;
8887 if ( ! hasPermission ) {
8988 const granted = await this . requestMediaLibraryPermission ( 'read' ) ;
@@ -93,17 +92,14 @@ const createExpoFileService = ({
9392 }
9493 }
9594
96- const response = await imagePickerModule . launchImageLibraryAsync ( { allowsMultipleSelection : true } ) ;
95+ const response = await imagePickerModule . launchImageLibraryAsync ( ) ;
9796 if ( response . cancelled ) return null ;
97+ const { uri } = response ;
9898
99- return Promise . all (
100- response . selected . slice ( 0 , selectionLimit ) . map ( async ( { uri } ) => {
101- const { size } = await fsModule . getInfoAsync ( uri ) ;
102- const ext = getFileExtension ( uri ) ;
103- const type = getFileType ( ext ) ;
104- return fileTypeGuard ( { uri, size, type : `${ type } /${ ext . slice ( 1 ) } ` , name : Date . now ( ) + ext } ) ;
105- } ) ,
106- ) ;
99+ const { size } = await fsModule . getInfoAsync ( uri ) ;
100+ const ext = getFileExtension ( uri ) ;
101+ const type = getFileType ( ext ) ;
102+ return [ fileTypeGuard ( { uri, size, type : `${ type } /${ ext . slice ( 1 ) } ` , name : Date . now ( ) + ext } ) ] ;
107103 }
108104
109105 async openDocument ( options ?: OpenDocumentOptions ) : Promise < FilePickerResponse > {
@@ -131,7 +127,9 @@ const createExpoFileService = ({
131127 const downloadPath = `${ basePath } /${ options . fileName } ` ;
132128
133129 const response = await fsModule . downloadAsync ( options . fileUrl , downloadPath ) ;
134- await mediaLibraryModule . saveToLibraryAsync ( response . uri ) ;
130+ if ( getFileType ( options . fileType || '' ) . match ( / v i d e o | i m a g e / ) ) {
131+ await mediaLibraryModule . saveToLibraryAsync ( response . uri ) ;
132+ }
135133 return response . uri ;
136134 }
137135 }
0 commit comments