From 169485e015828245209e12895de2f76d652944bb Mon Sep 17 00:00:00 2001 From: Ran Greenberg Date: Thu, 11 Aug 2016 16:27:26 +0300 Subject: [PATCH] refactor --- .../CKGalleryViewManager.m | 80 +++++++------------ src/CameraKitGalleryView.ios.js | 8 +- 2 files changed, 31 insertions(+), 57 deletions(-) diff --git a/ios/lib/ReactNativeCameraKit/CKGalleryViewManager.m b/ios/lib/ReactNativeCameraKit/CKGalleryViewManager.m index aa8cf8c..6574ea6 100644 --- a/ios/lib/ReactNativeCameraKit/CKGalleryViewManager.m +++ b/ios/lib/ReactNativeCameraKit/CKGalleryViewManager.m @@ -49,7 +49,7 @@ //supported -@property (nonatomic, strong) NSDictionary *supported; +@property (nonatomic, strong) NSDictionary *fileTypeSupport; @property (nonatomic, strong) NSArray *supportedFileTypesArray; @@ -180,54 +180,46 @@ static NSString * const CellReuseIdentifier = @"Cell"; } --(void)setSupported:(NSDictionary *)supported { - _supported = supported; - - - NSArray *supportedFileTypesArray; - UIColor *unsupportedOverlayColor; - UIImage *unsupportedImage; - NSString *unsupportedText; - UIColor *unsupportedTextColor; +-(void)setFileTypeSupport:(NSDictionary *)supported { + _fileTypeSupport = supported; NSMutableDictionary *supportedDict = [[NSMutableDictionary alloc] init]; - // SUPPORTED_FILE_TYPES - id supportedFileTypesId = self.supported[SUPPORTED_FILE_TYPES]; + id supportedFileTypesId = self.fileTypeSupport[SUPPORTED_FILE_TYPES]; if (supportedFileTypesId) { - supportedFileTypesArray = [RCTConvert NSArray:supportedFileTypesId]; - [supportedDict setValue:supportedFileTypesArray forKey:SUPPORTED_FILE_TYPES]; + NSArray *supportedFileTypesArray = [RCTConvert NSArray:supportedFileTypesId]; + supportedDict[SUPPORTED_FILE_TYPES] = supportedFileTypesArray; self.supportedFileTypesArray = [NSArray arrayWithArray:supportedFileTypesArray]; } // UNSUPPORTED_OVERLAY_COLOR - id unsupportedOverlayColorId = self.supported[UNSUPPORTED_OVERLAY_COLOR]; + id unsupportedOverlayColorId = self.fileTypeSupport[UNSUPPORTED_OVERLAY_COLOR]; if (unsupportedOverlayColorId) { - unsupportedOverlayColor = [RCTConvert UIColor:unsupportedOverlayColorId]; - [supportedDict setValue:unsupportedOverlayColor forKey:UNSUPPORTED_OVERLAY_COLOR]; + UIColor *unsupportedOverlayColor = [RCTConvert UIColor:unsupportedOverlayColorId]; + supportedDict[UNSUPPORTED_OVERLAY_COLOR] = unsupportedOverlayColor; } // UNSUPPORTED_OVERLAY_COLOR - id unsupportedImageId = self.supported[UNSUPPORTED_IMAGE]; + id unsupportedImageId = self.fileTypeSupport[UNSUPPORTED_IMAGE]; if (unsupportedImageId) { - unsupportedImage = [RCTConvert UIImage:unsupportedImageId]; - [supportedDict setValue:unsupportedImage forKey:UNSUPPORTED_IMAGE]; + UIImage *unsupportedImage = [RCTConvert UIImage:unsupportedImageId]; + supportedDict[UNSUPPORTED_IMAGE] = unsupportedImage; } // UNSUPPORTED_TEXT - id unsupportedTextId = self.supported[UNSUPPORTED_TEXT]; + id unsupportedTextId = self.fileTypeSupport[UNSUPPORTED_TEXT]; if (unsupportedTextId) { - unsupportedText = [RCTConvert NSString:unsupportedTextId]; - [supportedDict setValue:unsupportedText forKey:UNSUPPORTED_TEXT]; + NSString *unsupportedText = [RCTConvert NSString:unsupportedTextId]; + supportedDict[UNSUPPORTED_TEXT] = unsupportedText; } // UNSUPPORTED_TEXT_COLOR - id unsupportedTextColorId = self.supported[UNSUPPORTED_TEXT_COLOR]; + id unsupportedTextColorId = self.fileTypeSupport[UNSUPPORTED_TEXT_COLOR]; if (unsupportedTextColorId) { - unsupportedTextColor = [RCTConvert UIColor:unsupportedTextColorId]; - [supportedDict setValue:unsupportedTextColor forKey:UNSUPPORTED_TEXT_COLOR]; + UIColor *unsupportedTextColor = [RCTConvert UIColor:unsupportedTextColorId]; + supportedDict[UNSUPPORTED_TEXT_COLOR] = unsupportedTextColor; } [CKGalleryCollectionViewCell setSupported:supportedDict]; @@ -240,8 +232,6 @@ static NSString * const CellReuseIdentifier = @"Cell"; if ([albumName caseInsensitiveCompare:@"all photos"] == NSOrderedSame || !albumName || [albumName isEqualToString:@""]) { PHFetchResult *allPhotosFetchResults = [PHAsset fetchAssetsWithOptions:self.fetchOptions]; - - [self upadateCollectionView:allPhotosFetchResults animated:(self.galleryData != nil)]; return; } @@ -276,48 +266,32 @@ static NSString * const CellReuseIdentifier = @"Cell"; NSString *fileType = [self extractFileTypeForAsset:asset]; - - - __block CKGalleryCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellReuseIdentifier forIndexPath:indexPath]; cell.isSelected = ((NSNumber*)assetDictionary[@"isSelected"]).boolValue; - cell.isSupported = YES; +// cell.isSupported = YES; + + if (self.supportedFileTypesArray) { + cell.isSupported = [self.supportedFileTypesArray containsObject:[fileType lowercaseString]]; + } cell.representedAssetIdentifier = asset.localIdentifier; [self.imageManager requestImageForAsset:asset targetSize:CGSizeMake(self.cellSize.width*IMAGE_SIZE_MULTIPLIER, self.cellSize.height*IMAGE_SIZE_MULTIPLIER) contentMode:PHImageContentModeDefault - options:self.imageRequestOptions + options:nil resultHandler:^(UIImage *result, NSDictionary *info) { + if ([cell.representedAssetIdentifier isEqualToString:asset.localIdentifier]) { cell.thumbnailImage = result; - - if (self.supportedFileTypesArray) { - - if ([self.supportedFileTypesArray containsObject:[fileType lowercaseString]]) { - cell.isSupported = YES; - } - - else { - cell.isSupported = NO; - } - } } }]; - return cell; } -(NSString*)extractFileTypeForAsset:(PHAsset*)asset { - NSString *fileName = [asset valueForKey:@"filename"]; - NSArray *splitFileName = [fileName componentsSeparatedByString:@"."]; - if (splitFileName.count > 1) { - return splitFileName[1]; - } - - return nil; + return [asset valueForKey:@"uniformTypeIdentifier"]; } @@ -411,7 +385,7 @@ RCT_EXPORT_VIEW_PROPERTY(onTapImage, RCTDirectEventBlock); RCT_EXPORT_VIEW_PROPERTY(selectedImageIcon, UIImage); RCT_EXPORT_VIEW_PROPERTY(unSelectedImageIcon, UIImage); RCT_EXPORT_VIEW_PROPERTY(selectedImages, NSArray); -RCT_EXPORT_VIEW_PROPERTY(supported, NSDictionary); +RCT_EXPORT_VIEW_PROPERTY(fileTypeSupport, NSDictionary); diff --git a/src/CameraKitGalleryView.ios.js b/src/CameraKitGalleryView.ios.js index 823081b..a1be4a3 100644 --- a/src/CameraKitGalleryView.ios.js +++ b/src/CameraKitGalleryView.ios.js @@ -18,10 +18,10 @@ export default class CameraKitGalleryView extends Component { const transformedProps = {...this.props}; transformedProps.albumName = this.props.albumName ? this.props.albumName : ALL_PHOTOS; transformedProps.columnCount = this.props.columnCount && this.props.columnCount > 0 ? this.props.columnCount : DEFAULT_COLUMN_COUNT; - _.update(transformedProps, 'supported.unsupportedOverlayColor', (c) => processColor(c)); - _.update(transformedProps, 'supported.unsupportedTextColor', (c) => processColor(c)); - if (transformedProps.supported.unsupportedImage) { - _.update(transformedProps, 'supported.unsupportedImage', (image) => resolveAssetSource(image)); + _.update(transformedProps, 'fileTypeSupport.unsupportedOverlayColor', (c) => processColor(c)); + _.update(transformedProps, 'fileTypeSupport.unsupportedTextColor', (c) => processColor(c)); + if (transformedProps.fileTypeSupport.unsupportedImage) { + _.update(transformedProps, 'fileTypeSupport.unsupportedImage', (image) => resolveAssetSource(image)); } return