@sendbird/uikit-react-native 3.11.4 → 3.12.1

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/README.md CHANGED
@@ -149,12 +149,12 @@ npm install react-native-video \
149
149
  react-native-file-access \
150
150
  react-native-image-picker \
151
151
  react-native-document-picker \
152
- react-native-create-thumbnail \
153
152
  react-native-nitro-sound \
154
153
  @react-native-clipboard/clipboard \
155
154
  @react-native-camera-roll/camera-roll \
156
155
  @react-native-firebase/app \
157
156
  @react-native-firebase/messaging \
157
+ @sendbird/react-native-create-thumbnail \
158
158
  @bam.tech/react-native-image-resizer
159
159
 
160
160
  npx pod-install
@@ -169,7 +169,7 @@ import * as DocumentPicker from '@react-native-documents/picker';
169
169
  import * as FileAccess from 'react-native-file-access';
170
170
  import * as ImagePicker from 'react-native-image-picker';
171
171
  import * as Permissions from 'react-native-permissions';
172
- import * as CreateThumbnail from 'react-native-create-thumbnail';
172
+ import * as CreateThumbnail from '@sendbird/react-native-create-thumbnail';
173
173
  import * as ImageResizer from '@bam.tech/react-native-image-resizer';
174
174
  import * as AudioRecorderPlayer from 'react-native-nitro-sound';
