feat(iOS): Include subtype in get albums. (#526)

This commit is contained in:
Théo Poizat
2023-09-01 16:15:16 +02:00
committed by GitHub
parent 5f1ecdf619
commit 07fef8f5e7
4 changed files with 49 additions and 1 deletions
+1
View File
@@ -206,6 +206,7 @@ Returns a Promise with a list of albums
Array of `Album` object
* title: {string}
* count: {number}
* subtype: {string | undefined} : See AlbumSubType type for possible values. iOS only.
---
+26 -1
View File
@@ -262,9 +262,11 @@ RCT_EXPORT_METHOD(getAlbums:(NSDictionary *)params
// Enumerate assets within the collection
PHFetchResult<PHAsset *> *const assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:obj options:assetFetchOptions];
if (assetsFetchResult.count > 0) {
NSString *subtypeString = subTypeLabelForCollection(obj);
[result addObject:@{
@"title": [obj localizedTitle],
@"count": @(assetsFetchResult.count)
@"count": @(assetsFetchResult.count),
@"subtype": subtypeString
}];
}
}];
@@ -685,6 +687,29 @@ RCT_EXPORT_METHOD(getPhotoByInternalID:(NSString *)internalId
}, false);
}
NSString *subTypeLabelForCollection(PHAssetCollection *assetCollection) {
PHAssetCollectionSubtype subtype = assetCollection.assetCollectionSubtype;
switch (subtype) {
case PHAssetCollectionSubtypeAlbumRegular:
return @"AlbumRegular";
case PHAssetCollectionSubtypeAlbumSyncedEvent:
return @"AlbumSyncedEvent";
case PHAssetCollectionSubtypeAlbumSyncedFaces:
return @"AlbumSyncedFaces";
case PHAssetCollectionSubtypeAlbumSyncedAlbum:
return @"AlbumSyncedAlbum";
case PHAssetCollectionSubtypeAlbumImported:
return @"AlbumImported";
case PHAssetCollectionSubtypeAlbumMyPhotoStream:
return @"AlbumMyPhotoStream";
case PHAssetCollectionSubtypeAlbumCloudShared:
return @"AlbumCloudShared";
default:
return @"Unknown";
}
}
- (NSArray<NSString *> *) mediaSubTypeLabelsForAsset:(PHAsset *)asset {
PHAssetMediaSubtype subtype = asset.mediaSubtypes;
NSMutableArray<NSString*> *mediaSubTypeLabels = [NSMutableArray array];
+11
View File
@@ -158,9 +158,20 @@ export type GetAlbumsParams = {
assetType?: AssetType;
};
export type AlbumSubType =
| 'AlbumRegular'
| 'AlbumSyncedEvent'
| 'AlbumSyncedFaces'
| 'AlbumSyncedAlbum'
| 'AlbumImported'
| 'AlbumMyPhotoStream'
| 'AlbumCloudShared'
| 'Unknown';
export type Album = {
title: string;
count: number;
subtype?: AlbumSubType;
};
/**
+11
View File
@@ -3,9 +3,20 @@
// and we want to stay compatible with those
import {TurboModuleRegistry, TurboModule} from 'react-native';
export type AlbumSubType =
| 'AlbumRegular'
| 'AlbumSyncedEvent'
| 'AlbumSyncedFaces'
| 'AlbumSyncedAlbum'
| 'AlbumImported'
| 'AlbumMyPhotoStream'
| 'AlbumCloudShared'
| 'Unknown';
type Album = {
title: string;
count: number;
subtype?: AlbumSubType;
};
type SubTypes =