Marino Faggiana 8 жил өмнө
parent
commit
ab553f76fe

+ 3 - 21
Nextcloud.xcodeproj/project.pbxproj

@@ -100,12 +100,6 @@
 		F70022FE1EC4C9100080073F /* UtilsFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = F70022A01EC4C9100080073F /* UtilsFramework.m */; };
 		F70022FF1EC4C9100080073F /* UtilsFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = F70022A01EC4C9100080073F /* UtilsFramework.m */; };
 		F70023001EC4C9100080073F /* UtilsFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = F70022A01EC4C9100080073F /* UtilsFramework.m */; };
-		F708CF6D1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF4E1E56E8CB00271D8B /* TableMetadata+CoreDataClass.m */; };
-		F708CF6E1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF4E1E56E8CB00271D8B /* TableMetadata+CoreDataClass.m */; };
-		F708CF6F1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF4E1E56E8CB00271D8B /* TableMetadata+CoreDataClass.m */; };
-		F708CF701E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF501E56E8CB00271D8B /* TableMetadata+CoreDataProperties.m */; };
-		F708CF711E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF501E56E8CB00271D8B /* TableMetadata+CoreDataProperties.m */; };
-		F708CF721E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF501E56E8CB00271D8B /* TableMetadata+CoreDataProperties.m */; };
 		F708CF731E56E8CC00271D8B /* TableLocalFile+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */; };
 		F708CF741E56E8CC00271D8B /* TableLocalFile+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */; };
 		F708CF751E56E8CC00271D8B /* TableLocalFile+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */; };
@@ -887,10 +881,6 @@
 		F70211FB1BAC56E9003FC03E /* CCMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMain.m; sourceTree = "<group>"; };
 		F7053E3C1C639DF500741EA5 /* CCUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCUtility.h; sourceTree = "<group>"; };
 		F7053E3D1C639DF500741EA5 /* CCUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCUtility.m; sourceTree = "<group>"; };
-		F708CF4D1E56E8CB00271D8B /* TableMetadata+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableMetadata+CoreDataClass.h"; sourceTree = "<group>"; };
-		F708CF4E1E56E8CB00271D8B /* TableMetadata+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableMetadata+CoreDataClass.m"; sourceTree = "<group>"; };
-		F708CF4F1E56E8CB00271D8B /* TableMetadata+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableMetadata+CoreDataProperties.h"; sourceTree = "<group>"; };
-		F708CF501E56E8CB00271D8B /* TableMetadata+CoreDataProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableMetadata+CoreDataProperties.m"; sourceTree = "<group>"; };
 		F708CF511E56E8CB00271D8B /* TableLocalFile+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableLocalFile+CoreDataClass.h"; sourceTree = "<group>"; };
 		F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableLocalFile+CoreDataClass.m"; sourceTree = "<group>"; };
 		F708CF531E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableLocalFile+CoreDataProperties.h"; sourceTree = "<group>"; };
@@ -1096,6 +1086,7 @@
 		F721372F1BAFF0920012B613 /* CCTemplates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTemplates.h; sourceTree = "<group>"; };
 		F72137301BAFF0920012B613 /* CCTemplates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCTemplates.m; sourceTree = "<group>"; };
 		F7229B491DF71BB300E8C4E7 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = SOURCE_ROOT; };
+		F72651E61ED03F4B002231E0 /* cryptocloud 10.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "cryptocloud 10.xcdatamodel"; sourceTree = "<group>"; };
 		F7296A601C8880C9001A7809 /* CCCellShareExt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCCellShareExt.h; sourceTree = "<group>"; };
 		F7296A611C8880C9001A7809 /* CCCellShareExt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCCellShareExt.m; sourceTree = "<group>"; };
 		F7296A621C8880C9001A7809 /* CCCellShareExt.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CCCellShareExt.xib; sourceTree = "<group>"; };
@@ -3125,10 +3116,6 @@
 				F70022331EC49BBE0080073F /* TableCertificates+CoreDataClass.m */,
 				F70022341EC49BBE0080073F /* TableCertificates+CoreDataProperties.h */,
 				F70022351EC49BBE0080073F /* TableCertificates+CoreDataProperties.m */,
