UNPKG

@sendbird/uikit-react-native

Version:

Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

68 lines (61 loc) 2.31 kB
import type * as ExpoDocumentPicker from 'expo-document-picker'; import type * as ExpoFs from 'expo-file-system'; import type * as ExpoImagePicker from 'expo-image-picker'; import type { FilePickerResponse } from '../platform/types'; import normalizeFile from './normalizeFile'; const expoBackwardUtils = { imagePicker: { isCanceled(result: ExpoImagePicker.ImagePickerResult) { // @ts-expect-error backward compatibility return result.canceled ?? result.cancelled; }, async toFilePickerResponses( result: ExpoImagePicker.ImagePickerResult, fsModule: typeof ExpoFs, ): Promise<FilePickerResponse[]> { if (result.assets) { const assets = result.assets || []; const promises = assets.map(({ fileName: name, fileSize: size, type, uri }) => normalizeFile({ uri, size, name, type }), ); return Promise.all(promises); } else if ('uri' in result && typeof result.uri === 'string') { const fileInfo = await fsModule.getInfoAsync(result.uri); const response = await normalizeFile({ uri: result.uri, size: expoBackwardUtils.toFileSize(fileInfo) }); return [response]; } else { return []; } }, }, documentPicker: { isCanceled(result: ExpoDocumentPicker.DocumentPickerResult) { // @ts-expect-error backward compatibility return result.canceled ?? result.type === 'cancel'; }, async toFilePickerResponses(result: ExpoDocumentPicker.DocumentPickerResult): Promise<FilePickerResponse[]> { if (result.assets) { const assets = result.assets || []; const promises = assets.map(({ name, size, mimeType, uri }) => normalizeFile({ uri, size, name, type: mimeType }), ); return Promise.all(promises); } else if ('uri' in result && typeof result.uri === 'string') { // @ts-expect-error backward compatibility const { mimeType, uri, size, name } = result; const response = await normalizeFile({ uri, size, name, type: mimeType }); return [response]; } else { return []; } }, }, toFileSize(info: ExpoFs.FileInfo) { if ('size' in info) { return info.size; } else { return 0; } }, }; export default expoBackwardUtils;