react-native-my-uploader-android 1.0.40 → 1.0.41

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.
@@ -1,4 +1,6 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
2
  <uses-permission android:name="android.permission.INTERNET" />
3
3
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
4
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
5
+ <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
4
6
  </manifest>
@@ -13,6 +13,7 @@ import android.util.Base64OutputStream
13
13
  import android.graphics.Bitmap
14
14
  import android.graphics.BitmapFactory
15
15
  import android.graphics.Matrix
16
+ import android.provider.MediaStore
16
17
 
17
18
  class MyUploaderModule(private val reactContext: ReactApplicationContext) :
18
19
  ReactContextBaseJavaModule(reactContext), ActivityEventListener {
@@ -46,6 +47,7 @@ class MyUploaderModule(private val reactContext: ReactApplicationContext) :
46
47
 
47
48
  this.pickerPromise = promise
48
49
 
50
+ val isGallery = options.takeIf { it.hasKey("isGallery") }?.getBoolean("isGallery") ?: false
49
51
  val multipleFiles = options.takeIf { it.hasKey("multipleFiles") }?.getBoolean("multipleFiles") ?: false
50
52
  val jsMaxFiles = options.takeIf { it.hasKey("maxFiles") }?.getInt("maxFiles") ?: 0
51
53
 
@@ -75,26 +77,34 @@ class MyUploaderModule(private val reactContext: ReactApplicationContext) :
75
77
  return
76
78
  }
77
79
 
78
- val fileTypes = options.takeIf { it.hasKey("fileTypes") }
79
- ?.getArray("fileTypes")?.toArrayList()?.mapNotNull { it.toString() } ?: listOf("*/*")
80
- val mimeTypes = if (fileTypes.isEmpty()) arrayOf("*/*") else fileTypes.toTypedArray()
81
-
82
80
  try {
83
- // ANAHTAR: ACTION_GET_CONTENT, güvenilir çoklu seçimi etkinleştirir.
84
- val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
81
+ val intent: Intent
82
+ if (isGallery) {
83
+ // SENARYO A: Sadece Galeri/Fotoğraflar Uygulamasını Açar
84
+ intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
85
+ if (multipleFiles) {
86
+ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
87
+ }
88
+ } else {
89
+ // SENARYO B: Genel Dosya Seçiciyi Açarlar (Sizin eski kodunuz)
90
+ val fileTypes = options.takeIf { it.hasKey("fileTypes") }
91
+ ?.getArray("fileTypes")?.toArrayList()?.mapNotNull { it.toString() } ?: listOf("*/*")
92
+ val mimeTypes = if (fileTypes.isEmpty()) arrayOf("*/*") else fileTypes.toTypedArray()
93
+
94
+ intent = Intent(Intent.ACTION_GET_CONTENT).apply {
85
95
  type = "*/*"
86
96
  addCategory(Intent.CATEGORY_OPENABLE)
87
97
  putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
88
-
89
98
  if (multipleFiles) {
90
99
  putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
91
100
  }
92
101
  }
93
- currentActivity.startActivityForResult(Intent.createChooser(intent, "Dosya Seçin"), REQUEST_CODE)
94
- } catch (e: Exception) {
95
- pickerPromise?.reject(E_FAILED_TO_OPEN_DOCUMENT, e)
96
- pickerPromise = null
97
102
  }
103
+ currentActivity.startActivityForResult(Intent.createChooser(intent, "Seçim Yapın"), REQUEST_CODE)
104
+ } catch (e: Exception) {
105
+ pickerPromise?.reject(E_FAILED_TO_OPEN_DOCUMENT, e)
106
+ pickerPromise = null
107
+ }
98
108
  }
99
109
 
100
110
 
