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

Improvement remove account

marinofaggiana 5 жил өмнө
parent
commit
ec86636c0b

+ 11 - 0
iOSClient/Networking/OCNetworking.m

@@ -2412,6 +2412,17 @@
             if (wipe == false) {
                 [CCUtility setPassword:account password:nil];
             } else {
+                // remove account
+                
+#ifndef EXTENSION
+                AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                
+                [appDelegate unsubscribingNextcloudServerPushNotification:account url:appDelegate.activeUrl withSubscribing:false];
+                [appDelegate settingActiveAccount:nil activeUrl:nil activeUser:nil activeUserID:nil activePassword:nil];
+#endif
+                [[NCUtility sharedInstance] removeAccountOnDBKeychain:account];
+
+                // new account
                 
             }
         }];

+ 1 - 20
iOSClient/Settings/CCManageAccount.m

@@ -409,28 +409,9 @@
         if (account) {
             
             [appDelegate unsubscribingNextcloudServerPushNotification:account url:tableAccount.url withSubscribing:false];
-        
-            [[NCManageDatabase sharedInstance] clearTable:[tableAccount class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableActivitySubjectRich class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableCapabilities class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableDirectory class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableE2eEncryption class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableExternalSites class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableLocalFile class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableMedia class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tablePhotoLibrary class] account:account];
-            [[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:account];
-        
-            // Clear active user
             [appDelegate settingActiveAccount:nil activeUrl:nil activeUser:nil activeUserID:nil activePassword:nil];
             
-            // Clear keychain
-            [CCUtility clearAllKeysEndToEnd:account];
-            [CCUtility clearAllKeysPushNotification:account];
-            [CCUtility setPassword:account password:nil];
-            [CCUtility setCertificateError:account error:NO];
+            [[NCUtility sharedInstance] removeAccountOnDBKeychain:account];
         }
         
         NSArray *listAccount = [[NCManageDatabase sharedInstance] getAccounts];

+ 21 - 0
iOSClient/Utility/NCUtility.swift

@@ -373,5 +373,26 @@ class NCUtility: NSObject {
         
         return false
     }
+    
+    @objc func removeAccountOnDBKeychain(_ account: String) {
+        
+        NCManageDatabase.sharedInstance.clearTable(tableAccount.self, account: account)
+        NCManageDatabase.sharedInstance.clearTable(tableActivity.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(tableLocalFile.self, account: account)
+        NCManageDatabase.sharedInstance.clearTable(tableMetadata.self, account: account)
+        NCManageDatabase.sharedInstance.clearTable(tableMedia.self, account: account)
+        NCManageDatabase.sharedInstance.clearTable(tablePhotoLibrary.self, account: account)
+        NCManageDatabase.sharedInstance.clearTable(tableShare.self, account: account)
+
+        CCUtility.clearAllKeysEnd(toEnd: account)
+        CCUtility.clearAllKeysPushNotification(account)
+        CCUtility.setCertificateError(account, error: false)
+        CCUtility.setPassword(account, password: nil)
+    }
 }