Эх сурвалжийг харах

getHomeOfflineActiveAccount

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

+ 4 - 0
iOSClient/FileSystem/CCCoreData.h

@@ -195,6 +195,10 @@
 + (void)updateShare:(NSDictionary *)items sharesLink:(NSMutableDictionary *)sharesLink sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup activeAccount:(NSString *)activeAccount activeUrl:(NSString *)activeUrl typeCloud:(NSString *)typeCloud;
 + (void)populateSharesVariableFromDBActiveAccount:(NSString *)activeAccount sharesLink:(NSMutableDictionary *)sharesLink sharesUserAndGroup:(NSMutableDictionary *)sharesUserAndGroup;
 
+// ===== Offline =====
+
++ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser;
+
 // ===== File System =====
 
 + (BOOL)downloadFile:(CCMetadata *)metadata directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount;

+ 58 - 0
iOSClient/FileSystem/CCCoreData.m

@@ -1730,6 +1730,64 @@
     return;
 }
 
+#pragma --------------------------------------------------------------------------------------------
+#pragma mark ===== Offline =====
+#pragma --------------------------------------------------------------------------------------------
+
++ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser
+{
+    NSMutableArray *metadatas = [NSMutableArray new];
+    NSArray *directories = [self getOfflineDirectoryActiveAccount:activeAccount];
+    NSString *father = @"";
+
+    // Add directory
+    
+    for (TableDirectory *directory in directories) {
+        
+        if (![directory.serverUrl containsString:father]) {
+            
+            father = directory.serverUrl;
+            
+            NSString *upDir = [CCUtility deletingLastPathComponentFromServerUrl:father];
+            NSString *directoryID = [self getDirectoryIDFromServerUrl:upDir activeAccount:activeAccount];
+            NSString *fileNamePrint = [father lastPathComponent];
+            
+            if (upDir && directoryID && fileNamePrint) {
+            
+                NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(directoryID == %@) AND (account == %@) AND (directory == 1) AND (fileNamePrint == %@)", directoryID, activeAccount, fileNamePrint];
+                CCMetadata *metadata = [self getMetadataWithPreficate:predicate context:nil];
+            
+                if (metadata)
+                    [metadatas addObject:metadata];
+            }
+        }
+    }
+    
+    // Add files
+    
+    NSArray *files = [self getTableLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (offline == 1)", activeAccount] controlZombie:YES activeAccount:activeAccount directoryUser:directoryUser];
+    
+    for (TableLocalFile *file in files) {
+        
+        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(fileID == %@) AND (account == %@)", file.fileID, activeAccount];
+        CCMetadata *metadata = [self getMetadataWithPreficate:predicate context:nil];
+        
+        if (metadata) {
+            
+            // verify if is not on directory offline
+            
+            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(directoryID == %@) AND (offline == 1) AND (account == %@)", metadata.directoryID, activeAccount];
+            
+            TableDirectory *directory = [TableDirectory MR_findFirstWithPredicate:predicate];
+            
+            if (!directory)
+                [metadatas addObject:metadata];
+        }
+    }
+    
+    return (NSArray *)metadatas;
+}
+
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== File System =====
 #pragma --------------------------------------------------------------------------------------------

+ 6 - 2
iOSClient/Offline/CCOffline.m

@@ -473,8 +473,12 @@
 - (void)reloadTable
 {
     // Datasource
-    if ([self.serverUrlLocal isEqualToString:@"Offline"])
-        dataSource = (NSMutableArray *)[CCCoreData getOfflineWithControlZombie:YES activeAccount:app.activeAccount directoryUser:app.directoryUser];
+    if ([self.serverUrlLocal isEqualToString:@"Offline"]) {
+        
+       // dataSource = (NSMutableArray *)[CCCoreData getOfflineWithControlZombie:YES activeAccount:app.activeAccount directoryUser:app.directoryUser];
+        
+        dataSource = [CCCoreData getHomeOfflineActiveAccount:app.activeAccount directoryUser:app.directoryUser];
+    }
     
     if ([self.serverUrlLocal isEqualToString:@"Offline"] == NO) {