-				F708CF4D1E56E8CB00271D8B /* TableMetadata+CoreDataClass.h */,
-				F708CF4E1E56E8CB00271D8B /* TableMetadata+CoreDataClass.m */,
-				F708CF4F1E56E8CB00271D8B /* TableMetadata+CoreDataProperties.h */,
-				F708CF501E56E8CB00271D8B /* TableMetadata+CoreDataProperties.m */,
 				F708CF511E56E8CB00271D8B /* TableLocalFile+CoreDataClass.h */,
 				F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */,
 				F708CF531E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.h */,
@@ -4219,7 +4206,6 @@
 				F708CF981E56E8CC00271D8B /* TableAccount+CoreDataClass.m in Sources */,
 				F71459BC1D12E3B700CAFEEC /* Reachability.m in Sources */,
 				F71459BD1D12E3B700CAFEEC /* UIImage+animatedGIF.m in Sources */,
-				F708CF6E1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */,
 				F71459BE1D12E3B700CAFEEC /* UIImage+Reflection.m in Sources */,
 				F73CC06D1E813DFF006E3047 /* BKPasscodeField.m in Sources */,
 				F70022C01EC4C9100080073F /* OCFileDto.m in Sources */,
@@ -4304,7 +4290,6 @@
 				F7145A0E1D12E3B700CAFEEC /* AESCrypt.m in Sources */,
 				F70022DE1EC4C9100080073F /* OCWebDAVClient.m in Sources */,
 				F7145A111D12E3B700CAFEEC /* PPImageScrollingTableViewCell.m in Sources */,
-				F708CF711E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4348,7 +4333,6 @@
 				F70022E81EC4C9100080073F /* OCXMLServerErrorsParser.m in Sources */,
 				F70022D31EC4C9100080073F /* OCUserProfile.m in Sources */,
 				F74344791E127EA1001CC831 /* CCError.m in Sources */,
-				F708CF6F1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */,
 				F70022D01EC4C9100080073F /* OCShareUser.m in Sources */,
 				F70022EB1EC4C9100080073F /* OCXMLShareByLinkParser.m in Sources */,
 				F743447B1E127EAC001CC831 /* CCUtility.m in Sources */,
@@ -4378,7 +4362,6 @@
 				F73CC06B1E813DFF006E3047 /* BKPasscodeDummyViewController.m in Sources */,
 				F708CF991E56E8CC00271D8B /* TableAccount+CoreDataClass.m in Sources */,
 				F7FC88FA1E140558006D0506 /* cryptocloud.xcdatamodeld in Sources */,
-				F708CF721E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */,
 				F74344631E127D79001CC831 /* CCBKPasscode.m in Sources */,
 				F786AC9E1EBDC88B0055AE9D /* NCDatabase.swift in Sources */,
 				F74344661E127E35001CC831 /* CCCoreData.m in Sources */,
@@ -4423,7 +4406,6 @@
 				F762CB071EACB66200B38484 /* XLFormOptionsObject.m in Sources */,
 				F7C525A01E3B48B700FFE02C /* CCNotification.swift in Sources */,
 				F77B0DFB1D118A16002130FE /* NYXProgressiveImageView.m in Sources */,
-				F708CF701E56E8CC00271D8B /* TableMetadata+CoreDataProperties.m in Sources */,
 				F7F54D0E1E5B14C800E19C62 /* UIImage+MWPhotoBrowser.m in Sources */,
 				F7F54D091E5B14C800E19C62 /* MWPhoto.m in Sources */,
 				F77B0DFF1D118A16002130FE /* OCNetworking.m in Sources */,
