Skip to content

Commit 6427e59

Browse files
authored
Merge pull request #31 from sendbird/fix/expo
fix(uikit): Fixed createFileService.expo to work as expected (UIKIT-1995)
2 parents 91efc92 + 876d72c commit 6427e59

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

packages/uikit-react-native/src/platform/createFileService.expo.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
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

66
import { 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(/video|image/)) {
131+
await mediaLibraryModule.saveToLibraryAsync(response.uri);
132+
}
135133
return response.uri;
136134
}
137135
}

0 commit comments

Comments
 (0)