@@ -13,7 +13,7 @@ const {
13
13
 
14
14
  // 1. Standalone pickFile Fonksiyonu
15
15
  const pickFile = async (options = {}) => {
16
- var _options$multipleFile, _options$maxFiles, _options$maxSize, _options$fileTypes, _options$excludedUris;
16
+ var _options$multipleFile, _options$maxFiles, _options$maxSize, _options$fileTypes, _options$excludedUris, _options$isGallery;
17
17
  if (!NativeUploadPicker) throw new Error("DocumentPicker module is not linked.");
18
18
 
19
19
  // Native tarafa gönderilecek options
@@ -22,7 +22,8 @@ const pickFile = async (options = {}) => {
22
22
  maxFiles: (_options$maxFiles = options.maxFiles) !== null && _options$maxFiles !== void 0 ? _options$maxFiles : 0,
23
23
  maxSize: (_options$maxSize = options.maxSize) !== null && _options$maxSize !== void 0 ? _options$maxSize : 0,
24
24
  fileTypes: (_options$fileTypes = options.fileTypes) !== null && _options$fileTypes !== void 0 ? _options$fileTypes : ['*/*'],
25
- excludedUris: (_options$excludedUris = options.excludedUris) !== null && _options$excludedUris !== void 0 ? _options$excludedUris : []
25
+ excludedUris: (_options$excludedUris = options.excludedUris) !== null && _options$excludedUris !== void 0 ? _options$excludedUris : [],
26
+ isGallery: (_options$isGallery = options.isGallery) !== null && _options$isGallery !== void 0 ? _options$isGallery : false
26
27
  };
27
28
  return await NativeUploadPicker.openDocument(nativeOptions);
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","UploadDocumentPicker","NativeUploadPicker","NativeModules","pickFile","options","_options$multipleFile","_options$maxFiles","_options$maxSize","_options$fileTypes","_options$excludedUris","Error","nativeOptions","multipleFiles","maxFiles","maxSize","fileTypes","excludedUris","openDocument","exports","getBase64FromUri","cropFileUri","error","message","RotateImage","base64","angle","rotatedBase64","rotateImage","MyUploader","onSelect","onError","buttonPlaceHolder","ButtonStyle","ButtonTextStyle","disabled","isLoading","setIsLoading","useState","handlePress","files","console","createElement","TouchableOpacity","style","styles","button","onPress","ActivityIndicator","color","Text","text","StyleSheet","create","backgroundColor","padding","borderRadius","alignItems","justifyContent","fontWeight","fontSize","_default"],"sources":["MyUploader.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { TouchableOpacity, Text, StyleSheet, ActivityIndicator, NativeModules } from 'react-native';\r\nimport type { MyUploaderProps, DocumentPickerOptions, FileInfo, RotateImageProps } from '../types';\r\n\r\nconst { UploadDocumentPicker: NativeUploadPicker } = NativeModules;\r\n\r\n// 1. Standalone pickFile Fonksiyonu\r\nexport const pickFile = async (options: DocumentPickerOptions = {}): Promise<FileInfo[]> => {\r\n if (!NativeUploadPicker) throw new Error(\"DocumentPicker module is not linked.\");\r\n\r\n // Native tarafa gönderilecek options\r\n const nativeOptions = {\r\n multipleFiles: options.multipleFiles ?? false,\r\n maxFiles: options.maxFiles ?? 0,\r\n maxSize: options.maxSize ?? 0,\r\n fileTypes: options.fileTypes ?? ['*/*'],\r\n excludedUris: options.excludedUris ?? [],\r\n };\r\n\r\n return await NativeUploadPicker.openDocument(nativeOptions);\r\n};\r\n\r\nexport const getBase64FromUri = async (cropFileUri: string): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n return await NativeUploadPicker.getBase64FromUri(cropFileUri);\r\n } catch (error: any) {\r\n throw new Error(`getBase64FromUri Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const RotateImage = async ({ base64, angle }: RotateImageProps): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n // Native sadece saf base64 string'i döner\r\n const rotatedBase64: string = await NativeUploadPicker.rotateImage(base64, angle);\r\n\r\n // Uygulama tarafında doğrudan <Image /> içinde kullanılabilmesi için prefix eklenir\r\n return `data:image/jpeg;base64,${rotatedBase64}`;\r\n } catch (error: any) {\r\n // Hata mesajını daha okunaklı fırlatıyoruz\r\n throw new Error(`RotateImage Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n// 2. MyUploader Bileşeni\r\nconst MyUploader: React.FC<MyUploaderProps> = ({\r\n onSelect,\r\n onError,\r\n buttonPlaceHolder = \"Dosya Seç\",\r\n ButtonStyle,\r\n ButtonTextStyle,\r\n disabled = false,\r\n multipleFiles = false,\r\n fileTypes = ['*/*'],\r\n maxSize = 0,\r\n maxFiles = 0,\r\n excludedUris = [],\r\n}) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handlePress = async () => {\r\n if (disabled || isLoading) return;\r\n setIsLoading(true);\r\n\r\n try {\r\n const files = await pickFile({\r\n multipleFiles,\r\n fileTypes,\r\n maxSize,\r\n maxFiles,\r\n excludedUris\r\n });\r\n\r\n onSelect(files);\r\n } catch (error: any) {\r\n if (onError) {\r\n onError(error);\r\n } else {\r\n console.error(\"MyUploader Error:\", error);\r\n }\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n style={[styles.button, ButtonStyle, (disabled || isLoading) && styles.disabled]}\r\n onPress={handlePress}\r\n disabled={disabled || isLoading}\r\n >\r\n {isLoading ? (\r\n <ActivityIndicator color=\"#FFF\" />\r\n ) : (\r\n <Text style={[styles.text, ButtonTextStyle]}>{buttonPlaceHolder}</Text>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n backgroundColor: '#6200EE',\r\n padding: 12,\r\n borderRadius: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n text: {\r\n color: '#FFF',\r\n fontWeight: '600',\r\n fontSize: 16\r\n },\r\n disabled: {\r\n backgroundColor: '#B0B0B0'\r\n }\r\n});\r\n\r\nexport default MyUploader;"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","UploadDocumentPicker","NativeUploadPicker","NativeModules","pickFile","options","_options$multipleFile","_options$maxFiles","_options$maxSize","_options$fileTypes","_options$excludedUris","_options$isGallery","Error","nativeOptions","multipleFiles","maxFiles","maxSize","fileTypes","excludedUris","isGallery","openDocument","exports","getBase64FromUri","cropFileUri","error","message","RotateImage","base64","angle","rotatedBase64","rotateImage","MyUploader","onSelect","onError","buttonPlaceHolder","ButtonStyle","ButtonTextStyle","disabled","isLoading","setIsLoading","useState","handlePress","files","console","createElement","TouchableOpacity","style","styles","button","onPress","ActivityIndicator","color","Text","text","StyleSheet","create","backgroundColor","padding","borderRadius","alignItems","justifyContent","fontWeight","fontSize","_default"],"sources":["MyUploader.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { TouchableOpacity, Text, StyleSheet, ActivityIndicator, NativeModules } from 'react-native';\r\nimport type { MyUploaderProps, DocumentPickerOptions, FileInfo, RotateImageProps } from '../types';\r\n\r\nconst { UploadDocumentPicker: NativeUploadPicker } = NativeModules;\r\n\r\n// 1. Standalone pickFile Fonksiyonu\r\nexport const pickFile = async (options: DocumentPickerOptions = {}): Promise<FileInfo[]> => {\r\n if (!NativeUploadPicker) throw new Error(\"DocumentPicker module is not linked.\");\r\n\r\n // Native tarafa gönderilecek options\r\n const nativeOptions = {\r\n multipleFiles: options.multipleFiles ?? false,\r\n maxFiles: options.maxFiles ?? 0,\r\n maxSize: options.maxSize ?? 0,\r\n fileTypes: options.fileTypes ?? ['*/*'],\r\n excludedUris: options.excludedUris ?? [],\r\n isGallery:options.isGallery ?? false,\r\n };\r\n\r\n return await NativeUploadPicker.openDocument(nativeOptions);\r\n};\r\n\r\nexport const getBase64FromUri = async (cropFileUri: string): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n return await NativeUploadPicker.getBase64FromUri(cropFileUri);\r\n } catch (error: any) {\r\n throw new Error(`getBase64FromUri Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const RotateImage = async ({ base64, angle }: RotateImageProps): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n // Native sadece saf base64 string'i döner\r\n const rotatedBase64: string = await NativeUploadPicker.rotateImage(base64, angle);\r\n\r\n // Uygulama tarafında doğrudan <Image /> içinde kullanılabilmesi için prefix eklenir\r\n return `data:image/jpeg;base64,${rotatedBase64}`;\r\n } catch (error: any) {\r\n // Hata mesajını daha okunaklı fırlatıyoruz\r\n throw new Error(`RotateImage Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n// 2. MyUploader Bileşeni\r\nconst MyUploader: React.FC<MyUploaderProps> = ({\r\n onSelect,\r\n onError,\r\n buttonPlaceHolder = \"Dosya Seç\",\r\n ButtonStyle,\r\n ButtonTextStyle,\r\n disabled = false,\r\n multipleFiles = false,\r\n fileTypes = ['*/*'],\r\n maxSize = 0,\r\n maxFiles = 0,\r\n excludedUris = [],\r\n}) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handlePress = async () => {\r\n if (disabled || isLoading) return;\r\n setIsLoading(true);\r\n\r\n try {\r\n const files = await pickFile({\r\n multipleFiles,\r\n fileTypes,\r\n maxSize,\r\n maxFiles,\r\n excludedUris\r\n });\r\n\r\n onSelect(files);\r\n } catch (error: any) {\r\n if (onError) {\r\n onError(error);\r\n } else {\r\n console.error(\"MyUploader Error:\", error);\r\n }\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n style={[styles.button, ButtonStyle, (disabled || isLoading) && styles.disabled]}\r\n onPress={handlePress}\r\n disabled={disabled || isLoading}\r\n >\r\n {isLoading ? (\r\n <ActivityIndicator color=\"#FFF\" />\r\n ) : (\r\n <Text style={[styles.text, ButtonTextStyle]}>{buttonPlaceHolder}</Text>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n backgroundColor: '#6200EE',\r\n padding: 12,\r\n borderRadius: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n text: {\r\n color: '#FFF',\r\n fontWeight: '600',\r\n fontSize: 16\r\n },\r\n disabled: {\r\n backgroundColor: '#B0B0B0'\r\n }\r\n});\r\n\r\nexport default MyUploader;"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["// import type { StyleProp, TextStyle, ViewStyle } from 'react-native';\r\n\r\n// export interface FileInfo {\r\n// fileName: string;\r\n// fileSize: number; \r\n// fileType: string | null;\r\n// fileUri: string;\r\n// base64: string;\r\n// }\r\n\r\n// export interface MyUploaderProps{\r\n// onSelect: (files: FileInfo[]) => void;\r\n// onError?: (error: Error) => void;\r\n// buttonPlaceHolder?: string;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// disabled?: boolean; \r\n// multipleFiles?: boolean;\r\n// fileTypes?: string[];\r\n// maxSize?: number;\r\n// maxFiles?: number;\r\n// excludedUris?: string[];\r\n// }\r\n\r\n// export interface DownloadedFileInfo {\r\n// originalUrl: string;\r\n// localUri: string;\r\n// }\r\n\r\n// export interface SkippedFileInfo {\r\n// originalUrl: string;\r\n// reason: string; \r\n// }\r\n\r\n\r\n\r\n// export interface UploadFileProps {\r\n// files: string[];\r\n// multipleLoad?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean; \r\n// maxSize?: number;\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: Error) => void;\r\n// }\r\n\r\n// export interface DownloadFileProps {\r\n// files: string[];\r\n// multipleDownload?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean;\r\n// maxSize?: number; // MB\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: ViewStyle;\r\n// ButtonTextStyle?: TextStyle;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: any) => void;\r\n// }\r\n// export interface DownloadResult {\r\n// successful: { originalUrl: string; localUri: string | null }[];\r\n// skipped: { originalUrl: string; reason: string }[];\r\n// }\r\n\r\n\r\nimport type { ViewStyle, TextStyle } from 'react-native';\r\n\r\nexport interface FileInfo {\r\n fileUri: string;\r\n fileName: string;\r\n fileType: string;\r\n fileSize: number;\r\n base64?: string | null;\r\n}\r\n\r\n\r\n// ----- MyUploader & pickFile Props -----\r\nexport interface DocumentPickerOptions {\r\n multipleFiles?: boolean;\r\n fileTypes?: string[]; // örn: ['image/*', 'application/pdf']\r\n maxSize?: number; // MB cinsinden\r\n maxFiles?: number;\r\n excludedUris?: string[];\r\n}\r\n\r\nexport interface MyUploaderProps extends DocumentPickerOptions {\r\n onSelect: (files: FileInfo[]) => void;\r\n onError?: (error: Error) => void;\r\n buttonPlaceHolder?: string;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n disabled?: boolean;\r\n}\r\n\r\n// ----- DownloadFile Props -----\r\nexport interface DownloadFileProps {\r\n files: string[];\r\n multipleDownload?: boolean; // multipleFiles yerine multipleDownload (İsim karışmaması için)\r\n disabled?: boolean;\r\n debug?: boolean;\r\n maxSize?: number; // MB\r\n fileTypes?: string[]; // İndirilecek dosyanın Content-Type kontrolü\r\n buttonPlaceHolder?: string;\r\n buttonIcon?: React.ReactNode;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n onSuccess?: (result: DownloadResult) => void;\r\n onError?: (error: any) => void;\r\n}\r\n\r\n\r\nexport interface DownloadResult {\r\n successful: { originalUrl: string; localUri: string | null }[];\r\n skipped: { originalUrl: string; reason: string }[];\r\n}\r\n\r\n\r\n///rotateImage\r\n\r\nexport interface RotateImageProps{\r\n base64: string, angle: number\r\n}"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["// import type { StyleProp, TextStyle, ViewStyle } from 'react-native';\r\n\r\n// export interface FileInfo {\r\n// fileName: string;\r\n// fileSize: number; \r\n// fileType: string | null;\r\n// fileUri: string;\r\n// base64: string;\r\n// }\r\n\r\n// export interface MyUploaderProps{\r\n// onSelect: (files: FileInfo[]) => void;\r\n// onError?: (error: Error) => void;\r\n// buttonPlaceHolder?: string;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// disabled?: boolean; \r\n// multipleFiles?: boolean;\r\n// fileTypes?: string[];\r\n// maxSize?: number;\r\n// maxFiles?: number;\r\n// excludedUris?: string[];\r\n// }\r\n\r\n// export interface DownloadedFileInfo {\r\n// originalUrl: string;\r\n// localUri: string;\r\n// }\r\n\r\n// export interface SkippedFileInfo {\r\n// originalUrl: string;\r\n// reason: string; \r\n// }\r\n\r\n\r\n\r\n// export interface UploadFileProps {\r\n// files: string[];\r\n// multipleLoad?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean; \r\n// maxSize?: number;\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: Error) => void;\r\n// }\r\n\r\n// export interface DownloadFileProps {\r\n// files: string[];\r\n// multipleDownload?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean;\r\n// maxSize?: number; // MB\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: ViewStyle;\r\n// ButtonTextStyle?: TextStyle;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: any) => void;\r\n// }\r\n// export interface DownloadResult {\r\n// successful: { originalUrl: string; localUri: string | null }[];\r\n// skipped: { originalUrl: string; reason: string }[];\r\n// }\r\n\r\n\r\nimport type { ViewStyle, TextStyle } from 'react-native';\r\n\r\nexport interface FileInfo {\r\n fileUri: string;\r\n fileName: string;\r\n fileType: string;\r\n fileSize: number;\r\n base64?: string | null;\r\n}\r\n\r\n\r\n// ----- MyUploader & pickFile Props -----\r\nexport interface DocumentPickerOptions {\r\n multipleFiles?: boolean;\r\n fileTypes?: string[]; // örn: ['image/*', 'application/pdf']\r\n maxSize?: number; // MB cinsinden\r\n maxFiles?: number;\r\n excludedUris?: string[];\r\n isGallery?:boolean;\r\n}\r\n\r\nexport interface MyUploaderProps extends DocumentPickerOptions {\r\n onSelect: (files: FileInfo[]) => void;\r\n onError?: (error: Error) => void;\r\n buttonPlaceHolder?: string;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n disabled?: boolean;\r\n}\r\n\r\n// ----- DownloadFile Props -----\r\nexport interface DownloadFileProps {\r\n files: string[];\r\n multipleDownload?: boolean; // multipleFiles yerine multipleDownload (İsim karışmaması için)\r\n disabled?: boolean;\r\n debug?: boolean;\r\n maxSize?: number; // MB\r\n fileTypes?: string[]; // İndirilecek dosyanın Content-Type kontrolü\r\n buttonPlaceHolder?: string;\r\n buttonIcon?: React.ReactNode;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n onSuccess?: (result: DownloadResult) => void;\r\n onError?: (error: any) => void;\r\n}\r\n\r\n\r\nexport interface DownloadResult {\r\n successful: { originalUrl: string; localUri: string | null }[];\r\n skipped: { originalUrl: string; reason: string }[];\r\n}\r\n\r\n\r\n///rotateImage\r\n\r\nexport interface RotateImageProps{\r\n base64: string, angle: number\r\n}"],"mappings":"","ignoreList":[]}
@@ -6,7 +6,7 @@ const {
6
6
 
7
7
  // 1. Standalone pickFile Fonksiyonu
8
8
  export const pickFile = async (options = {}) => {
9
- var _options$multipleFile, _options$maxFiles, _options$maxSize, _options$fileTypes, _options$excludedUris;
9
+ var _options$multipleFile, _options$maxFiles, _options$maxSize, _options$fileTypes, _options$excludedUris, _options$isGallery;
10
10
  if (!NativeUploadPicker) throw new Error("DocumentPicker module is not linked.");
11
11
 
12
12
  // Native tarafa gönderilecek options
@@ -15,7 +15,8 @@ export const pickFile = async (options = {}) => {
15
15
  maxFiles: (_options$maxFiles = options.maxFiles) !== null && _options$maxFiles !== void 0 ? _options$maxFiles : 0,
16
16
  maxSize: (_options$maxSize = options.maxSize) !== null && _options$maxSize !== void 0 ? _options$maxSize : 0,
17
17
  fileTypes: (_options$fileTypes = options.fileTypes) !== null && _options$fileTypes !== void 0 ? _options$fileTypes : ['*/*'],
18
- excludedUris: (_options$excludedUris = options.excludedUris) !== null && _options$excludedUris !== void 0 ? _options$excludedUris : []
18
+ excludedUris: (_options$excludedUris = options.excludedUris) !== null && _options$excludedUris !== void 0 ? _options$excludedUris : [],
19
+ isGallery: (_options$isGallery = options.isGallery) !== null && _options$isGallery !== void 0 ? _options$isGallery : false
19
20
  };
20
21
  return await NativeUploadPicker.openDocument(nativeOptions);
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","ActivityIndicator","NativeModules","UploadDocumentPicker","NativeUploadPicker","pickFile","options","_options$multipleFile","_options$maxFiles","_options$maxSize","_options$fileTypes","_options$excludedUris","Error","nativeOptions","multipleFiles","maxFiles","maxSize","fileTypes","excludedUris","openDocument","getBase64FromUri","cropFileUri","error","message","RotateImage","base64","angle","rotatedBase64","rotateImage","MyUploader","onSelect","onError","buttonPlaceHolder","ButtonStyle","ButtonTextStyle","disabled","isLoading","setIsLoading","handlePress","files","console","createElement","style","styles","button","onPress","color","text","create","backgroundColor","padding","borderRadius","alignItems","justifyContent","fontWeight","fontSize"],"sources":["MyUploader.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { TouchableOpacity, Text, StyleSheet, ActivityIndicator, NativeModules } from 'react-native';\r\nimport type { MyUploaderProps, DocumentPickerOptions, FileInfo, RotateImageProps } from '../types';\r\n\r\nconst { UploadDocumentPicker: NativeUploadPicker } = NativeModules;\r\n\r\n// 1. Standalone pickFile Fonksiyonu\r\nexport const pickFile = async (options: DocumentPickerOptions = {}): Promise<FileInfo[]> => {\r\n if (!NativeUploadPicker) throw new Error(\"DocumentPicker module is not linked.\");\r\n\r\n // Native tarafa gönderilecek options\r\n const nativeOptions = {\r\n multipleFiles: options.multipleFiles ?? false,\r\n maxFiles: options.maxFiles ?? 0,\r\n maxSize: options.maxSize ?? 0,\r\n fileTypes: options.fileTypes ?? ['*/*'],\r\n excludedUris: options.excludedUris ?? [],\r\n };\r\n\r\n return await NativeUploadPicker.openDocument(nativeOptions);\r\n};\r\n\r\nexport const getBase64FromUri = async (cropFileUri: string): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n return await NativeUploadPicker.getBase64FromUri(cropFileUri);\r\n } catch (error: any) {\r\n throw new Error(`getBase64FromUri Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const RotateImage = async ({ base64, angle }: RotateImageProps): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n // Native sadece saf base64 string'i döner\r\n const rotatedBase64: string = await NativeUploadPicker.rotateImage(base64, angle);\r\n\r\n // Uygulama tarafında doğrudan <Image /> içinde kullanılabilmesi için prefix eklenir\r\n return `data:image/jpeg;base64,${rotatedBase64}`;\r\n } catch (error: any) {\r\n // Hata mesajını daha okunaklı fırlatıyoruz\r\n throw new Error(`RotateImage Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n// 2. MyUploader Bileşeni\r\nconst MyUploader: React.FC<MyUploaderProps> = ({\r\n onSelect,\r\n onError,\r\n buttonPlaceHolder = \"Dosya Seç\",\r\n ButtonStyle,\r\n ButtonTextStyle,\r\n disabled = false,\r\n multipleFiles = false,\r\n fileTypes = ['*/*'],\r\n maxSize = 0,\r\n maxFiles = 0,\r\n excludedUris = [],\r\n}) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handlePress = async () => {\r\n if (disabled || isLoading) return;\r\n setIsLoading(true);\r\n\r\n try {\r\n const files = await pickFile({\r\n multipleFiles,\r\n fileTypes,\r\n maxSize,\r\n maxFiles,\r\n excludedUris\r\n });\r\n\r\n onSelect(files);\r\n } catch (error: any) {\r\n if (onError) {\r\n onError(error);\r\n } else {\r\n console.error(\"MyUploader Error:\", error);\r\n }\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n style={[styles.button, ButtonStyle, (disabled || isLoading) && styles.disabled]}\r\n onPress={handlePress}\r\n disabled={disabled || isLoading}\r\n >\r\n {isLoading ? (\r\n <ActivityIndicator color=\"#FFF\" />\r\n ) : (\r\n <Text style={[styles.text, ButtonTextStyle]}>{buttonPlaceHolder}</Text>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n backgroundColor: '#6200EE',\r\n padding: 12,\r\n borderRadius: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n text: {\r\n color: '#FFF',\r\n fontWeight: '600',\r\n fontSize: 16\r\n },\r\n disabled: {\r\n backgroundColor: '#B0B0B0'\r\n }\r\n});\r\n\r\nexport default MyUploader;"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","ActivityIndicator","NativeModules","UploadDocumentPicker","NativeUploadPicker","pickFile","options","_options$multipleFile","_options$maxFiles","_options$maxSize","_options$fileTypes","_options$excludedUris","_options$isGallery","Error","nativeOptions","multipleFiles","maxFiles","maxSize","fileTypes","excludedUris","isGallery","openDocument","getBase64FromUri","cropFileUri","error","message","RotateImage","base64","angle","rotatedBase64","rotateImage","MyUploader","onSelect","onError","buttonPlaceHolder","ButtonStyle","ButtonTextStyle","disabled","isLoading","setIsLoading","handlePress","files","console","createElement","style","styles","button","onPress","color","text","create","backgroundColor","padding","borderRadius","alignItems","justifyContent","fontWeight","fontSize"],"sources":["MyUploader.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { TouchableOpacity, Text, StyleSheet, ActivityIndicator, NativeModules } from 'react-native';\r\nimport type { MyUploaderProps, DocumentPickerOptions, FileInfo, RotateImageProps } from '../types';\r\n\r\nconst { UploadDocumentPicker: NativeUploadPicker } = NativeModules;\r\n\r\n// 1. Standalone pickFile Fonksiyonu\r\nexport const pickFile = async (options: DocumentPickerOptions = {}): Promise<FileInfo[]> => {\r\n if (!NativeUploadPicker) throw new Error(\"DocumentPicker module is not linked.\");\r\n\r\n // Native tarafa gönderilecek options\r\n const nativeOptions = {\r\n multipleFiles: options.multipleFiles ?? false,\r\n maxFiles: options.maxFiles ?? 0,\r\n maxSize: options.maxSize ?? 0,\r\n fileTypes: options.fileTypes ?? ['*/*'],\r\n excludedUris: options.excludedUris ?? [],\r\n isGallery:options.isGallery ?? false,\r\n };\r\n\r\n return await NativeUploadPicker.openDocument(nativeOptions);\r\n};\r\n\r\nexport const getBase64FromUri = async (cropFileUri: string): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n return await NativeUploadPicker.getBase64FromUri(cropFileUri);\r\n } catch (error: any) {\r\n throw new Error(`getBase64FromUri Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n\r\n\r\nexport const RotateImage = async ({ base64, angle }: RotateImageProps): Promise<string> => {\r\n if (!NativeUploadPicker) {\r\n throw new Error(\"UploadDocumentPicker modülü linklenmemiş.\");\r\n }\r\n\r\n try {\r\n // Native sadece saf base64 string'i döner\r\n const rotatedBase64: string = await NativeUploadPicker.rotateImage(base64, angle);\r\n\r\n // Uygulama tarafında doğrudan <Image /> içinde kullanılabilmesi için prefix eklenir\r\n return `data:image/jpeg;base64,${rotatedBase64}`;\r\n } catch (error: any) {\r\n // Hata mesajını daha okunaklı fırlatıyoruz\r\n throw new Error(`RotateImage Hatası: ${error.message}`);\r\n }\r\n};\r\n\r\n// 2. MyUploader Bileşeni\r\nconst MyUploader: React.FC<MyUploaderProps> = ({\r\n onSelect,\r\n onError,\r\n buttonPlaceHolder = \"Dosya Seç\",\r\n ButtonStyle,\r\n ButtonTextStyle,\r\n disabled = false,\r\n multipleFiles = false,\r\n fileTypes = ['*/*'],\r\n maxSize = 0,\r\n maxFiles = 0,\r\n excludedUris = [],\r\n}) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const handlePress = async () => {\r\n if (disabled || isLoading) return;\r\n setIsLoading(true);\r\n\r\n try {\r\n const files = await pickFile({\r\n multipleFiles,\r\n fileTypes,\r\n maxSize,\r\n maxFiles,\r\n excludedUris\r\n });\r\n\r\n onSelect(files);\r\n } catch (error: any) {\r\n if (onError) {\r\n onError(error);\r\n } else {\r\n console.error(\"MyUploader Error:\", error);\r\n }\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n style={[styles.button, ButtonStyle, (disabled || isLoading) && styles.disabled]}\r\n onPress={handlePress}\r\n disabled={disabled || isLoading}\r\n >\r\n {isLoading ? (\r\n <ActivityIndicator color=\"#FFF\" />\r\n ) : (\r\n <Text style={[styles.text, ButtonTextStyle]}>{buttonPlaceHolder}</Text>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n backgroundColor: '#6200EE',\r\n padding: 12,\r\n borderRadius: 8,\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n text: {\r\n color: '#FFF',\r\n fontWeight: '600',\r\n fontSize: 16\r\n },\r\n disabled: {\r\n backgroundColor: '#B0B0B0'\r\n }\r\n});\r\n\r\nexport default MyUploader;"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["// import type { StyleProp, TextStyle, ViewStyle } from 'react-native';\r\n\r\n// export interface FileInfo {\r\n// fileName: string;\r\n// fileSize: number; \r\n// fileType: string | null;\r\n// fileUri: string;\r\n// base64: string;\r\n// }\r\n\r\n// export interface MyUploaderProps{\r\n// onSelect: (files: FileInfo[]) => void;\r\n// onError?: (error: Error) => void;\r\n// buttonPlaceHolder?: string;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// disabled?: boolean; \r\n// multipleFiles?: boolean;\r\n// fileTypes?: string[];\r\n// maxSize?: number;\r\n// maxFiles?: number;\r\n// excludedUris?: string[];\r\n// }\r\n\r\n// export interface DownloadedFileInfo {\r\n// originalUrl: string;\r\n// localUri: string;\r\n// }\r\n\r\n// export interface SkippedFileInfo {\r\n// originalUrl: string;\r\n// reason: string; \r\n// }\r\n\r\n\r\n\r\n// export interface UploadFileProps {\r\n// files: string[];\r\n// multipleLoad?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean; \r\n// maxSize?: number;\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: Error) => void;\r\n// }\r\n\r\n// export interface DownloadFileProps {\r\n// files: string[];\r\n// multipleDownload?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean;\r\n// maxSize?: number; // MB\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: ViewStyle;\r\n// ButtonTextStyle?: TextStyle;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: any) => void;\r\n// }\r\n// export interface DownloadResult {\r\n// successful: { originalUrl: string; localUri: string | null }[];\r\n// skipped: { originalUrl: string; reason: string }[];\r\n// }\r\n\r\n\r\nimport type { ViewStyle, TextStyle } from 'react-native';\r\n\r\nexport interface FileInfo {\r\n fileUri: string;\r\n fileName: string;\r\n fileType: string;\r\n fileSize: number;\r\n base64?: string | null;\r\n}\r\n\r\n\r\n// ----- MyUploader & pickFile Props -----\r\nexport interface DocumentPickerOptions {\r\n multipleFiles?: boolean;\r\n fileTypes?: string[]; // örn: ['image/*', 'application/pdf']\r\n maxSize?: number; // MB cinsinden\r\n maxFiles?: number;\r\n excludedUris?: string[];\r\n}\r\n\r\nexport interface MyUploaderProps extends DocumentPickerOptions {\r\n onSelect: (files: FileInfo[]) => void;\r\n onError?: (error: Error) => void;\r\n buttonPlaceHolder?: string;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n disabled?: boolean;\r\n}\r\n\r\n// ----- DownloadFile Props -----\r\nexport interface DownloadFileProps {\r\n files: string[];\r\n multipleDownload?: boolean; // multipleFiles yerine multipleDownload (İsim karışmaması için)\r\n disabled?: boolean;\r\n debug?: boolean;\r\n maxSize?: number; // MB\r\n fileTypes?: string[]; // İndirilecek dosyanın Content-Type kontrolü\r\n buttonPlaceHolder?: string;\r\n buttonIcon?: React.ReactNode;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n onSuccess?: (result: DownloadResult) => void;\r\n onError?: (error: any) => void;\r\n}\r\n\r\n\r\nexport interface DownloadResult {\r\n successful: { originalUrl: string; localUri: string | null }[];\r\n skipped: { originalUrl: string; reason: string }[];\r\n}\r\n\r\n\r\n///rotateImage\r\n\r\nexport interface RotateImageProps{\r\n base64: string, angle: number\r\n}"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["// import type { StyleProp, TextStyle, ViewStyle } from 'react-native';\r\n\r\n// export interface FileInfo {\r\n// fileName: string;\r\n// fileSize: number; \r\n// fileType: string | null;\r\n// fileUri: string;\r\n// base64: string;\r\n// }\r\n\r\n// export interface MyUploaderProps{\r\n// onSelect: (files: FileInfo[]) => void;\r\n// onError?: (error: Error) => void;\r\n// buttonPlaceHolder?: string;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// disabled?: boolean; \r\n// multipleFiles?: boolean;\r\n// fileTypes?: string[];\r\n// maxSize?: number;\r\n// maxFiles?: number;\r\n// excludedUris?: string[];\r\n// }\r\n\r\n// export interface DownloadedFileInfo {\r\n// originalUrl: string;\r\n// localUri: string;\r\n// }\r\n\r\n// export interface SkippedFileInfo {\r\n// originalUrl: string;\r\n// reason: string; \r\n// }\r\n\r\n\r\n\r\n// export interface UploadFileProps {\r\n// files: string[];\r\n// multipleLoad?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean; \r\n// maxSize?: number;\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: StyleProp<ViewStyle>;\r\n// ButtonTextStyle?: StyleProp<TextStyle>;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: Error) => void;\r\n// }\r\n\r\n// export interface DownloadFileProps {\r\n// files: string[];\r\n// multipleDownload?: boolean;\r\n// disabled?: boolean;\r\n// debug?: boolean;\r\n// maxSize?: number; // MB\r\n// fileTypes?: string[];\r\n// buttonPlaceHolder?: string;\r\n// buttonIcon?: React.ReactNode;\r\n// ButtonStyle?: ViewStyle;\r\n// ButtonTextStyle?: TextStyle;\r\n// onSuccess?: (result: DownloadResult) => void;\r\n// onError?: (error: any) => void;\r\n// }\r\n// export interface DownloadResult {\r\n// successful: { originalUrl: string; localUri: string | null }[];\r\n// skipped: { originalUrl: string; reason: string }[];\r\n// }\r\n\r\n\r\nimport type { ViewStyle, TextStyle } from 'react-native';\r\n\r\nexport interface FileInfo {\r\n fileUri: string;\r\n fileName: string;\r\n fileType: string;\r\n fileSize: number;\r\n base64?: string | null;\r\n}\r\n\r\n\r\n// ----- MyUploader & pickFile Props -----\r\nexport interface DocumentPickerOptions {\r\n multipleFiles?: boolean;\r\n fileTypes?: string[]; // örn: ['image/*', 'application/pdf']\r\n maxSize?: number; // MB cinsinden\r\n maxFiles?: number;\r\n excludedUris?: string[];\r\n isGallery?:boolean;\r\n}\r\n\r\nexport interface MyUploaderProps extends DocumentPickerOptions {\r\n onSelect: (files: FileInfo[]) => void;\r\n onError?: (error: Error) => void;\r\n buttonPlaceHolder?: string;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n disabled?: boolean;\r\n}\r\n\r\n// ----- DownloadFile Props -----\r\nexport interface DownloadFileProps {\r\n files: string[];\r\n multipleDownload?: boolean; // multipleFiles yerine multipleDownload (İsim karışmaması için)\r\n disabled?: boolean;\r\n debug?: boolean;\r\n maxSize?: number; // MB\r\n fileTypes?: string[]; // İndirilecek dosyanın Content-Type kontrolü\r\n buttonPlaceHolder?: string;\r\n buttonIcon?: React.ReactNode;\r\n ButtonStyle?: ViewStyle;\r\n ButtonTextStyle?: TextStyle;\r\n onSuccess?: (result: DownloadResult) => void;\r\n onError?: (error: any) => void;\r\n}\r\n\r\n\r\nexport interface DownloadResult {\r\n successful: { originalUrl: string; localUri: string | null }[];\r\n skipped: { originalUrl: string; reason: string }[];\r\n}\r\n\r\n\r\n///rotateImage\r\n\r\nexport interface RotateImageProps{\r\n base64: string, angle: number\r\n}"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-my-uploader-android",
3
- "version": "1.0.40",
3
+ "version": "1.0.41",
4
4
  "description": "file uploader for android",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -15,6 +15,7 @@ export const pickFile = async (options: DocumentPickerOptions = {}): Promise<Fil
15
15
  maxSize: options.maxSize ?? 0,
16
16
  fileTypes: options.fileTypes ?? ['*/*'],
17
17
  excludedUris: options.excludedUris ?? [],
18
+ isGallery:options.isGallery ?? false,
18
19
  };
19
20
 
20
21
  return await NativeUploadPicker.openDocument(nativeOptions);
package/src/types.ts CHANGED
@@ -87,6 +87,7 @@ export interface DocumentPickerOptions {
87
87
  maxSize?: number; // MB cinsinden
88
88
  maxFiles?: number;
89
89
  excludedUris?: string[];
90
+ isGallery?:boolean;
90
91
  }
91
92
 
92
93
  export interface MyUploaderProps extends DocumentPickerOptions {