@@ -4431,7 +4413,6 @@
 				F70022DA1EC4C9100080073F /* OCHTTPRequestOperation.m in Sources */,
 				F77B0E021D118A16002130FE /* CCPhotosCameraUpload.m in Sources */,
 				F70022A11EC4C9100080073F /* AFHTTPSessionManager.m in Sources */,
-				F708CF6D1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */,
 				F762CB041EACB66200B38484 /* XLFormSwitchCell.m in Sources */,
 				F77B0E031D118A16002130FE /* CCShareInfoCMOC.m in Sources */,
 				F77B0E041D118A16002130FE /* UIImage+animatedGIF.m in Sources */,
@@ -5392,6 +5373,7 @@
 		F78088E51DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld */ = {
 			isa = XCVersionGroup;
 			children = (
+				F72651E61ED03F4B002231E0 /* cryptocloud 10.xcdatamodel */,
 				F77EB61C1EC07913003F814F /* cryptocloud 9.xcdatamodel */,
 				F76B3CDC1EAE4D9100921AC9 /* cryptocloud 8.xcdatamodel */,
 				F7C00D4A1E2D10BB0032160B /* cryptocloud 7.xcdatamodel */,
@@ -5401,7 +5383,7 @@
 				F78088E81DD3A1DB005C5A7C /* cryptocloud 4.xcdatamodel */,
 				F78088E91DD3A1DB005C5A7C /* cryptocloud.xcdatamodel */,
 			);
-			currentVersion = F77EB61C1EC07913003F814F /* cryptocloud 9.xcdatamodel */;
+			currentVersion = F72651E61ED03F4B002231E0 /* cryptocloud 10.xcdatamodel */;
 			path = cryptocloud.xcdatamodeld;
 			sourceTree = "<group>";
 			versionGroupType = wrapper.xcdatamodel;

+ 3 - 3
iOSClient/AppDelegate.m

@@ -1350,7 +1350,9 @@
     // ------------------------- <selectorUploadAutomaticAll> -------------------------
     
     // Verify num error MAX 10 after STOP
-    NSUInteger errorCount = [TableMetadata MR_countOfEntitiesWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (sessionSelector == %@) AND ((sessionTaskIdentifier == %i) OR (sessionTaskIdentifierPlist == %i))", app.activeAccount, selectorUploadAutomaticAll, k_taskIdentifierError, k_taskIdentifierError]];
+    NSArray *metadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"account = %@ AND sessionSelector = %@ AND (sessionTaskIdentifier = %i OR sessionTaskIdentifierPlist = %i)", app.activeAccount, selectorUploadAutomaticAll, k_taskIdentifierError, k_taskIdentifierError] sorted:nil ascending:NO];
+    
+    NSInteger errorCount = [metadatas count];
     
     if (errorCount >= 10) {
         
@@ -1603,7 +1605,6 @@
      
         [CCCoreData flushTableDirectoryAccount:nil];
         [CCCoreData flushTableLocalFileAccount:nil];
-        [CCCoreData flushTableMetadataAccount:nil];
     }
     
     if (([actualVersion compare:@"2.15" options:NSNumericSearch] == NSOrderedAscending)) {
@@ -1614,7 +1615,6 @@
     if (([actualVersion compare:@"2.17" options:NSNumericSearch] == NSOrderedAscending)) {
         
         [CCCoreData clearAllDateReadDirectory];
-        [CCCoreData flushTableMetadataAccount:nil];
     }
     
     if (([actualVersion compare:@"2.17.3" options:NSNumericSearch] == NSOrderedAscending)) {

+ 6 - 6
iOSClient/Favorites/CCSynchronize.m

@@ -157,9 +157,9 @@
     
     NSArray *allRecordFavorite = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"(account == %@) AND (favorite == 1)", app.activeAccount] sorted:nil ascending:NO];
     
