Adds a sortOrder flag to sort by creation date on iOS (#1090)

* Adds a sortOrder flag to sort by creation date on iOS

* Removes extraneous sortOrder access
This commit is contained in:
Miguel 2019-08-01 04:17:08 -04:00 committed by Ivan Pusic
parent 42e14536d8
commit 33fd5265e0
5 changed files with 14 additions and 1 deletions

View File

@ -142,6 +142,7 @@ ImagePicker.clean().then(() => {
| mediaType | string (default any) | Accepted mediaType for image selection, can be one of: 'photo', 'video', or 'any' |
| showsSelectedCount (ios only) | bool (default true) | Whether to show the number of selected assets |
| forceJpg (ios only) | bool (default false) | Whether to convert photos to JPG. This will also convert any Live Photo into its JPG representation |
| sortOrder (ios only) | string (default 'none', supported values: 'asc', 'desc', 'none') | Applies a sort order on the creation date on how media is displayed within the albums/detail photo views when opening the image picker |
| showCropGuidelines (android only) | bool (default true) | Whether to show the 3x3 grid on top of the image during cropping |
| showCropFrame (android only) | bool (default true) | Whether to show crop frame during cropping |
| hideBottomControls (android only) | bool (default false) | Whether to display bottom controls |

1
index.d.ts vendored
View File

@ -28,6 +28,7 @@ declare module "react-native-image-crop-picker" {
mediaType?: string;
showsSelectedCount?: boolean;
forceJpg?: boolean;
sortOrder?: 'none' | 'asc' | 'desc';
showCropGuidelines?: boolean;
hideBottomControls?: boolean;
enableRotationGesture?: boolean;

View File

@ -242,6 +242,14 @@ static CGSize CGSizeScale(CGSize size, CGFloat scale) {
default:
break;
}
if ([self.imagePickerController.sortOrder isEqualToString:@"asc"]) {
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending: YES]];
}
if ([self.imagePickerController.sortOrder isEqualToString:@"desc"]) {
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending: NO]];
}
self.fetchResult = [PHAsset fetchAssetsInAssetCollection:self.assetCollection options:options];

View File

@ -41,6 +41,7 @@ typedef NS_ENUM(NSUInteger, QBImagePickerMediaType) {
@property (nonatomic, assign) BOOL allowsMultipleSelection;
@property (nonatomic, assign) NSUInteger minimumNumberOfSelection;
@property (nonatomic, assign) NSUInteger maximumNumberOfSelection;
@property (nonatomic, strong) NSString* sortOrder;
@property (nonatomic, copy) NSString *prompt;
@property (nonatomic, assign) BOOL showsNumberOfSelectedAssets;

View File

@ -91,6 +91,7 @@ RCT_EXPORT_MODULE();
@"mediaType": @"any",
@"showsSelectedCount": @YES,
@"forceJpg": @NO,
@"sortOrder": @"none",
@"cropperCancelText": @"Cancel",
@"cropperChooseText": @"Choose"
};
@ -316,6 +317,7 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
imagePickerController.minimumNumberOfSelection = abs([[self.options objectForKey:@"minFiles"] intValue]);
imagePickerController.maximumNumberOfSelection = abs([[self.options objectForKey:@"maxFiles"] intValue]);
imagePickerController.showsNumberOfSelectedAssets = [[self.options objectForKey:@"showsSelectedCount"] boolValue];
imagePickerController.sortOrder = [self.options objectForKey:@"sortOrder"];
NSArray *smartAlbums = [self.options objectForKey:@"smartAlbums"];
if (smartAlbums != nil) {
@ -607,7 +609,7 @@ RCT_EXPORT_METHOD(openCropper:(NSDictionary *)options
[lock lock];
@autoreleasepool {
UIImage *imgT = [UIImage imageWithData:imageData];
Boolean forceJpg = [[self.options valueForKey:@"forceJpg"] boolValue];
NSNumber *compressQuality = [self.options valueForKey:@"compressImageQuality"];