Browse Source

Improved directory, cache, remove account

marinofaggiana 5 years ago
parent
commit
960ae8414e

+ 1 - 1
iOSClient/CCGlobal.h

@@ -55,7 +55,7 @@
 #define k_appUserData                                   @"Library/Application Support/UserData"
 #define k_appCertificates                               @"Library/Application Support/Certificates"
 #define k_appScan                                       @"Library/Application Support/Scan"
-
+#define k_appCaches                                     @"Library/Caches"
 #define k_DirectoryProviderStorage                      @"File Provider Storage"
 
 // Server Status

+ 18 - 18
iOSClient/Database/NCDatabase.swift

@@ -110,35 +110,35 @@ class tableActivity: Object {
     }
 }
 
-class tableActivitySubjectRich: Object {
+class tableActivityPreview: Object {
     
     @objc dynamic var account = ""
-    @objc dynamic var idActivity: Int = 0
     @objc dynamic var idPrimaryKey = ""
-    @objc dynamic var id = ""
-    @objc dynamic var key = ""
+    @objc dynamic var idActivity: Int = 0
+    @objc dynamic var source = ""
     @objc dynamic var link = ""
-    @objc dynamic var name = ""
-    @objc dynamic var path = ""
-    @objc dynamic var type = ""
+    @objc dynamic var mimeType = ""
+    @objc dynamic var fileId: Int = 0
+    @objc dynamic var view = ""
+    @objc dynamic var isMimeTypeIcon: Bool = false
     
     override static func primaryKey() -> String {
         return "idPrimaryKey"
     }
 }
 
-class tableActivityPreview: Object {
+class tableActivitySubjectRich: Object {
     
     @objc dynamic var account = ""
-    @objc dynamic var idPrimaryKey = ""
     @objc dynamic var idActivity: Int = 0
-    @objc dynamic var source = ""
+    @objc dynamic var idPrimaryKey = ""
+    @objc dynamic var id = ""
+    @objc dynamic var key = ""
     @objc dynamic var link = ""
-    @objc dynamic var mimeType = ""
-    @objc dynamic var fileId: Int = 0
-    @objc dynamic var view = ""
-    @objc dynamic var isMimeTypeIcon: Bool = false
-
+    @objc dynamic var name = ""
+    @objc dynamic var path = ""
+    @objc dynamic var type = ""
+    
     override static func primaryKey() -> String {
         return "idPrimaryKey"
     }
@@ -299,7 +299,7 @@ class tableLocalFile: Object {
     }
 }
 
-class tableMetadata: Object {
+class tableMedia: Object {
     
     @objc dynamic var account = ""
     @objc dynamic var assetLocalIdentifier = ""
@@ -324,13 +324,13 @@ class tableMetadata: Object {
     @objc dynamic var status: Int = 0
     @objc dynamic var typeFile = ""
     @objc dynamic var url = ""
-
+    
     override static func primaryKey() -> String {
         return "primaryKey"
     }
 }
 
-class tableMedia: Object {
+class tableMetadata: Object {
     
     @objc dynamic var account = ""
     @objc dynamic var assetLocalIdentifier = ""

+ 24 - 0
iOSClient/Database/NCManageDatabase.swift

@@ -111,6 +111,30 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func clearDatabase(account: String?, removeUser: Bool) {
+        
+        self.clearTable(tableActivity.self, account: account)
+        self.clearTable(tableActivityPreview.self, account: account)
+        self.clearTable(tableActivitySubjectRich.self, account: account)
+        self.clearTable(tableCapabilities.self, account: account)
+        self.clearTable(tableDirectory.self, account: account)
+        self.clearTable(tableE2eEncryption.self, account: account)
+        self.clearTable(tableE2eEncryptionLock.self, account: account)
+        self.clearTable(tableExternalSites.self, account: account)
+        self.clearTable(tableGPS.self, account: nil)
+        self.clearTable(tableLocalFile.self, account: account)
+        self.clearTable(tableMedia.self, account: account)
+        self.clearTable(tableMetadata.self, account: account)
+        self.clearTable(tablePhotoLibrary.self, account: account)
+        self.clearTable(tableShare.self, account: account)
+        self.clearTable(tableTag.self, account: account)
+        self.clearTable(tableTrash.self, account: account)
+        
+        if removeUser {
+            self.clearTable(tableAccount.self, account: account)
+        }
+    }
+    
     @objc func removeDB() {
         
         let realmURL = Realm.Configuration.defaultConfiguration.fileURL!

+ 2 - 2
iOSClient/Settings/CCAdvanced.m

@@ -207,7 +207,7 @@
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC),dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         
         [[NCUtility sharedInstance] clearDBAccount:appDelegate.activeAccount removeUser:false];
-        [[NCUtility sharedInstance] removeAllSettingsWithRemoveKeychain:false];
+        [[NCUtility sharedInstance] removeAllSettingsWithRemoveKeychain:false removeApplicationSupport:false];
         [[NCAutoUpload sharedInstance] alignPhotoLibrary];
         [appDelegate.filterFileID removeAllObjects];
 
@@ -262,7 +262,7 @@
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
             
             [[NCManageDatabase sharedInstance] removeDB];
-            [NCUtility.sharedInstance removeAllSettingsWithRemoveKeychain:true];
+            [NCUtility.sharedInstance removeAllSettingsWithRemoveKeychain:true removeApplicationSupport:true];
             
             [self.hud hideHud];
             

+ 1 - 0
iOSClient/Utility/CCUtility.h

@@ -203,6 +203,7 @@
 + (BOOL)fileProviderStorageIconExists:(NSString *)fileID fileNameView:(NSString *)fileNameView;
 
 + (void)emptyGroupApplicationSupport;
++ (void)emptyGroupCaches;
 + (void)emptyLibraryDirectory;
 + (void)emptyDocumentsDirectory;
 + (void)emptyTemporaryDirectory;

+ 11 - 5
iOSClient/Utility/CCUtility.m

@@ -1119,13 +1119,11 @@
         [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@", dirIniziale, file] error:nil];
 }
 
-+ (void)emptyLibraryDirectory
++ (void)emptyGroupCaches
 {
     NSString *file;
-    NSString *dirIniziale;
-    
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
-    dirIniziale = [paths objectAtIndex:0];
+    NSURL *dirGroup = [CCUtility getDirectoryGroup];
+    NSString *dirIniziale = [[dirGroup URLByAppendingPathComponent:k_appCaches] path];
     
     NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:dirIniziale];
     
@@ -1133,6 +1131,14 @@
         [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/%@", dirIniziale, file] error:nil];
 }
 
+
++ (void)emptyLibraryDirectory
+{
+    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryScan] error:nil];
+    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryUserData] error:nil];
+    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryUserData] error:nil];
+}
+
 + (void)emptyDocumentsDirectory
 {
     NSString *file;

+ 10 - 22
iOSClient/Utility/NCUtility.swift

@@ -377,25 +377,9 @@ class NCUtility: NSObject {
     
     @objc func clearDBAccount(_ account: String?, removeUser: Bool) {
         
-        NCManageDatabase.sharedInstance.clearTable(tableActivity.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableActivityPreview.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableActivitySubjectRich.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableCapabilities.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableDirectory.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableE2eEncryption.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableExternalSites.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableGPS.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableLocalFile.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableMedia.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableMetadata.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tablePhotoLibrary.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableShare.self, account: account)
-        NCManageDatabase.sharedInstance.clearTable(tableTrash.self, account: account)
-
-        if (account != nil && removeUser) {
-            
-            NCManageDatabase.sharedInstance.clearTable(tableAccount.self, account: account)
-            
+        NCManageDatabase.sharedInstance.clearDatabase(account: account, removeUser: removeUser)
+        
+        if (account != nil && removeUser) {            
             CCUtility.clearAllKeysEnd(toEnd: account)
             CCUtility.clearAllKeysPushNotification(account)
             CCUtility.setCertificateError(account, error: false)
@@ -403,7 +387,7 @@ class NCUtility: NSObject {
         }
     }
     
-    @objc func removeAllSettings(removeKeychain: Bool) {
+    @objc func removeAllSettings(removeKeychain: Bool, removeApplicationSupport: Bool) {
         
         URLCache.shared.memoryCapacity = 0
         URLCache.shared.diskCapacity = 0
@@ -411,9 +395,13 @@ class NCUtility: NSObject {
         KTVHTTPCache.cacheDeleteAllCaches()
         
         CCUtility.emptyDirectoryProviderStorage()
+        if removeApplicationSupport {
+            CCUtility.emptyGroupApplicationSupport()
+        } else {
+            CCUtility.emptyLibraryDirectory()
+        }
+        CCUtility.emptyGroupCaches()
         CCUtility.emptyDocumentsDirectory()
-        CCUtility.emptyLibraryDirectory()
-        CCUtility.emptyGroupApplicationSupport()
         CCUtility.emptyTemporaryDirectory()
         
         CCUtility.createDirectoryStandard()