-    for (TableMetadata *tableMetadata in allRecordFavorite)
-        if (![filesID containsObject:tableMetadata.fileID])
-            [[NCManageDatabase sharedInstance] setMetadataFavorite:tableMetadata.fileID favorite:NO];
+    for (tableMetadata *metadata in allRecordFavorite)
+        if (![filesID containsObject:metadata.fileID])
+            [[NCManageDatabase sharedInstance] setMetadataFavorite:metadata.fileID favorite:NO];
     
             //[CCCoreData setMetadataFavoriteFileID:tableMetadata.fileID favorite:NO activeAccount:app.activeAccount context:nil];
     
@@ -284,7 +284,7 @@
         
         NSArray *tableMetadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"(account = %@) AND (directoryID = %@) AND (session = '')", app.activeAccount, metadataNet.directoryID] sorted:nil ascending:NO];
         
-        for (TableMetadata *record in tableMetadatas) {
+        for (tableMetadata *record in tableMetadatas) {
             
             // reject cryptated
             if (record.cryptated)
@@ -301,7 +301,7 @@
             }
             
             if (!fileIDFound)
-                [metadatasNotPresents addObject:[CCCoreData insertEntityInMetadata:record]];
+                [metadatasNotPresents addObject:record];
         }
         
         dispatch_async(dispatch_get_main_queue(), ^{
@@ -352,7 +352,7 @@
                     
                     // It's in session
                     BOOL recordInSession = NO;
-                    for (TableMetadata *record in recordsInSessions) {
+                    for (tableMetadata *record in recordsInSessions) {
                         if ([record.fileID isEqualToString:metadata.fileID]) {
                             recordInSession = YES;
                             break;

+ 0 - 7
iOSClient/FileSystem/CCCoreData.h

@@ -36,7 +36,6 @@
 #import "OCCapabilities.h"
 #import "TableAccount+CoreDataClass.h"
 #import "TableCertificates+CoreDataClass.h"
-#import "TableMetadata+CoreDataClass.h"
 #import "TableDirectory+CoreDataClass.h"
 #import "TableLocalFile+CoreDataClass.h"
 
@@ -147,11 +146,6 @@
 + (void)downloadFilePlist:(tableMetadata *)metadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl directoryUser:(NSString *)directoryUser;
 + (void)deleteFile:(tableMetadata *)metadata serverUrl:(NSString *)serverUrl directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount;
 
-// ===== Metadata <> Entity =====
-
-+ (void)insertMetadataInEntity:(tableMetadata *)metadata recordMetadata:(TableMetadata *)recordMetadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl;
-+ (tableMetadata *)insertEntityInMetadata:(TableMetadata *)recordMetadata;
-
 // ===== Utility Database =====
 
 + (void)moveCoreDataToGroup;
@@ -160,7 +154,6 @@
 //+ (void)flushTableAccount:(NSString *)account;
 + (void)flushTableDirectoryAccount:(NSString *)account;
 + (void)flushTableLocalFileAccount:(NSString *)account;
-+ (void)flushTableMetadataAccount:(NSString *)account;
 
 + (void)flushAllDatabase;
 @end

+ 7 - 110
iOSClient/FileSystem/CCCoreData.m

@@ -406,7 +406,9 @@
             // remove directory in Metadata come cazzo si fa a saperlo
             //[TableMetadata MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", activeAccount, recordDirectory.directoryID] inContext:context];
             
+            /*
             NSArray *tableMetadatas = [TableMetadata MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", activeAccount, recordDirectory.directoryID] inContext:context];
+            
             for(TableMetadata *recordMetadata in tableMetadatas) {
                 
                 // remove if in session
@@ -426,6 +428,7 @@
             }
             
             [recordDirectory MR_deleteEntityInContext:context];
+            */ 
         }
     }
 
@@ -716,6 +719,7 @@
 
 + (BOOL)isBlockZone:(NSString *)serverUrl activeAccount:(NSString *)activeAccount
 {
+    /*
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (directory == 1)", activeAccount];
     NSArray *records = [TableMetadata MR_findAllWithPredicate:predicate];
     
@@ -742,6 +746,7 @@
             }
         }
     }
+    */
     
     return NO;
 }
@@ -1289,6 +1294,8 @@
 
 + (void)deleteFile:(tableMetadata *)metadata serverUrl:(NSString *)serverUrl directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount
 {
+    if (!metadata) return;
+    
     // ----------------------------------------- FILESYSTEM ------------------------------------------
     
     [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@", directoryUser, metadata.fileID] error:nil];
@@ -1307,100 +1314,6 @@
     [[NCManageDatabase sharedInstance] deleteMetadata:[NSPredicate predicateWithFormat:@"(fileID == %@) AND (account == %@)", metadata.fileID, activeAccount]];
 }
 
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Metadata <> Entity =====
-#pragma --------------------------------------------------------------------------------------------
-
-+ (void)insertMetadataInEntity:(tableMetadata *)metadata recordMetadata:(TableMetadata *)recordMetadata activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl
-{
-    if ([activeAccount length]) recordMetadata.account = activeAccount;
-    recordMetadata.cryptated = [NSNumber numberWithBool:metadata.cryptated];
-    if (metadata.date) recordMetadata.date = metadata.date;
-    recordMetadata.directory = [NSNumber numberWithBool:metadata.directory];
-    recordMetadata.errorPasscode = [NSNumber numberWithBool:metadata.errorPasscode];
-    recordMetadata.favorite = [NSNumber numberWithBool:metadata.favorite];
-    if ([metadata.fileID length]) recordMetadata.fileID = metadata.fileID;
-    if ([metadata.directoryID length]) recordMetadata.directoryID = metadata.directoryID;
-    if ([metadata.fileName length]) recordMetadata.fileName = metadata.fileName;
-    if ([metadata.fileName length]) recordMetadata.fileNameData = [CCUtility trasformedFileNamePlistInCrypto:metadata.fileName];
-    if ([metadata.fileNamePrint length]) recordMetadata.fileNamePrint = metadata.fileNamePrint;
-    if ([metadata.assetLocalIdentifier length]) recordMetadata.assetLocalIdentifier = metadata.assetLocalIdentifier;
-    if ([metadata.model length]) recordMetadata.model = metadata.model;
-    if ([metadata.nameCurrentDevice length]) recordMetadata.nameCurrentDevice = metadata.nameCurrentDevice;
-    if ([metadata.permissions length]) recordMetadata.permissions = metadata.permissions;
-    if ([metadata.protocolCrypto length]) recordMetadata.protocol = metadata.protocolCrypto;
-    
-    if ([metadata.rev length]) recordMetadata.rev = metadata.rev;
-    
-    if (metadata.session) recordMetadata.session = metadata.session;
-    else metadata.session = @"";
-    
-    recordMetadata.sessionError = metadata.sessionError;
-    recordMetadata.sessionID = metadata.sessionID;
-    recordMetadata.sessionSelector = metadata.sessionSelector;
-    recordMetadata.sessionSelectorPost = metadata.sessionSelectorPost;
-
-    recordMetadata.sessionTaskIdentifier = [NSNumber numberWithLong:metadata.sessionTaskIdentifier];
-    recordMetadata.sessionTaskIdentifierPlist = [NSNumber numberWithLong:metadata.sessionTaskIdentifierPlist];
-    
-    if (metadata.size) recordMetadata.size = [NSNumber numberWithLong:metadata.size];
-    if ([metadata.title length]) recordMetadata.title = metadata.title;
-    recordMetadata.thumbnailExists = [NSNumber numberWithBool:metadata.thumbnailExists];
-
-    if ([metadata.type length]) recordMetadata.type = metadata.type;
-    if ([metadata.uuid length]) recordMetadata.uuid = metadata.uuid;
-
-    // inseriamo il typeFile e icona di default.
-    NSString *cameraFolderName = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderName];
-    NSString *cameraFolderPath = [[NCManageDatabase sharedInstance] getAccountCameraUploadFolderPath:activeUrl];
-    
-    [CCUtility insertTypeFileIconName:metadata directory:[self getServerUrlFromDirectoryID:metadata.directoryID activeAccount:activeAccount] cameraFolderName:cameraFolderName cameraFolderPath:cameraFolderPath];
-    
-    recordMetadata.typeFile = metadata.typeFile;
-    recordMetadata.iconName = metadata.iconName;
-}
-
-+ (tableMetadata *)insertEntityInMetadata:(TableMetadata *)recordMetadata
-{
-    tableMetadata *metadata = [[tableMetadata alloc] init];
-    
-    metadata.account = recordMetadata.account;
-    metadata.cryptated = [recordMetadata.cryptated boolValue];
-    metadata.date = recordMetadata.date;
-    metadata.directory = [recordMetadata.directory boolValue];
-    metadata.errorPasscode = [recordMetadata.errorPasscode boolValue];
-    metadata.favorite = [recordMetadata.favorite boolValue];
-    metadata.fileID = recordMetadata.fileID;
-    metadata.directoryID = recordMetadata.directoryID;
-    metadata.fileName = recordMetadata.fileName;
-    metadata.fileNameData = recordMetadata.fileNameData;
-    metadata.fileNamePrint = recordMetadata.fileNamePrint;
-    metadata.iconName = recordMetadata.iconName;
-    metadata.assetLocalIdentifier = recordMetadata.assetLocalIdentifier;
-    metadata.model = recordMetadata.model;
-    metadata.nameCurrentDevice = recordMetadata.nameCurrentDevice;
-    metadata.permissions = recordMetadata.permissions;
-    metadata.protocolCrypto = recordMetadata.protocol;
-    metadata.rev = recordMetadata.rev;
-    
-    metadata.session = recordMetadata.session;
-    metadata.sessionError = recordMetadata.sessionError;
-    metadata.sessionID = recordMetadata.sessionID;
-    metadata.sessionSelector = recordMetadata.sessionSelector;
-    metadata.sessionSelectorPost = recordMetadata.sessionSelectorPost;
-    metadata.sessionTaskIdentifier = [recordMetadata.sessionTaskIdentifier intValue];
-    metadata.sessionTaskIdentifierPlist = [recordMetadata.sessionTaskIdentifierPlist intValue];
-    
-    metadata.size = [recordMetadata.size longValue];
-    metadata.thumbnailExists = [recordMetadata.thumbnailExists boolValue];
-    metadata.title = recordMetadata.title;
-    metadata.type = recordMetadata.type;
-    metadata.typeFile = recordMetadata.typeFile;
-    metadata.uuid = recordMetadata.uuid;
-    
-    return metadata;
-}
-
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Utility Database =====
 #pragma --------------------------------------------------------------------------------------------
@@ -1519,21 +1432,6 @@
     [context MR_saveToPersistentStoreAndWait];
 }
 
-+ (void)flushTableMetadataAccount:(NSString *)account
-{
-    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
-    
-    if (account) {
-        
-        [TableMetadata MR_deleteAllMatchingPredicate:[NSPredicate predicateWithFormat:@"(account == %@)", account] inContext:context];
-        
-    } else {
-        
-        [TableMetadata MR_truncateAllInContext:context];
-    }
-    
-    [context MR_saveToPersistentStoreAndWait];
-}
 
 
 + (void)flushAllDatabase
@@ -1543,7 +1441,6 @@
     [TableAccount MR_truncateAllInContext:context];
     [TableDirectory MR_truncateAllInContext:context];
     [TableLocalFile MR_truncateAllInContext:context];
-    [TableMetadata MR_truncateAllInContext:context];
     
     [context MR_saveToPersistentStoreAndWait];
 }

+ 6 - 6
iOSClient/Main/CCMain.m

@@ -1600,18 +1600,18 @@
 {
     //NSArray *records = [CCCoreData getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@) AND ((session == NULL) OR (session == ''))", app.activeAccount, directoryID] context:nil];
     
-    NSArray *records = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"(account = %@) AND (directoryID = %@) AND (session = '')", app.activeAccount, directoryID] sorted:nil ascending:NO];
+    NSArray *results = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"(account = %@) AND (directoryID = %@) AND (session = '')", app.activeAccount, directoryID] sorted:nil ascending:NO];
     
