diff --git a/android/src/main/java/com/imagepicker/Options.java b/android/src/main/java/com/imagepicker/Options.java index 40de8b2ab..81ce6f050 100644 --- a/android/src/main/java/com/imagepicker/Options.java +++ b/android/src/main/java/com/imagepicker/Options.java @@ -6,7 +6,6 @@ public class Options { int selectionLimit; Boolean includeBase64; - Boolean includeExtra; int videoQuality = 1; int quality; int maxWidth; @@ -21,7 +20,6 @@ public class Options { mediaType = options.getString("mediaType"); selectionLimit = options.getInt("selectionLimit"); includeBase64 = options.getBoolean("includeBase64"); - includeExtra = options.getBoolean("includeExtra"); String videoQualityString = options.getString("videoQuality"); if(!TextUtils.isEmpty(videoQualityString) && !videoQualityString.toLowerCase().equals("high")) { diff --git a/android/src/main/java/com/imagepicker/Utils.java b/android/src/main/java/com/imagepicker/Utils.java index 6151f74b3..fac513f2d 100644 --- a/android/src/main/java/com/imagepicker/Utils.java +++ b/android/src/main/java/com/imagepicker/Utils.java @@ -404,17 +404,13 @@ static ReadableMap getImageResponseMap(Uri uri, Options options, Context context map.putInt("width", dimensions[0]); map.putInt("height", dimensions[1]); map.putString("type", getMimeType(uri, context)); + map.putString("timestamp", imageMetadata.getDateTime()); + map.putString("id", fileName); if (options.includeBase64) { map.putString("base64", getBase64String(uri, context)); } - if(options.includeExtra) { - // Add more extra data here ... - map.putString("timestamp", imageMetadata.getDateTime()); - map.putString("id", fileName); - } - return map; } @@ -431,12 +427,9 @@ static ReadableMap getVideoResponseMap(Uri uri, Options options, Context context map.putString("type", getMimeType(uri, context)); map.putInt("width", videoMetadata.getWidth()); map.putInt("height", videoMetadata.getHeight()); - - if(options.includeExtra) { - // Add more extra data here ... - map.putString("timestamp", videoMetadata.getDateTime()); - map.putString("id", fileName); - } + map.putString("timestamp", videoMetadata.getDateTime()); + map.putString("id", fileName); + // Add more extra data here ... return map; } diff --git a/example/src/App.tsx b/example/src/App.tsx index fc3228fed..fc427e367 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -4,9 +4,6 @@ import {DemoTitle, DemoButton, DemoResponse} from './components'; import * as ImagePicker from 'react-native-image-picker'; -/* toggle includeExtra */ -const includeExtra = true; - export default function App() { const [response, setResponse] = React.useState(null); @@ -85,7 +82,6 @@ const actions: Action[] = [ saveToPhotos: true, mediaType: 'photo', includeBase64: false, - includeExtra, }, }, { @@ -95,7 +91,6 @@ const actions: Action[] = [ selectionLimit: 0, mediaType: 'photo', includeBase64: false, - includeExtra, }, }, { @@ -104,7 +99,6 @@ const actions: Action[] = [ options: { saveToPhotos: true, mediaType: 'video', - includeExtra, }, }, { @@ -113,7 +107,6 @@ const actions: Action[] = [ options: { selectionLimit: 0, mediaType: 'video', - includeExtra, }, }, { @@ -122,7 +115,6 @@ const actions: Action[] = [ options: { selectionLimit: 0, mediaType: 'mixed', - includeExtra, }, }, ]; diff --git a/ios/ImagePickerManager.mm b/ios/ImagePickerManager.mm index f9e9f4808..2699a6060 100644 --- a/ios/ImagePickerManager.mm +++ b/ios/ImagePickerManager.mm @@ -83,19 +83,14 @@ - (void)launchImagePicker:(NSDictionary *)options callback:(RCTResponseSenderBlo picker.delegate = self; picker.modalPresentationStyle = [RCTConvert UIModalPresentationStyle:options[@"presentationStyle"]]; picker.presentationController.delegate = self; - - if([self.options[@"includeExtra"] boolValue]) { - [self checkPhotosPermissions:^(BOOL granted) { - if (!granted) { - self.callback(@[@{@"errorCode": errPermission}]); - return; - } - [self showPickerViewController:picker]; - }]; - } else { + [self checkPhotosPermissions:^(BOOL granted) { + if (!granted) { + self.callback(@[@{@"errorCode": errPermission}]); + return; + } [self showPickerViewController:picker]; - } + }]; return; } @@ -105,17 +100,13 @@ - (void)launchImagePicker:(NSDictionary *)options callback:(RCTResponseSenderBlo [ImagePickerUtils setupPickerFromOptions:picker options:self.options target:target]; picker.delegate = self; - if([self.options[@"includeExtra"] boolValue]) { - [self checkPhotosPermissions:^(BOOL granted) { - if (!granted) { - self.callback(@[@{@"errorCode": errPermission}]); - return; - } - [self showPickerViewController:picker]; - }]; - } else { - [self showPickerViewController:picker]; - } + [self checkPhotosPermissions:^(BOOL granted) { + if (!granted) { + self.callback(@[@{@"errorCode": errPermission}]); + return; + } + [self showPickerViewController:picker]; + }]; } - (void) showPickerViewController:(UIViewController *)picker @@ -154,35 +145,29 @@ - (void) showPickerViewController:(UIViewController *)picker --(NSMutableDictionary *)mapImageToAsset:(UIImage *)image data:(NSData *)data phAsset:(PHAsset * _Nullable)phAsset { - NSString *fileType = [ImagePickerUtils getFileType:data]; +-(NSMutableDictionary *)mapImageToAsset:(UIImage *)image phAsset:(PHAsset * _Nullable)phAsset { +// NSString *fileType = [ImagePickerUtils getFileType:data]; if (target == camera) { if ([self.options[@"saveToPhotos"] boolValue]) { UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); } - data = extractImageData(image); +// data = extractImageData(image); } UIImage* newImage = image; - if (![fileType isEqualToString:@"gif"]) { - newImage = [ImagePickerUtils resizeImage:image - maxWidth:[self.options[@"maxWidth"] floatValue] - maxHeight:[self.options[@"maxHeight"] floatValue]]; - } +// if (![fileType isEqualToString:@"gif"]) { +// newImage = [ImagePickerUtils resizeImage:image +// maxWidth:[self.options[@"maxWidth"] floatValue] +// maxHeight:[self.options[@"maxHeight"] floatValue]]; +// } float quality = [self.options[@"quality"] floatValue]; - if (![image isEqual:newImage] || (quality >= 0 && quality < 1)) { - if ([fileType isEqualToString:@"jpg"]) { - data = UIImageJPEGRepresentation(newImage, quality); - } else if ([fileType isEqualToString:@"png"]) { - data = UIImagePNGRepresentation(newImage); - } - } + + NSData *data = UIImageJPEGRepresentation(newImage, quality); + NSMutableDictionary *asset = [[NSMutableDictionary alloc] init]; - asset[@"type"] = [@"image/" stringByAppendingString:fileType]; - - NSString *fileName = [self getImageFileName:fileType]; + NSString *fileName = [self getImageFileName:@"jpeg"]; NSString *path = [[NSTemporaryDirectory() stringByStandardizingPath] stringByAppendingPathComponent:fileName]; [data writeToFile:path atomically:YES]; @@ -200,6 +185,7 @@ -(NSMutableDictionary *)mapImageToAsset:(UIImage *)image data:(NSData *)data phA asset[@"fileSize"] = fileSizeValue; } + asset[@"type"] = [@"image/" stringByAppendingString:@"jpeg"]; asset[@"fileName"] = fileName; asset[@"width"] = @(newImage.size.width); asset[@"height"] = @(newImage.size.height); @@ -268,12 +254,9 @@ -(NSMutableDictionary *)mapVideoToAsset:(NSURL *)url phAsset:(PHAsset * _Nullabl asset[@"fileSize"] = [ImagePickerUtils getFileSizeFromUrl:videoDestinationURL]; asset[@"width"] = @(dimentions.width); asset[@"height"] = @(dimentions.height); - - if(phAsset){ - asset[@"timestamp"] = [self getDateTimeInUTC:phAsset.creationDate]; - asset[@"id"] = phAsset.localIdentifier; - // Add more extra data here ... - } + asset[@"timestamp"] = [self getDateTimeInUTC:phAsset.creationDate]; + asset[@"id"] = phAsset.localIdentifier; + // Add more extra data here ... return asset; } @@ -403,22 +386,17 @@ - (void)imagePickerController:(UIImagePickerController *)picker didFinishPicking { dispatch_block_t dismissCompletionBlock = ^{ NSMutableArray *assets = [[NSMutableArray alloc] initWithCapacity:1]; - PHAsset *asset = nil; + PHAsset *asset = [ImagePickerUtils fetchPHAssetOnIOS13:info]; if (photoSelected == YES) { return; } photoSelected = YES; - // If include extra, we fetch the PHAsset, this required library permissions - if([self.options[@"includeExtra"] boolValue]) { - asset = [ImagePickerUtils fetchPHAssetOnIOS13:info]; - } - if ([info[UIImagePickerControllerMediaType] isEqualToString:(NSString *) kUTTypeImage]) { UIImage *image = [ImagePickerManager getUIImageFromInfo:info]; - [assets addObject:[self mapImageToAsset:image data:[NSData dataWithContentsOfURL:[ImagePickerManager getNSURLFromInfo:info]] phAsset:asset]]; + [assets addObject:[self mapImageToAsset:image phAsset:asset]]; } else { NSError *error; NSDictionary *videoAsset = [self mapVideoToAsset:info[UIImagePickerControllerMediaURL] phAsset:asset error:&error]; @@ -488,14 +466,9 @@ - (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray) PHPickerConfiguration *configuration; - if(options[@"includeExtra"]) { - PHPhotoLibrary *photoLibrary = [PHPhotoLibrary sharedPhotoLibrary]; - configuration = [[PHPickerConfiguration alloc] initWithPhotoLibrary:photoLibrary]; - } else { - configuration = [[PHPickerConfiguration alloc] init]; - } + PHPhotoLibrary *photoLibrary = [PHPhotoLibrary sharedPhotoLibrary]; + configuration = [[PHPickerConfiguration alloc] initWithPhotoLibrary:photoLibrary]; configuration.preferredAssetRepresentationMode = PHPickerConfigurationAssetRepresentationModeAutomatic; configuration.selectionLimit = [options[@"selectionLimit"] integerValue]; diff --git a/src/platforms/native.ts b/src/platforms/native.ts index 6c764b071..e61798338 100644 --- a/src/platforms/native.ts +++ b/src/platforms/native.ts @@ -18,7 +18,6 @@ const DEFAULT_OPTIONS: ImageLibraryOptions & CameraOptions = { selectionLimit: 1, saveToPhotos: false, durationLimit: 0, - includeExtra: false, presentationStyle: 'pageSheet', }; diff --git a/src/types.ts b/src/types.ts index dd7d32992..4d349e573 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,7 +7,6 @@ export interface OptionsCommon { quality?: PhotoQuality; videoQuality?: AndroidVideoOptions | iOSVideoOptions; includeBase64?: boolean; - includeExtra?: boolean; presentationStyle?: | 'currentContext' | 'fullScreen'