Jelajahi Sumber

createNameSubFolder function

Marino Faggiana 8 tahun lalu
induk
melakukan
24fc796d31

+ 14 - 0
iOSClient/Main/CCMain.m

@@ -1456,6 +1456,8 @@
     for (PHAsset *asset in assets) {
         
         NSString *fileNameUpload;
+        NSDate *assetDate = asset.creationDate;
+        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
         
         // Create file name for upload
         if (cryptated) {
@@ -1465,6 +1467,18 @@
             fileNameUpload = [CCUtility createFileNameFromAsset:asset];
         }
 
+        // Create serverUrl if use sub folder
+        if (useSubFolder) {
+            
+            [formatter setDateFormat:@"yyyy"];
+            NSString *yearString = [formatter stringFromDate:assetDate];
+        
+            [formatter setDateFormat:@"MM"];
+            NSString *monthString = [formatter stringFromDate:assetDate];
+            
+            serverUrl = [NSString stringWithFormat:@"%@/%@/%@", folderPhotos, yearString, monthString];
+        }
+        
         // Check if is in upload 
         NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@) AND (fileName == %@) AND (session != NULL) AND (session != '')", app.activeAccount, directoryID, fileNameUpload];
         NSArray *isRecordInSessions = [CCCoreData getTableMetadataWithPredicate:predicate context:nil];

+ 4 - 3
iOSClient/PhotosCameraUpload/CCPhotosCameraUpload.m

@@ -1157,11 +1157,11 @@
 - (void)uploadAssetsToNetwork:(NSMutableArray *)newItemsToUpload assetsFull:(BOOL)assetsFull
 {
     NSMutableArray *newItemsPHAssetToUpload = [[NSMutableArray alloc] init];
-    NSMutableOrderedSet *datesSubFolder = [[NSMutableOrderedSet alloc] init];
     
     NSString *folderPhotos = [CCCoreData getCameraUploadFolderNamePathActiveAccount:app.activeAccount activeUrl:app.activeUrl typeCloud:app.typeCloud];
     BOOL createSubfolders = [CCCoreData getCameraUploadCreateSubfolderActiveAccount:app.activeAccount];
     
+    /*
     for (ALAsset *asset in newItemsToUpload) {
         
         NSURL *url = [asset valueForProperty:@"ALAssetPropertyAssetURL"];
@@ -1184,13 +1184,14 @@
             [datesSubFolder addObject:monthString];
         }
     }
+    */
     
     // Use subfolders
     if (createSubfolders) {
         
-        for (NSString *dateSubFolder in datesSubFolder) {
+        for (NSString *dateSubFolder in [CCUtility createNameSubFolder:newItemsToUpload]) {
             
-            if(![self createFolder:[NSString stringWithFormat:@"%@/%@", folderPhotos, dateSubFolder]]) {
+            if (![self createFolder:[NSString stringWithFormat:@"%@/%@", folderPhotos, dateSubFolder]]) {
                 
                 [self endLoadingAssets];
                 

+ 1 - 1
iOSClient/Utility/CCUtility.h

@@ -155,7 +155,7 @@
 
 + (NSString *)localizableBrand:(NSString *)localize table:(NSString *)table;
 
-+ (NSArray *)createNameSubFolder:(NSArray *)alassets;
++ (NSArray *)createNameSubFolder:(NSArray *)assets;
 
 // ===== CCMetadata =====
 

+ 19 - 3
iOSClient/Utility/CCUtility.m

@@ -716,14 +716,30 @@
     return translate;
 }
 
-+ (NSArray *)createNameSubFolder:(NSArray *)alassets
++ (NSArray *)createNameSubFolder:(NSArray *)assets
 {
     NSMutableOrderedSet *datesSubFolder = [[NSMutableOrderedSet alloc] init];
     
-    for (PHAsset *asset in alassets) {
+    for (id asset in assets) {
         
-        NSDate *assetDate = asset.creationDate;
+        NSDate *assetDate;
+        
+        if ([asset isKindOfClass:[PHAsset class]]) {
+            
+            PHAsset *phAsset = (PHAsset *)asset;
+            assetDate = phAsset.creationDate;
+        }
+        
+        if ([asset isKindOfClass:[ALAsset class]]) {
             
+            ALAsset *alAsset = (ALAsset *)asset;
+            NSURL *url = [alAsset valueForProperty:@"ALAssetPropertyAssetURL"];
+            PHFetchResult *fetchResult = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil];
+            PHAsset *phAsset = [fetchResult firstObject];
+            
+            assetDate = phAsset.creationDate;
+        }
+        
         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
         [formatter setDateFormat:@"yyyy"];
         NSString *yearString = [formatter stringFromDate:assetDate];