-    for (TableMetadata *recordMetadata in records) {
+    for (tableMetadata *metadata in results) {
             
-        if ([CCUtility isCryptoPlistString:recordMetadata.fileName] && [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", app.directoryUser, recordMetadata.fileName]] == NO && [recordMetadata.session length] == 0) {
+        if ([CCUtility isCryptoPlistString:metadata.fileName] && [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", app.directoryUser, metadata.fileName]] == NO && [metadata.session length] == 0) {
         
             CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
                 
             metadataNet.action = actionDownloadFile;
             metadataNet.downloadData = NO;
             metadataNet.downloadPlist = YES;
-            metadataNet.fileID = recordMetadata.fileID;
+            metadataNet.fileID = metadata.fileID;
             metadataNet.selector = selectorLoadPlist;
             metadataNet.serverUrl = serverUrl;
             metadataNet.session = k_download_session_foreground;
@@ -2042,8 +2042,8 @@
             NSArray *records = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:predicate sorted:nil ascending:NO];
             
             [_searchResultMetadatas removeAllObjects];
-            for (TableMetadata *record in records)
-                [_searchResultMetadatas addObject:[CCCoreData insertEntityInMetadata:record]];
+            for (tableMetadata *record in records)
+                [_searchResultMetadatas addObject:record];
             
             CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
             

+ 1 - 9
iOSClient/Main/CCSection.m

@@ -72,15 +72,7 @@
     NSInteger numDirectory = 0;
     BOOL directoryOnTop = [CCUtility getDirectoryOnTop];
     
-    for (id record in records) {
-        
-        tableMetadata *metadata = [tableMetadata new];
-        
-        // verify type of class
-        if ([record isKindOfClass:[TableMetadata class]])
-            metadata = [CCCoreData insertEntityInMetadata:record];
-        else
-            metadata = (tableMetadata *)record;
+    for (tableMetadata* metadata in records) {
         
         // if exists replace date with exif date
         /*

+ 3 - 7
iOSClient/Networking/CCNetworking.m

@@ -1529,9 +1529,7 @@
     
     NSLog(@"[LOG] Verify re download n. %lu", (unsigned long)[records count]);
     
-    for (TableMetadata *record in records) {
-        
-        tableMetadata *metadata = [CCCoreData insertEntityInMetadata:record];
+    for (tableMetadata *metadata in records) {
         
         NSString *serverUrl = [CCCoreData getServerUrlFromDirectoryID:metadata.directoryID activeAccount:metadata.account];
             
@@ -1623,10 +1621,8 @@
     
     NSLog(@"[LOG] Verify re upload n. %lu", (unsigned long)[records count]);
     
-    for (TableMetadata *record in records) {
-        
-        tableMetadata *metadata = [CCCoreData insertEntityInMetadata:record];
-        
+    for (tableMetadata *metadata in records) {
+                
         [self uploadFileMetadata:metadata taskStatus: k_taskStatusResume];
             
         [directoryIDs addObject:metadata.directoryID];

+ 1 - 1
iOSClient/Settings/CCAdvanced.m

@@ -324,7 +324,7 @@
             [[NCManageDatabase sharedInstance] clearTable:[tableGPS class] account:nil];
             
             [CCCoreData flushTableLocalFileAccount:app.activeAccount];
-            [CCCoreData flushTableMetadataAccount:app.activeAccount];
+            [[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:app.activeAccount];
             
             [[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:app.activeAccount];
 

+ 1 - 1
iOSClient/Settings/CCManageAccount.m

@@ -323,10 +323,10 @@
     [[NCManageDatabase sharedInstance] clearTable:[tableAutomaticUpload class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableCapabilities class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableExternalSites class] account:account];
+    [[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:account];
 
     [CCCoreData flushTableDirectoryAccount:account];
     [CCCoreData flushTableLocalFileAccount:account];
-    [CCCoreData flushTableMetadataAccount:account];
     
     [[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:account];
 }

+ 5 - 5
iOSClient/Settings/CCSettings.m

@@ -397,14 +397,14 @@
 
 - (void)synchronizeFavorites
 {    
-    NSArray *recordsTableMetadata = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"account = %@ AND favorite == 1", app.activeAccount]  sorted:nil ascending:NO];
+    NSArray *metadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPreficate:[NSPredicate predicateWithFormat:@"account = %@ AND favorite == 1", app.activeAccount]  sorted:nil ascending:NO];
     
-    for (TableMetadata *tableMetadata in recordsTableMetadata) {
+    for (tableMetadata *metadata in metadatas) {
         
-        if ([tableMetadata.directory boolValue]) {
+        if (metadata.directory) {
         
-            NSString *serverUrl = [CCCoreData getServerUrlFromDirectoryID:tableMetadata.directoryID activeAccount:app.activeAccount];
-            serverUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:tableMetadata.fileNamePrint];
+            NSString *serverUrl = [CCCoreData getServerUrlFromDirectoryID:metadata.directoryID activeAccount:app.activeAccount];
+            serverUrl = [CCUtility stringAppendServerUrl:serverUrl addFileName:metadata.fileNamePrint];
         
             NSArray *TableDirectories = [CCCoreData getDirectoryIDsFromBeginsWithServerUrl:serverUrl activeAccount:app.activeAccount];
         

+ 1 - 1
iOSClient/cryptocloud.xcdatamodeld/.xccurrentversion

@@ -3,6 +3,6 @@
 <plist version="1.0">
 <dict>
 	<key>_XCCurrentVersionName</key>
-	<string>cryptocloud 9.xcdatamodel</string>
+	<string>cryptocloud 10.xcdatamodel</string>
 </dict>
 </plist>

+ 72 - 0
iOSClient/cryptocloud.xcdatamodeld/cryptocloud 10.xcdatamodel/contents

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="12141" systemVersion="16E195" minimumToolsVersion="Xcode 7.0" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="cryptocloud">
+    <entity name="TableAccount" representedClassName="TableAccount" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="active" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="address" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUpload" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadBackground" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadCreateSubfolder" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadDatePhoto" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadDateVideo" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadFolderName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUploadFolderPath" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUploadFull" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadPhoto" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadSaveAlbum" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadVideo" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadWWAnPhoto" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadWWAnVideo" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="displayName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="email" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="enabled" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="optimization" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="password" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="phone" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="quota" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaFree" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaRelative" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaTotal" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaUsed" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="twitter" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="url" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="user" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="webpage" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableCertificates" syncable="YES">
+        <attribute name="certificateLocation" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableDirectory" representedClassName="TableDirectory" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="dateReadDirectory" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="directoryID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="favorite" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="lock" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="offline" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="permissions" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="rev" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="serverUrl" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="synchronized" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+    </entity>
+    <entity name="TableLocalFile" representedClassName="TableLocalFile" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="exifDate" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="exifLatitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="exifLongitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="favorite" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileNamePrint" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="offline" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="rev" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="size" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+    </entity>
+    <elements>
+        <element name="TableAccount" positionX="-6597" positionY="111" width="171" height="510"/>
+        <element name="TableCertificates" positionX="-6399" positionY="252" width="128" height="60"/>
+        <element name="TableDirectory" positionX="-6372" positionY="111" width="162" height="210"/>
+        <element name="TableLocalFile" positionX="-6138" positionY="111" width="162" height="225"/>
+    </elements>
+</model>