From cd0af6572878ebaa171e40f0cb3a35ae5e877dc2 Mon Sep 17 00:00:00 2001 From: Ran Greenberg Date: Thu, 20 Oct 2016 16:36:44 +0300 Subject: [PATCH] getImagesForIds return array will now keep the same order of images id array input --- .../ReactNativeCameraKit/CKGalleryManager.m | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/ios/lib/ReactNativeCameraKit/CKGalleryManager.m b/ios/lib/ReactNativeCameraKit/CKGalleryManager.m index 2c2eaa6..90d1573 100644 --- a/ios/lib/ReactNativeCameraKit/CKGalleryManager.m +++ b/ios/lib/ReactNativeCameraKit/CKGalleryManager.m @@ -194,7 +194,7 @@ RCT_EXPORT_METHOD(getImagesForIds:(NSArray*)imagesIdArray resolve:(RCTPromiseResolveBlock)resolve reject:(__unused RCTPromiseRejectBlock)reject) { - NSMutableArray *assetsArray = [[NSMutableArray alloc] init]; + NSMutableArray *assetsArray = [[NSMutableArray alloc] initWithArray:imagesIdArray]; PHImageRequestOptions *imageRequestOptions = [[PHImageRequestOptions alloc] init]; imageRequestOptions.synchronous = YES; @@ -205,23 +205,33 @@ RCT_EXPORT_METHOD(getImagesForIds:(NSArray*)imagesIdArray NSDictionary *assetInfoDict = [CKGalleryViewManager infoForAsset:asset imageRequestOptions:imageRequestOptions]; NSString *assetLocalId = asset.localIdentifier; - + if (assetInfoDict && assetInfoDict[@"uri"] && assetInfoDict[@"size"] && assetInfoDict[@"name"] && assetLocalId) { - - - [assetsArray addObject:@{@"uri": assetInfoDict[@"uri"], - @"size": assetInfoDict[@"size"], - @"name": assetInfoDict[@"name"], - @"id": assetLocalId}]; + + NSUInteger originalArrayIndex = [imagesIdArray indexOfObject:assetLocalId]; + + [assetsArray replaceObjectAtIndex:originalArrayIndex withObject:@{@"uri": assetInfoDict[@"uri"], + @"size": assetInfoDict[@"size"], + @"name": assetInfoDict[@"name"], + @"id": assetLocalId}]; + } + } + + NSMutableArray *resolveArray = [NSMutableArray new]; + for (id obj in assetsArray) { + if ([obj isKindOfClass:[NSDictionary class]]) { + [resolveArray addObject:obj]; } } if (resolve) { - resolve(@{@"images": assetsArray}); + resolve(@{@"images": resolveArray}); } } + + RCT_EXPORT_METHOD(checkDevicePhotosAuthorizationStatus:(RCTPromiseResolveBlock)resolve reject:(__unused RCTPromiseRejectBlock)reject) { NSNumber *status = [CKGalleryManager checkDeviceGalleryAuthorizationStatus];