mirror of
https://github.com/status-im/react-native-cameraroll.git
synced 2025-02-05 06:13:27 +00:00
* Fix #45 ordering of photos when groupTypes is All * Fix backwards compatible album name for all photos
This commit is contained in:
parent
2b6afeac3d
commit
f5973f8ebe
@ -216,13 +216,11 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
|
||||
collectionFetchOptions.predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"localizedTitle == '%@'", groupName]];
|
||||
}
|
||||
|
||||
requestPhotoLibraryAccess(reject, ^{
|
||||
PHFetchResult<PHAssetCollection *> *const assetCollectionFetchResult = [PHAssetCollection fetchAssetCollectionsWithType:collectionType subtype:collectionSubtype options:collectionFetchOptions];
|
||||
[assetCollectionFetchResult enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull assetCollection, NSUInteger collectionIdx, BOOL * _Nonnull stopCollections) {
|
||||
// Enumerate assets within the collection
|
||||
PHFetchResult<PHAsset *> *const assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:assetFetchOptions];
|
||||
BOOL __block stopCollections_;
|
||||
NSString __block *currentCollectionName;
|
||||
|
||||
[assetsFetchResult enumerateObjectsUsingBlock:^(PHAsset * _Nonnull asset, NSUInteger assetIdx, BOOL * _Nonnull stopAssets) {
|
||||
requestPhotoLibraryAccess(reject, ^{
|
||||
void (^collectAsset)(PHAsset*, NSUInteger, BOOL*) = ^(PHAsset * _Nonnull asset, NSUInteger assetIdx, BOOL * _Nonnull stopAssets) {
|
||||
NSString *const uri = [NSString stringWithFormat:@"ph://%@", [asset localIdentifier]];
|
||||
if (afterCursor && !foundAfter) {
|
||||
if ([afterCursor isEqualToString:uri]) {
|
||||
@ -258,7 +256,7 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
|
||||
// If we've accumulated enough results to resolve a single promise
|
||||
if (first == assets.count) {
|
||||
*stopAssets = YES;
|
||||
*stopCollections = YES;
|
||||
stopCollections_ = YES;
|
||||
hasNextPage = YES;
|
||||
RCTAssert(resolvedPromise == NO, @"Resolved the promise before we finished processing the results.");
|
||||
RCTResolvePromise(resolve, assets, hasNextPage);
|
||||
@ -285,7 +283,7 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
|
||||
[assets addObject:@{
|
||||
@"node": @{
|
||||
@"type": assetMediaTypeLabel, // TODO: switch to mimeType?
|
||||
@"group_name": [assetCollection localizedTitle],
|
||||
@"group_name": currentCollectionName,
|
||||
@"image": @{
|
||||
@"uri": uri,
|
||||
@"height": @([asset pixelHeight]),
|
||||
@ -303,8 +301,22 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
|
||||
} : @{})
|
||||
}
|
||||
}];
|
||||
};
|
||||
|
||||
if ([groupTypes isEqualToString:@"all"]) {
|
||||
PHFetchResult <PHAsset *> *const assetFetchResult = [PHAsset fetchAssetsWithOptions: assetFetchOptions];
|
||||
currentCollectionName = @"All Photos";
|
||||
[assetFetchResult enumerateObjectsUsingBlock:collectAsset];
|
||||
} else {
|
||||
PHFetchResult<PHAssetCollection *> *const assetCollectionFetchResult = [PHAssetCollection fetchAssetCollectionsWithType:collectionType subtype:collectionSubtype options:collectionFetchOptions];
|
||||
[assetCollectionFetchResult enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull assetCollection, NSUInteger collectionIdx, BOOL * _Nonnull stopCollections) {
|
||||
// Enumerate assets within the collection
|
||||
PHFetchResult<PHAsset *> *const assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:assetFetchOptions];
|
||||
currentCollectionName = [assetCollection localizedTitle];
|
||||
[assetsFetchResult enumerateObjectsUsingBlock:collectAsset];
|
||||
*stopCollections = stopCollections_;
|
||||
}];
|
||||
}];
|
||||
}
|
||||
|
||||
// If we get this far and haven't resolved the promise yet, we reached the end of the list of photos
|
||||
if (!resolvedPromise) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user