175
175
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_uikitUtils","_SBUUtils","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","createNativeMediaService","VideoComponent","thumbnailModule","imageResizerModule","source","resizeMode","onLoad","props","createElement","controls","getVideoThumbnail","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","hash","split","compressImage","uri","maxWidth","maxHeight","compressionRate","originSize","SBUUtils","getImageSize","width","height","getDownscaleSize","extension","getFileExtension","size","resizedSize","compressedURI","createResizedImage","Math","min","max","_default","exports"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: typeof RNCreateThumbnail;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return (\n <VideoComponent\n {...props}\n source={source as { uri: string }}\n resizeMode={resizeMode}\n onLoad={onLoad}\n controls\n />\n );\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_uikitUtils","_SBUUtils","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","createNativeMediaService","VideoComponent","thumbnailModule","imageResizerModule","source","resizeMode","onLoad","props","createElement","controls","getVideoThumbnail","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","hash","split","compressImage","uri","maxWidth","maxHeight","compressionRate","originSize","SBUUtils","getImageSize","width","height","getDownscaleSize","extension","getFileExtension","size","resizedSize","compressedURI","createResizedImage","Math","min","max","_default","exports"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport type * as SBCreateThumbnail from '@sendbird/react-native-create-thumbnail';\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\nexport type ThumbnailModule = typeof SBCreateThumbnail | typeof RNCreateThumbnail;\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: ThumbnailModule;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return (\n <VideoComponent\n {...props}\n source={source as { uri: string }}\n resizeMode={resizeMode}\n onLoad={onLoad}\n controls\n />\n );\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":"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","ignoreList":[]}
@@ -24,13 +24,13 @@ const expoBackwardUtils = {
24
24
  const promises = assets.map(({
25
25
  fileName: name,
26
26
  fileSize: size,
27
- type,
27
+ mimeType,
28
28
  uri
29
29
  }) => (0, _normalizeFile.default)({
30
30
  uri,
31
31
  size,
32
32
  name,
33
- type
33
+ type: mimeType
34
34
  }));
35
35
  return Promise.all(promises);
36
36
  } else if ('uri' in result && typeof result.uri === 'string') {
@@ -1 +1 @@
1
- {"version":3,"names":["_normalizeFile","_interopRequireDefault","require","e","__esModule","default","expoBackwardUtils","imagePicker","isCanceled","result","canceled","cancelled","toFilePickerResponses","fsModule","assets","promises","map","fileName","name","fileSize","size","type","uri","normalizeFile","Promise","all","fileInfo","getInfoAsync","response","toFileSize","documentPicker","mimeType","expoAV","isLegacyAVModule","module","Video","isAudioModule","useAudioRecorder","isVideoModule","useVideoPlayer","info","undefined","fileSystem","isLegacyModule","getFileInfo","file","File","getDocumentDirectory","documentDirectory","_fsModule$Paths","Paths","document","getCacheDirectory","cacheDirectory","_fsModule$Paths2","cache","downloadFile","url","localUri","downloadAsync","destination","downloadFileAsync","_default","exports"],"sources":["expoBackwardUtils.ts"],"sourcesContent":["import type * as ExpoAudio from 'expo-audio';\nimport type * as ExpoAV from 'expo-av';\nimport type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoVideo from 'expo-video';\n\nimport type { FilePickerResponse } from '../platform/types';\nimport normalizeFile from './normalizeFile';\n\n// Legacy expo-file-system API types (before SDK 54)\ninterface ExpoFileSystemLegacy {\n documentDirectory: string | null;\n cacheDirectory: string | null;\n getInfoAsync(fileUri: string, options?: unknown): Promise<ExpoFs.FileInfo>;\n downloadAsync(uri: string, fileUri: string, options?: unknown): Promise<{ uri: string }>;\n}\n\n// New expo-file-system API types (SDK 54+)\ninterface ExpoDirectory {\n uri: string;\n}\n\ninterface ExpoFileSystemNew {\n File: {\n new (...uris: (string | unknown)[]): {\n info(options?: unknown): ExpoFs.FileInfo;\n };\n downloadFileAsync(url: string, destination: unknown, options?: unknown): Promise<{ uri: string }>;\n };\n Directory: new (...uris: (string | unknown)[]) => ExpoDirectory;\n Paths: {\n document: ExpoDirectory;\n cache: ExpoDirectory;\n };\n}\n\n// Union type for both legacy and new expo-file-system\ntype ExpoFileSystemModule = ExpoFileSystemLegacy | ExpoFileSystemNew | typeof ExpoFs;\n\nconst expoBackwardUtils = {\n imagePicker: {\n isCanceled(result: ExpoImagePicker.ImagePickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.cancelled;\n },\n async toFilePickerResponses(\n result: ExpoImagePicker.ImagePickerResult,\n fsModule: typeof ExpoFs,\n ): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ fileName: name, fileSize: size, type, uri }) =>\n normalizeFile({ uri, size, name, type }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n const fileInfo = await fsModule.getInfoAsync(result.uri);\n const response = await normalizeFile({ uri: result.uri, size: expoBackwardUtils.toFileSize(fileInfo) });\n return [response];\n } else {\n return [];\n }\n },\n },\n documentPicker: {\n isCanceled(result: ExpoDocumentPicker.DocumentPickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.type === 'cancel';\n },\n async toFilePickerResponses(result: ExpoDocumentPicker.DocumentPickerResult): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ name, size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n // @ts-expect-error backward compatibility\n const { mimeType, uri, size, name } = result;\n const response = await normalizeFile({ uri, size, name, type: mimeType });\n\n return [response];\n } else {\n return [];\n }\n },\n },\n expoAV: {\n isLegacyAVModule(module: ExpoAudioModule | ExpoVideoModule): module is typeof ExpoAV {\n try {\n return 'Video' in module && 'Audio' in module && typeof module.Video === 'function';\n } catch {\n return false;\n }\n },\n isAudioModule(module: ExpoAudioModule): module is typeof ExpoAudio {\n try {\n return 'useAudioRecorder' in module && typeof module.useAudioRecorder === 'function';\n } catch {\n return false;\n }\n },\n isVideoModule(module: ExpoVideoModule): module is typeof ExpoVideo {\n try {\n return 'VideoView' in module && 'useVideoPlayer' in module && typeof module.useVideoPlayer === 'function';\n } catch {\n return false;\n }\n },\n },\n toFileSize(info: ExpoFs.FileInfo) {\n if ('size' in info && info.size !== undefined) {\n return info.size;\n } else {\n return 0;\n }\n },\n fileSystem: {\n isLegacyModule(fsModule: ExpoFileSystemModule): fsModule is ExpoFileSystemLegacy {\n try {\n return 'documentDirectory' in fsModule || 'cacheDirectory' in fsModule;\n } catch {\n return false;\n }\n },\n async getFileInfo(fsModule: ExpoFileSystemModule, uri: string): Promise<ExpoFs.FileInfo> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.getInfoAsync(uri);\n } else {\n const file = new fsModule.File(uri);\n return file.info();\n }\n },\n getDocumentDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.documentDirectory || null;\n } else {\n return fsModule.Paths?.document?.uri || null;\n }\n },\n getCacheDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.cacheDirectory || null;\n } else {\n return fsModule.Paths?.cache?.uri || null;\n }\n },\n async downloadFile(fsModule: ExpoFileSystemModule, url: string, localUri: string): Promise<{ uri: string }> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.downloadAsync(url, localUri);\n } else {\n const destination = new fsModule.File(localUri);\n const result = await fsModule.File.downloadFileAsync(url, destination as never);\n return { uri: result.uri };\n }\n },\n },\n};\n\nexport type ExpoAudioModule = typeof ExpoAV | typeof ExpoAudio;\nexport type ExpoVideoModule = typeof ExpoAV | typeof ExpoVideo;\n\nexport default expoBackwardUtils;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_normalizeFile","_interopRequireDefault","require","e","__esModule","default","expoBackwardUtils","imagePicker","isCanceled","result","canceled","cancelled","toFilePickerResponses","fsModule","assets","promises","map","fileName","name","fileSize","size","mimeType","uri","normalizeFile","type","Promise","all","fileInfo","getInfoAsync","response","toFileSize","documentPicker","expoAV","isLegacyAVModule","module","Video","isAudioModule","useAudioRecorder","isVideoModule","useVideoPlayer","info","undefined","fileSystem","isLegacyModule","getFileInfo","file","File","getDocumentDirectory","documentDirectory","_fsModule$Paths","Paths","document","getCacheDirectory","cacheDirectory","_fsModule$Paths2","cache","downloadFile","url","localUri","downloadAsync","destination","downloadFileAsync","_default","exports"],"sources":["expoBackwardUtils.ts"],"sourcesContent":["import type * as ExpoAudio from 'expo-audio';\nimport type * as ExpoAV from 'expo-av';\nimport type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoVideo from 'expo-video';\n\nimport type { FilePickerResponse } from '../platform/types';\nimport normalizeFile from './normalizeFile';\n\n// Legacy expo-file-system API types (before SDK 54)\ninterface ExpoFileSystemLegacy {\n documentDirectory: string | null;\n cacheDirectory: string | null;\n getInfoAsync(fileUri: string, options?: unknown): Promise<ExpoFs.FileInfo>;\n downloadAsync(uri: string, fileUri: string, options?: unknown): Promise<{ uri: string }>;\n}\n\n// New expo-file-system API types (SDK 54+)\ninterface ExpoDirectory {\n uri: string;\n}\n\ninterface ExpoFileSystemNew {\n File: {\n new (...uris: (string | unknown)[]): {\n info(options?: unknown): ExpoFs.FileInfo;\n };\n downloadFileAsync(url: string, destination: unknown, options?: unknown): Promise<{ uri: string }>;\n };\n Directory: new (...uris: (string | unknown)[]) => ExpoDirectory;\n Paths: {\n document: ExpoDirectory;\n cache: ExpoDirectory;\n };\n}\n\n// Union type for both legacy and new expo-file-system\ntype ExpoFileSystemModule = ExpoFileSystemLegacy | ExpoFileSystemNew | typeof ExpoFs;\n\nconst expoBackwardUtils = {\n imagePicker: {\n isCanceled(result: ExpoImagePicker.ImagePickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.cancelled;\n },\n async toFilePickerResponses(\n result: ExpoImagePicker.ImagePickerResult,\n fsModule: typeof ExpoFs,\n ): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ fileName: name, fileSize: size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n const fileInfo = await fsModule.getInfoAsync(result.uri);\n const response = await normalizeFile({ uri: result.uri, size: expoBackwardUtils.toFileSize(fileInfo) });\n return [response];\n } else {\n return [];\n }\n },\n },\n documentPicker: {\n isCanceled(result: ExpoDocumentPicker.DocumentPickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.type === 'cancel';\n },\n async toFilePickerResponses(result: ExpoDocumentPicker.DocumentPickerResult): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ name, size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n // @ts-expect-error backward compatibility\n const { mimeType, uri, size, name } = result;\n const response = await normalizeFile({ uri, size, name, type: mimeType });\n\n return [response];\n } else {\n return [];\n }\n },\n },\n expoAV: {\n isLegacyAVModule(module: ExpoAudioModule | ExpoVideoModule): module is typeof ExpoAV {\n try {\n return 'Video' in module && 'Audio' in module && typeof module.Video === 'function';\n } catch {\n return false;\n }\n },\n isAudioModule(module: ExpoAudioModule): module is typeof ExpoAudio {\n try {\n return 'useAudioRecorder' in module && typeof module.useAudioRecorder === 'function';\n } catch {\n return false;\n }\n },\n isVideoModule(module: ExpoVideoModule): module is typeof ExpoVideo {\n try {\n return 'VideoView' in module && 'useVideoPlayer' in module && typeof module.useVideoPlayer === 'function';\n } catch {\n return false;\n }\n },\n },\n toFileSize(info: ExpoFs.FileInfo) {\n if ('size' in info && info.size !== undefined) {\n return info.size;\n } else {\n return 0;\n }\n },\n fileSystem: {\n isLegacyModule(fsModule: ExpoFileSystemModule): fsModule is ExpoFileSystemLegacy {\n try {\n return 'documentDirectory' in fsModule || 'cacheDirectory' in fsModule;\n } catch {\n return false;\n }\n },\n async getFileInfo(fsModule: ExpoFileSystemModule, uri: string): Promise<ExpoFs.FileInfo> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.getInfoAsync(uri);\n } else {\n const file = new fsModule.File(uri);\n return file.info();\n }\n },\n getDocumentDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.documentDirectory || null;\n } else {\n return fsModule.Paths?.document?.uri || null;\n }\n },\n getCacheDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.cacheDirectory || null;\n } else {\n return fsModule.Paths?.cache?.uri || null;\n }\n },\n async downloadFile(fsModule: ExpoFileSystemModule, url: string, localUri: string): Promise<{ uri: string }> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.downloadAsync(url, localUri);\n } else {\n const destination = new fsModule.File(localUri);\n const result = await fsModule.File.downloadFileAsync(url, destination as never);\n return { uri: result.uri };\n }\n },\n },\n};\n\nexport type ExpoAudioModule = typeof ExpoAV | typeof ExpoAudio;\nexport type ExpoVideoModule = typeof ExpoAV | typeof ExpoVideo;\n\nexport default expoBackwardUtils;\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- const VERSION = '3.11.4';
7
+ const VERSION = '3.12.1';
8
8
  var _default = exports.default = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.11.4';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACVH,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["VERSION","_default","exports","default"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.12.1';\nexport default VERSION;\n"],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,QAAQ;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACVH,OAAO","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","getDownscaleSize","getFileExtension","hash","SBUUtils","createNativeMediaService","VideoComponent","thumbnailModule","imageResizerModule","source","resizeMode","onLoad","props","createElement","_extends","controls","getVideoThumbnail","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","split","compressImage","uri","maxWidth","maxHeight","compressionRate","originSize","getImageSize","width","height","extension","size","resizedSize","compressedURI","default","createResizedImage","Math","min","max"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: typeof RNCreateThumbnail;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return (\n <VideoComponent\n {...props}\n source={source as { uri: string }}\n resizeMode={resizeMode}\n onLoad={onLoad}\n controls\n />\n );\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AAIzB,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,uBAAuB;AAEhF,OAAOC,QAAQ,MAAM,kBAAkB;AASvC,MAAMC,wBAAwB,GAAGA,CAAC;EAChCC,cAAc;EACdC,eAAe;EACfC;AACO,CAAC,KAA4B;EACpC,OAAO;IACLF,cAAcA,CAAC;MAAEG,MAAM;MAAEC,UAAU;MAAEC,MAAM;MAAE,GAAGC;IAAM,CAAC,EAAE;MACvD,oBACEZ,KAAA,CAAAa,aAAA,CAACP,cAAc,EAAAQ,QAAA,KACTF,KAAK;QACTH,MAAM,EAAEA,MAA0B;QAClCC,UAAU,EAAEA,UAAW;QACvBC,MAAM,EAAEA,MAAO;QACfI,QAAQ;MAAA,EACT,CAAC;IAEN,CAAC;IACD,MAAMC,iBAAiBA,CAAC;MAAEC,GAAG;MAAEC;IAAU,CAAC,EAAE;MAC1C,IAAI;QACF,MAAM;UAAEC;QAAK,CAAC,GAAG,MAAMZ,eAAe,CAACa,eAAe,CAAC;UACrDH,GAAG;UACHI,MAAM,EAAE,MAAM;UACdC,SAAS,EAAEJ,SAAS;UACpBK,SAAS,EAAEpB,IAAI,CAACc,GAAG,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,OAAO;UAAEL;QAAK,CAAC;MACjB,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IACD,MAAMM,aAAaA,CAAC;MAAEC,GAAG;MAAEC,QAAQ;MAAEC,SAAS;MAAEC,eAAe,GAAG;IAAE,CAAC,EAAE;MACrE,MAAMC,UAAU,GAAG,MAAM1B,QAAQ,CAAC2B,YAAY,CAACL,GAAG,CAAC;MACnD,MAAM;QAAEM,KAAK;QAAEC;MAAO,CAAC,GAAGhC,gBAAgB,CAAC6B,UAAU,EAAE;QAAEE,KAAK,EAAEL,QAAQ;QAAEM,MAAM,EAAEL;MAAU,CAAC,CAAC;MAC9F,MAAMM,SAAS,GAAG,CAAC,MAAM;QACvB,OAAO;UAAE,KAAK,EAAE,KAAK;UAAE,MAAM,EAAE,MAAM;UAAE,KAAK,EAAE;QAAO,CAAC,CAAChC,gBAAgB,CAACwB,GAAG,CAAC,CAAC,IAAI,MAAM;MACzF,CAAC,EAAE,CAAmB;MAEtB,MAAM;QAAES,IAAI,EAAEC,WAAW;QAAEV,GAAG,EAAEW;MAAc,CAAC,GAAG,MAAM7B,kBAAkB,CAAC8B,OAAO,CAACC,kBAAkB,CACnGb,GAAG,EACHM,KAAK,EACLC,MAAM,EACNC,SAAS,EACTM,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEb,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,GAC9C,CAAC;MAED,OAAO;QAAEH,GAAG,EAAEW,aAAa;QAAEF,IAAI,EAAEC;MAAY,CAAC;IAClD;EACF,CAAC;AACH,CAAC;AAED,eAAe/B,wBAAwB","ignoreList":[]}
1
+ {"version":3,"names":["React","getDownscaleSize","getFileExtension","hash","SBUUtils","createNativeMediaService","VideoComponent","thumbnailModule","imageResizerModule","source","resizeMode","onLoad","props","createElement","_extends","controls","getVideoThumbnail","url","timeMills","path","createThumbnail","format","timeStamp","cacheName","split","compressImage","uri","maxWidth","maxHeight","compressionRate","originSize","getImageSize","width","height","extension","size","resizedSize","compressedURI","default","createResizedImage","Math","min","max"],"sources":["createMediaService.native.tsx"],"sourcesContent":["import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';\nimport React from 'react';\nimport type * as RNCreateThumbnail from 'react-native-create-thumbnail';\nimport type RNVideo from 'react-native-video';\n\nimport type * as SBCreateThumbnail from '@sendbird/react-native-create-thumbnail';\nimport { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport type { MediaServiceInterface } from './types';\n\nexport type ThumbnailModule = typeof SBCreateThumbnail | typeof RNCreateThumbnail;\n\ntype Modules = {\n VideoComponent: typeof RNVideo;\n thumbnailModule: ThumbnailModule;\n imageResizerModule: typeof RNImageResizer;\n};\n\nconst createNativeMediaService = ({\n VideoComponent,\n thumbnailModule,\n imageResizerModule,\n}: Modules): MediaServiceInterface => {\n return {\n VideoComponent({ source, resizeMode, onLoad, ...props }) {\n return (\n <VideoComponent\n {...props}\n source={source as { uri: string }}\n resizeMode={resizeMode}\n onLoad={onLoad}\n controls\n />\n );\n },\n async getVideoThumbnail({ url, timeMills }) {\n try {\n const { path } = await thumbnailModule.createThumbnail({\n url,\n format: 'jpeg',\n timeStamp: timeMills,\n cacheName: hash(url.split('?')[0]),\n });\n return { path };\n } catch {\n return null;\n }\n },\n async compressImage({ uri, maxWidth, maxHeight, compressionRate = 1 }) {\n const originSize = await SBUUtils.getImageSize(uri);\n const { width, height } = getDownscaleSize(originSize, { width: maxWidth, height: maxHeight });\n const extension = (() => {\n return { 'png': 'PNG', 'jpeg': 'JPEG', 'jpg': 'JPEG' }[getFileExtension(uri)] ?? 'JPEG';\n })() as 'PNG' | 'JPEG';\n\n const { size: resizedSize, uri: compressedURI } = await imageResizerModule.default.createResizedImage(\n uri,\n width,\n height,\n extension,\n Math.min(Math.max(0, compressionRate), 1) * 100,\n );\n\n return { uri: compressedURI, size: resizedSize };\n },\n };\n};\n\nexport default createNativeMediaService;\n"],"mappings":";AACA,OAAOA,KAAK,MAAM,OAAO;AAKzB,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,uBAAuB;AAEhF,OAAOC,QAAQ,MAAM,kBAAkB;AAWvC,MAAMC,wBAAwB,GAAGA,CAAC;EAChCC,cAAc;EACdC,eAAe;EACfC;AACO,CAAC,KAA4B;EACpC,OAAO;IACLF,cAAcA,CAAC;MAAEG,MAAM;MAAEC,UAAU;MAAEC,MAAM;MAAE,GAAGC;IAAM,CAAC,EAAE;MACvD,oBACEZ,KAAA,CAAAa,aAAA,CAACP,cAAc,EAAAQ,QAAA,KACTF,KAAK;QACTH,MAAM,EAAEA,MAA0B;QAClCC,UAAU,EAAEA,UAAW;QACvBC,MAAM,EAAEA,MAAO;QACfI,QAAQ;MAAA,EACT,CAAC;IAEN,CAAC;IACD,MAAMC,iBAAiBA,CAAC;MAAEC,GAAG;MAAEC;IAAU,CAAC,EAAE;MAC1C,IAAI;QACF,MAAM;UAAEC;QAAK,CAAC,GAAG,MAAMZ,eAAe,CAACa,eAAe,CAAC;UACrDH,GAAG;UACHI,MAAM,EAAE,MAAM;UACdC,SAAS,EAAEJ,SAAS;UACpBK,SAAS,EAAEpB,IAAI,CAACc,GAAG,CAACO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,OAAO;UAAEL;QAAK,CAAC;MACjB,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IACD,MAAMM,aAAaA,CAAC;MAAEC,GAAG;MAAEC,QAAQ;MAAEC,SAAS;MAAEC,eAAe,GAAG;IAAE,CAAC,EAAE;MACrE,MAAMC,UAAU,GAAG,MAAM1B,QAAQ,CAAC2B,YAAY,CAACL,GAAG,CAAC;MACnD,MAAM;QAAEM,KAAK;QAAEC;MAAO,CAAC,GAAGhC,gBAAgB,CAAC6B,UAAU,EAAE;QAAEE,KAAK,EAAEL,QAAQ;QAAEM,MAAM,EAAEL;MAAU,CAAC,CAAC;MAC9F,MAAMM,SAAS,GAAG,CAAC,MAAM;QACvB,OAAO;UAAE,KAAK,EAAE,KAAK;UAAE,MAAM,EAAE,MAAM;UAAE,KAAK,EAAE;QAAO,CAAC,CAAChC,gBAAgB,CAACwB,GAAG,CAAC,CAAC,IAAI,MAAM;MACzF,CAAC,EAAE,CAAmB;MAEtB,MAAM;QAAES,IAAI,EAAEC,WAAW;QAAEV,GAAG,EAAEW;MAAc,CAAC,GAAG,MAAM7B,kBAAkB,CAAC8B,OAAO,CAACC,kBAAkB,CACnGb,GAAG,EACHM,KAAK,EACLC,MAAM,EACNC,SAAS,EACTM,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEb,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,GAC9C,CAAC;MAED,OAAO;QAAEH,GAAG,EAAEW,aAAa;QAAEF,IAAI,EAAEC;MAAY,CAAC;IAClD;EACF,CAAC;AACH,CAAC;AAED,eAAe/B,wBAAwB","ignoreList":[]}
@@ -18,13 +18,13 @@ const expoBackwardUtils = {
18
18
  const promises = assets.map(({
19
19
  fileName: name,
20
20
  fileSize: size,
21
- type,
21
+ mimeType,
22
22
  uri
23
23
  }) => normalizeFile({
24
24
  uri,
25
25
  size,
26
26
  name,
27
- type
27
+ type: mimeType
28
28
  }));
29
29
  return Promise.all(promises);
30
30
  } else if ('uri' in result && typeof result.uri === 'string') {
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeFile","expoBackwardUtils","imagePicker","isCanceled","result","canceled","cancelled","toFilePickerResponses","fsModule","assets","promises","map","fileName","name","fileSize","size","type","uri","Promise","all","fileInfo","getInfoAsync","response","toFileSize","documentPicker","mimeType","expoAV","isLegacyAVModule","module","Video","isAudioModule","useAudioRecorder","isVideoModule","useVideoPlayer","info","undefined","fileSystem","isLegacyModule","getFileInfo","file","File","getDocumentDirectory","documentDirectory","_fsModule$Paths","Paths","document","getCacheDirectory","cacheDirectory","_fsModule$Paths2","cache","downloadFile","url","localUri","downloadAsync","destination","downloadFileAsync"],"sources":["expoBackwardUtils.ts"],"sourcesContent":["import type * as ExpoAudio from 'expo-audio';\nimport type * as ExpoAV from 'expo-av';\nimport type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoVideo from 'expo-video';\n\nimport type { FilePickerResponse } from '../platform/types';\nimport normalizeFile from './normalizeFile';\n\n// Legacy expo-file-system API types (before SDK 54)\ninterface ExpoFileSystemLegacy {\n documentDirectory: string | null;\n cacheDirectory: string | null;\n getInfoAsync(fileUri: string, options?: unknown): Promise<ExpoFs.FileInfo>;\n downloadAsync(uri: string, fileUri: string, options?: unknown): Promise<{ uri: string }>;\n}\n\n// New expo-file-system API types (SDK 54+)\ninterface ExpoDirectory {\n uri: string;\n}\n\ninterface ExpoFileSystemNew {\n File: {\n new (...uris: (string | unknown)[]): {\n info(options?: unknown): ExpoFs.FileInfo;\n };\n downloadFileAsync(url: string, destination: unknown, options?: unknown): Promise<{ uri: string }>;\n };\n Directory: new (...uris: (string | unknown)[]) => ExpoDirectory;\n Paths: {\n document: ExpoDirectory;\n cache: ExpoDirectory;\n };\n}\n\n// Union type for both legacy and new expo-file-system\ntype ExpoFileSystemModule = ExpoFileSystemLegacy | ExpoFileSystemNew | typeof ExpoFs;\n\nconst expoBackwardUtils = {\n imagePicker: {\n isCanceled(result: ExpoImagePicker.ImagePickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.cancelled;\n },\n async toFilePickerResponses(\n result: ExpoImagePicker.ImagePickerResult,\n fsModule: typeof ExpoFs,\n ): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ fileName: name, fileSize: size, type, uri }) =>\n normalizeFile({ uri, size, name, type }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n const fileInfo = await fsModule.getInfoAsync(result.uri);\n const response = await normalizeFile({ uri: result.uri, size: expoBackwardUtils.toFileSize(fileInfo) });\n return [response];\n } else {\n return [];\n }\n },\n },\n documentPicker: {\n isCanceled(result: ExpoDocumentPicker.DocumentPickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.type === 'cancel';\n },\n async toFilePickerResponses(result: ExpoDocumentPicker.DocumentPickerResult): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ name, size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n // @ts-expect-error backward compatibility\n const { mimeType, uri, size, name } = result;\n const response = await normalizeFile({ uri, size, name, type: mimeType });\n\n return [response];\n } else {\n return [];\n }\n },\n },\n expoAV: {\n isLegacyAVModule(module: ExpoAudioModule | ExpoVideoModule): module is typeof ExpoAV {\n try {\n return 'Video' in module && 'Audio' in module && typeof module.Video === 'function';\n } catch {\n return false;\n }\n },\n isAudioModule(module: ExpoAudioModule): module is typeof ExpoAudio {\n try {\n return 'useAudioRecorder' in module && typeof module.useAudioRecorder === 'function';\n } catch {\n return false;\n }\n },\n isVideoModule(module: ExpoVideoModule): module is typeof ExpoVideo {\n try {\n return 'VideoView' in module && 'useVideoPlayer' in module && typeof module.useVideoPlayer === 'function';\n } catch {\n return false;\n }\n },\n },\n toFileSize(info: ExpoFs.FileInfo) {\n if ('size' in info && info.size !== undefined) {\n return info.size;\n } else {\n return 0;\n }\n },\n fileSystem: {\n isLegacyModule(fsModule: ExpoFileSystemModule): fsModule is ExpoFileSystemLegacy {\n try {\n return 'documentDirectory' in fsModule || 'cacheDirectory' in fsModule;\n } catch {\n return false;\n }\n },\n async getFileInfo(fsModule: ExpoFileSystemModule, uri: string): Promise<ExpoFs.FileInfo> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.getInfoAsync(uri);\n } else {\n const file = new fsModule.File(uri);\n return file.info();\n }\n },\n getDocumentDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.documentDirectory || null;\n } else {\n return fsModule.Paths?.document?.uri || null;\n }\n },\n getCacheDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.cacheDirectory || null;\n } else {\n return fsModule.Paths?.cache?.uri || null;\n }\n },\n async downloadFile(fsModule: ExpoFileSystemModule, url: string, localUri: string): Promise<{ uri: string }> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.downloadAsync(url, localUri);\n } else {\n const destination = new fsModule.File(localUri);\n const result = await fsModule.File.downloadFileAsync(url, destination as never);\n return { uri: result.uri };\n }\n },\n },\n};\n\nexport type ExpoAudioModule = typeof ExpoAV | typeof ExpoAudio;\nexport type ExpoVideoModule = typeof ExpoAV | typeof ExpoVideo;\n\nexport default expoBackwardUtils;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["normalizeFile","expoBackwardUtils","imagePicker","isCanceled","result","canceled","cancelled","toFilePickerResponses","fsModule","assets","promises","map","fileName","name","fileSize","size","mimeType","uri","type","Promise","all","fileInfo","getInfoAsync","response","toFileSize","documentPicker","expoAV","isLegacyAVModule","module","Video","isAudioModule","useAudioRecorder","isVideoModule","useVideoPlayer","info","undefined","fileSystem","isLegacyModule","getFileInfo","file","File","getDocumentDirectory","documentDirectory","_fsModule$Paths","Paths","document","getCacheDirectory","cacheDirectory","_fsModule$Paths2","cache","downloadFile","url","localUri","downloadAsync","destination","downloadFileAsync"],"sources":["expoBackwardUtils.ts"],"sourcesContent":["import type * as ExpoAudio from 'expo-audio';\nimport type * as ExpoAV from 'expo-av';\nimport type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoVideo from 'expo-video';\n\nimport type { FilePickerResponse } from '../platform/types';\nimport normalizeFile from './normalizeFile';\n\n// Legacy expo-file-system API types (before SDK 54)\ninterface ExpoFileSystemLegacy {\n documentDirectory: string | null;\n cacheDirectory: string | null;\n getInfoAsync(fileUri: string, options?: unknown): Promise<ExpoFs.FileInfo>;\n downloadAsync(uri: string, fileUri: string, options?: unknown): Promise<{ uri: string }>;\n}\n\n// New expo-file-system API types (SDK 54+)\ninterface ExpoDirectory {\n uri: string;\n}\n\ninterface ExpoFileSystemNew {\n File: {\n new (...uris: (string | unknown)[]): {\n info(options?: unknown): ExpoFs.FileInfo;\n };\n downloadFileAsync(url: string, destination: unknown, options?: unknown): Promise<{ uri: string }>;\n };\n Directory: new (...uris: (string | unknown)[]) => ExpoDirectory;\n Paths: {\n document: ExpoDirectory;\n cache: ExpoDirectory;\n };\n}\n\n// Union type for both legacy and new expo-file-system\ntype ExpoFileSystemModule = ExpoFileSystemLegacy | ExpoFileSystemNew | typeof ExpoFs;\n\nconst expoBackwardUtils = {\n imagePicker: {\n isCanceled(result: ExpoImagePicker.ImagePickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.cancelled;\n },\n async toFilePickerResponses(\n result: ExpoImagePicker.ImagePickerResult,\n fsModule: typeof ExpoFs,\n ): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ fileName: name, fileSize: size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n const fileInfo = await fsModule.getInfoAsync(result.uri);\n const response = await normalizeFile({ uri: result.uri, size: expoBackwardUtils.toFileSize(fileInfo) });\n return [response];\n } else {\n return [];\n }\n },\n },\n documentPicker: {\n isCanceled(result: ExpoDocumentPicker.DocumentPickerResult) {\n // @ts-expect-error backward compatibility\n return result.canceled ?? result.type === 'cancel';\n },\n async toFilePickerResponses(result: ExpoDocumentPicker.DocumentPickerResult): Promise<FilePickerResponse[]> {\n if (result.assets) {\n const assets = result.assets || [];\n const promises = assets.map(({ name, size, mimeType, uri }) =>\n normalizeFile({ uri, size, name, type: mimeType }),\n );\n\n return Promise.all(promises);\n } else if ('uri' in result && typeof result.uri === 'string') {\n // @ts-expect-error backward compatibility\n const { mimeType, uri, size, name } = result;\n const response = await normalizeFile({ uri, size, name, type: mimeType });\n\n return [response];\n } else {\n return [];\n }\n },\n },\n expoAV: {\n isLegacyAVModule(module: ExpoAudioModule | ExpoVideoModule): module is typeof ExpoAV {\n try {\n return 'Video' in module && 'Audio' in module && typeof module.Video === 'function';\n } catch {\n return false;\n }\n },\n isAudioModule(module: ExpoAudioModule): module is typeof ExpoAudio {\n try {\n return 'useAudioRecorder' in module && typeof module.useAudioRecorder === 'function';\n } catch {\n return false;\n }\n },\n isVideoModule(module: ExpoVideoModule): module is typeof ExpoVideo {\n try {\n return 'VideoView' in module && 'useVideoPlayer' in module && typeof module.useVideoPlayer === 'function';\n } catch {\n return false;\n }\n },\n },\n toFileSize(info: ExpoFs.FileInfo) {\n if ('size' in info && info.size !== undefined) {\n return info.size;\n } else {\n return 0;\n }\n },\n fileSystem: {\n isLegacyModule(fsModule: ExpoFileSystemModule): fsModule is ExpoFileSystemLegacy {\n try {\n return 'documentDirectory' in fsModule || 'cacheDirectory' in fsModule;\n } catch {\n return false;\n }\n },\n async getFileInfo(fsModule: ExpoFileSystemModule, uri: string): Promise<ExpoFs.FileInfo> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.getInfoAsync(uri);\n } else {\n const file = new fsModule.File(uri);\n return file.info();\n }\n },\n getDocumentDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.documentDirectory || null;\n } else {\n return fsModule.Paths?.document?.uri || null;\n }\n },\n getCacheDirectory(fsModule: ExpoFileSystemModule): string | null {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return fsModule.cacheDirectory || null;\n } else {\n return fsModule.Paths?.cache?.uri || null;\n }\n },\n async downloadFile(fsModule: ExpoFileSystemModule, url: string, localUri: string): Promise<{ uri: string }> {\n if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {\n return await fsModule.downloadAsync(url, localUri);\n } else {\n const destination = new fsModule.File(localUri);\n const result = await fsModule.File.downloadFileAsync(url, destination as never);\n return { uri: result.uri };\n }\n },\n },\n};\n\nexport type ExpoAudioModule = typeof ExpoAV | typeof ExpoAudio;\nexport type ExpoVideoModule = typeof ExpoAV | typeof ExpoVideo;\n\nexport default expoBackwardUtils;\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- const VERSION = '3.11.4';
1
+ const VERSION = '3.12.1';
2
2
  export default VERSION;
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.11.4';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,QAAQ;AACxB,eAAeA,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["const VERSION = '3.12.1';\nexport default VERSION;\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,QAAQ;AACxB,eAAeA,OAAO","ignoreList":[]}
@@ -14,7 +14,7 @@ import type { StringSet } from '../localization/StringSet.type';
14
14
  import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface, PlayerServiceInterface, RecorderServiceInterface } from '../platform/types';
15
15
  import { ErrorBoundaryProps, LocalCacheStorage } from '../types';
16
16
  export declare const SendbirdUIKit: Readonly<{
17
- VERSION: "3.11.4";
17
+ VERSION: "3.12.1";
18
18
  PLATFORM: string;
19
19
  DEFAULT: {
20
20
  AUTO_PUSH_TOKEN_REGISTRATION: boolean;
@@ -1,10 +1,12 @@
1
1
  import type * as RNImageResizer from '@bam.tech/react-native-image-resizer';
2
2
  import type * as RNCreateThumbnail from 'react-native-create-thumbnail';
3
3
  import type RNVideo from 'react-native-video';
4
+ import type * as SBCreateThumbnail from '@sendbird/react-native-create-thumbnail';
4
5
  import type { MediaServiceInterface } from './types';
6
+ export type ThumbnailModule = typeof SBCreateThumbnail | typeof RNCreateThumbnail;
5
7
  type Modules = {
6
8
  VideoComponent: typeof RNVideo;
7
- thumbnailModule: typeof RNCreateThumbnail;
9
+ thumbnailModule: ThumbnailModule;
8
10
  imageResizerModule: typeof RNImageResizer;
9
11
  };
10
12
  declare const createNativeMediaService: ({ VideoComponent, thumbnailModule, imageResizerModule, }: Modules) => MediaServiceInterface;
@@ -1,2 +1,2 @@
1
- declare const VERSION = "3.11.4";
1
+ declare const VERSION = "3.12.1";
2
2
  export default VERSION;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-react-native",
3
- "version": "3.11.4",
3
+ "version": "3.12.1",
4
4
  "description": "Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.",
5
5
  "keywords": [
6
6
  "sendbird",
@@ -69,10 +69,10 @@
69
69
  },
70
70
  "dependencies": {
71
71
  "@openspacelabs/react-native-zoomable-view": "^2.3.0",
72
- "@sendbird/uikit-chat-hooks": "3.11.4",
73
- "@sendbird/uikit-react-native-foundation": "3.11.4",
72
+ "@sendbird/uikit-chat-hooks": "3.12.1",
73
+ "@sendbird/uikit-react-native-foundation": "3.12.1",
74
74
  "@sendbird/uikit-tools": "0.0.15",
75
- "@sendbird/uikit-utils": "3.11.4"
75
+ "@sendbird/uikit-utils": "3.12.1"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@bam.tech/react-native-image-resizer": "^3.0.11",
@@ -83,6 +83,7 @@
83
83
  "@react-native-documents/picker": "^10.1.0",
84
84
  "@react-native-firebase/app": "^19.3.0",
85
85
  "@react-native-firebase/messaging": "^19.3.0",
86
+ "@sendbird/react-native-create-thumbnail": "^1.0.2",
86
87
  "@types/react": "*",
87
88
  "@types/react-native": "*",
88
89
  "date-fns": ">=2.28.0",
@@ -126,6 +127,7 @@
126
127
  "@react-native-documents/picker": ">=10.0.0",
127
128
  "@react-native-firebase/messaging": ">=14.4.0",
128
129
  "@sendbird/chat": "^4.20.2",
130
+ "@sendbird/react-native-create-thumbnail": ">=1.0.2",
129
131
  "@sendbird/react-native-scrollview-enhancer": "*",
130
132
  "@sendbird/uikit-tools": ">=0.0.10",
131
133
  "date-fns": ">=2.28.0",
@@ -173,6 +175,9 @@
173
175
  "@react-native-firebase/messaging": {
174
176
  "optional": true
175
177
  },
178
+ "@sendbird/react-native-create-thumbnail": {
179
+ "optional": true
180
+ },
176
181
  "@sendbird/react-native-scrollview-enhancer": {
177
182
  "optional": true
178
183
  },
@@ -251,5 +256,5 @@
251
256
  ]
252
257
  ]
253
258
  },
254
- "gitHead": "2c3e4a178540abaedf0ba33e8680f572808d243f"
259
+ "gitHead": "367f6209c4e1db1ec2d44dbdc3e3d3a55c6beb78"
255
260
  }
@@ -3,14 +3,17 @@ import React from 'react';
3
3
  import type * as RNCreateThumbnail from 'react-native-create-thumbnail';
4
4
  import type RNVideo from 'react-native-video';
5
5
 
6
+ import type * as SBCreateThumbnail from '@sendbird/react-native-create-thumbnail';
6
7
  import { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';
7
8
 
8
9
  import SBUUtils from '../libs/SBUUtils';
9
10
  import type { MediaServiceInterface } from './types';
10
11
 
12
+ export type ThumbnailModule = typeof SBCreateThumbnail | typeof RNCreateThumbnail;
13
+
11
14
  type Modules = {
12
15
  VideoComponent: typeof RNVideo;
13
- thumbnailModule: typeof RNCreateThumbnail;
16
+ thumbnailModule: ThumbnailModule;
14
17
  imageResizerModule: typeof RNImageResizer;
15
18
  };
16
19
 
@@ -50,8 +50,8 @@ const expoBackwardUtils = {
50
50
  ): Promise<FilePickerResponse[]> {
51
51
  if (result.assets) {
52
52
  const assets = result.assets || [];
53
- const promises = assets.map(({ fileName: name, fileSize: size, type, uri }) =>
54
- normalizeFile({ uri, size, name, type }),
53
+ const promises = assets.map(({ fileName: name, fileSize: size, mimeType, uri }) =>
54
+ normalizeFile({ uri, size, name, type: mimeType }),
55
55
  );
56
56
 
57
57
  return Promise.all(promises);
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- const VERSION = '3.11.4';
1
+ const VERSION = '3.12.1';
2
2
  export default VERSION;