Browse Source

divide et impera

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 years ago
parent
commit
fd5d7f342c

+ 1 - 0
.swiftlint.yml

@@ -63,6 +63,7 @@ excluded:
   - iOSClient/Data/NCManageDatabase+Activity.swift
   - iOSClient/Data/NCManageDatabase.swift
   - iOSClient/Data/NCManageDatabase+Metadata.swift
+  - iOSClient/Data/NCManageDatabase+Directory.swift
   - iOSClient/Data/NCManageDatabase+Video.swift
   - iOSClient/Data/NCManageDatabase+DashboardWidget.swift
   - iOSClient/Diagnostics/NCCapabilitiesViewController.swift

+ 14 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -352,6 +352,12 @@
 		F785EEA62461A4FB00B3F945 /* CCUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F7053E3D1C639DF500741EA5 /* CCUtility.m */; };
 		F787704F22E7019900F287A9 /* NCShareLinkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F787704E22E7019900F287A9 /* NCShareLinkCell.xib */; };
 		F788ECC7263AAAFA00ADC67F /* MarkdownKit in Frameworks */ = {isa = PBXBuildFile; productRef = F788ECC6263AAAFA00ADC67F /* MarkdownKit */; };
+		F78A10BF29322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
+		F78A10C029322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
+		F78A10C129322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
+		F78A10C229322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
+		F78A10C329322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
+		F78A10C429322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */; };
 		F78A18B623CDD07D00F681F3 /* NCViewerRichWorkspaceWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A18B523CDD07D00F681F3 /* NCViewerRichWorkspaceWebView.swift */; };
 		F78A18B823CDE2B300F681F3 /* NCViewerRichWorkspace.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78A18B723CDE2B300F681F3 /* NCViewerRichWorkspace.swift */; };
 		F78ACD4021903CC20088454D /* NCGridCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78ACD3F21903CC20088454D /* NCGridCell.swift */; };
@@ -921,6 +927,7 @@
 		F783033F28B50B7E00B84583 /* Widget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Widget.entitlements; sourceTree = "<group>"; };
 		F785EE9C246196DF00B3F945 /* NCNetworkingE2EE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EE.swift; sourceTree = "<group>"; };
 		F787704E22E7019900F287A9 /* NCShareLinkCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NCShareLinkCell.xib; sourceTree = "<group>"; };
+		F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+Directory.swift"; sourceTree = "<group>"; };
 		F78A18B523CDD07D00F681F3 /* NCViewerRichWorkspaceWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerRichWorkspaceWebView.swift; sourceTree = "<group>"; };
 		F78A18B723CDE2B300F681F3 /* NCViewerRichWorkspace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerRichWorkspace.swift; sourceTree = "<group>"; };
 		F78AA20521F783E900D0F205 /* SwiftRichString.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftRichString.framework; path = Carthage/Build/iOS/SwiftRichString.framework; sourceTree = "<group>"; };
@@ -1827,6 +1834,7 @@
 				AF4BF61D27562B3F0081CEEF /* NCManageDatabase+Activity.swift */,
 				AF4BF613275629E20081CEEF /* NCManageDatabase+Account.swift */,
 				F7D68FCB28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift */,
+				F78A10BE29322E8A008499B8 /* NCManageDatabase+Directory.swift */,
 				AF4BF61827562A4B0081CEEF /* NCManageDatabase+Metadata.swift */,
 				F7E98C1527E0D0FC001F9F19 /* NCManageDatabase+Video.swift */,
 				F73D5E46246DE09200DF6467 /* NCElementsJSON.swift */,
@@ -2798,6 +2806,7 @@
 				D575039F27146F93008DC9DC /* String+Extensions.swift in Sources */,
 				F73D5E4A246DE09200DF6467 /* NCElementsJSON.swift in Sources */,
 				F79B646326CA661600838ACA /* UIControl+Extensions.swift in Sources */,
+				F78A10C429322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				AF4BF61C27562A4B0081CEEF /* NCManageDatabase+Metadata.swift in Sources */,
 				AF817EF4274BC781009ED85B /* NCUserBaseUrl.swift in Sources */,
 				F798F0EC2588060A000DAFFD /* UIColor+Extensions.swift in Sources */,
@@ -2864,6 +2873,7 @@
 				F7BAADC91ED5A87C00B7EAD4 /* NCDatabase.swift in Sources */,
 				F7D57C8B26317BDE00DE301D /* NCAccountRequest.swift in Sources */,
 				F7C30DF7291BC0D30017149B /* NCNetworkingE2EEUpload.swift in Sources */,
+				F78A10C229322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				F7D68FCE28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */,
 				AF22B217277D196700DAB0CC /* NCShareExtension+DataSource.swift in Sources */,
 				F76D364728A4F8BF00214537 /* NCActivityIndicator.swift in Sources */,
@@ -2898,6 +2908,7 @@
 				F793E5A028B7651B005E4B02 /* NCViewCertificateDetails.swift in Sources */,
 				F793E59F28B764F6005E4B02 /* NCContentPresenter.swift in Sources */,
 				F76DEE9828F808AF0041B1C9 /* LockscreenWidgetProvider.swift in Sources */,
+				F78A10C029322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				F78302FA28B4C3EA00B84583 /* NCManageDatabase+Metadata.swift in Sources */,
 				F783030728B4C52800B84583 /* UIColor+Extensions.swift in Sources */,
 				F783030028B4C45800B84583 /* NCGlobal.swift in Sources */,
@@ -2944,6 +2955,7 @@
 				F7D68FCF28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */,
 				AF4BF61B27562A4B0081CEEF /* NCManageDatabase+Metadata.swift in Sources */,
 				F70460542499095400BB98A7 /* NotificationCenter+MainThread.swift in Sources */,
+				F78A10C329322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				F7E98C1827E0D0FC001F9F19 /* NCManageDatabase+Video.swift in Sources */,
 				F785EEA42461A4A600B3F945 /* NCUtility.swift in Sources */,
 				F79B646226CA661600838ACA /* UIControl+Extensions.swift in Sources */,
@@ -3015,6 +3027,7 @@
 				F710D2022405826100A6033D /* NCViewer+Menu.swift in Sources */,
 				F77A697D250A0FBC00FF1708 /* NCCollectionViewCommon+Menu.swift in Sources */,
 				AF7E504E27A2D8FF00B5E4AF /* UIBarButton+Extension.swift in Sources */,
+				F78A10BF29322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				F704B5E92430C0B800632F5F /* NCCreateFormUploadConflictCell.swift in Sources */,
 				F72D404923D2082500A97FD0 /* NCViewerNextcloudText.swift in Sources */,
 				AFCE353927E5DE0500FEA6C2 /* NCShare+Helper.swift in Sources */,
@@ -3143,6 +3156,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				F78A10C129322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
 				F7A8D73528F17E16008BBE1C /* NCManageDatabase.swift in Sources */,
 				F7A8D74428F1827B008BBE1C /* ThreadSafeDictionary.swift in Sources */,
 				F7C9739528F17131002C43E2 /* IntentHandler.swift in Sources */,

+ 221 - 0
iOSClient/Data/NCManageDatabase+Directory.swift

@@ -0,0 +1,221 @@
+//
+//  NCManageDatabase+Directory.swift
+//  Nextcloud
+//
+//  Created by Marino Faggiana on 26/11/22.
+//  Copyright © 2022 Marino Faggiana. All rights reserved.
+//
+//  Author Marino Faggiana <marino.faggiana@nextcloud.com>
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+
+import Foundation
+import RealmSwift
+import NextcloudKit
+
+extension NCManageDatabase {
+
+    @objc func addDirectory(encrypted: Bool, favorite: Bool, ocId: String, fileId: String, etag: String? = nil, permissions: String? = nil, serverUrl: String, account: String) {
+
+        let realm = try! Realm()
+
+        do {
+            try realm.write {
+                var addObject = tableDirectory()
+                let result = realm.objects(tableDirectory.self).filter("ocId == %@", ocId).first
+
+                if result != nil {
+                    addObject = result!
+                } else {
+                    addObject.ocId = ocId
+                }
+
+                addObject.account = account
+                addObject.e2eEncrypted = encrypted
+                addObject.favorite = favorite
+                addObject.fileId = fileId
+                if let etag = etag {
+                    addObject.etag = etag
+                }
+                if let permissions = permissions {
+                    addObject.permissions = permissions
+                }
+                addObject.serverUrl = serverUrl
+
+                realm.add(addObject, update: .all)
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+
+    @objc func deleteDirectoryAndSubDirectory(serverUrl: String, account: String) {
+
+        let realm = try! Realm()
+
+        let results = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl BEGINSWITH %@", account, serverUrl)
+
+        // Delete table Metadata & LocalFile
+        for result in results {
+
+            self.deleteMetadata(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", result.account, result.serverUrl))
+            self.deleteLocalFile(predicate: NSPredicate(format: "ocId == %@", result.ocId))
+        }
+
+        // Delete table Dirrectory
+        do {
+            try realm.write {
+                realm.delete(results)
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+
+    @objc func setDirectory(serverUrl: String, serverUrlTo: String? = nil, etag: String? = nil, ocId: String? = nil, fileId: String? = nil, encrypted: Bool, richWorkspace: String? = nil, account: String) {
+
+        let realm = try! Realm()
+
+        do {
+            try realm.write {
+
+                guard let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first else {
+                    return
+                }
+
+                let directory = tableDirectory.init(value: result)
+
+                realm.delete(result)
+
+                directory.e2eEncrypted = encrypted
+                if let etag = etag {
+                    directory.etag = etag
+                }
+                if let ocId = ocId {
+                    directory.ocId = ocId
+                }
+                if let fileId = fileId {
+                    directory.fileId = fileId
+                }
+                if let serverUrlTo = serverUrlTo {
+                    directory.serverUrl = serverUrlTo
+                }
+                if let richWorkspace = richWorkspace {
+                    directory.richWorkspace = richWorkspace
+                }
+
+                realm.add(directory, update: .all)
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+
+    @objc func getTableDirectory(predicate: NSPredicate) -> tableDirectory? {
+
+        let realm = try! Realm()
+
+        guard let result = realm.objects(tableDirectory.self).filter(predicate).first else {
+            return nil
+        }
+
+        return tableDirectory.init(value: result)
+    }
+
+    @objc func getTablesDirectory(predicate: NSPredicate, sorted: String, ascending: Bool) -> [tableDirectory]? {
+
+        let realm = try! Realm()
+
+        let results = realm.objects(tableDirectory.self).filter(predicate).sorted(byKeyPath: sorted, ascending: ascending)
+
+        if results.count > 0 {
+            return Array(results.map { tableDirectory.init(value: $0) })
+        } else {
+            return nil
+        }
+    }
+
+    @objc func renameDirectory(ocId: String, serverUrl: String) {
+
+        let realm = try! Realm()
+
+        do {
+            try realm.write {
+                let result = realm.objects(tableDirectory.self).filter("ocId == %@", ocId).first
+                result?.serverUrl = serverUrl
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+
+    @objc func setDirectory(serverUrl: String, offline: Bool, account: String) {
+
+        let realm = try! Realm()
+
+        do {
+            try realm.write {
+                let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
+                result?.offline = offline
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+
+    @discardableResult
+    @objc func setDirectory(serverUrl: String, richWorkspace: String?, account: String) -> tableDirectory? {
+
+        let realm = try! Realm()
+        var result: tableDirectory?
+
+        do {
+            try realm.write {
+                result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
+                result?.richWorkspace = richWorkspace
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+
+        if let result = result {
+            return tableDirectory.init(value: result)
+        } else {
+            return nil
+        }
+    }
+
+    @discardableResult
+    @objc func setDirectory(serverUrl: String, colorFolder: String?, account: String) -> tableDirectory? {
+
+        let realm = try! Realm()
+        var result: tableDirectory?
+
+        do {
+            try realm.write {
+                result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
+                result?.colorFolder = colorFolder
+            }
+        } catch let error {
+            NKCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+
+        if let result = result {
+            return tableDirectory.init(value: result)
+        } else {
+            return nil
+        }
+    }
+}

+ 0 - 195
iOSClient/Data/NCManageDatabase.swift

@@ -638,201 +638,6 @@ class NCManageDatabase: NSObject {
         }
     }
 
-    // MARK: -
-    // MARK: Table Directory
-
-    @objc func addDirectory(encrypted: Bool, favorite: Bool, ocId: String, fileId: String, etag: String? = nil, permissions: String? = nil, serverUrl: String, account: String) {
-
-        let realm = try! Realm()
-
-        do {
-            try realm.write {
-                var addObject = tableDirectory()
-                let result = realm.objects(tableDirectory.self).filter("ocId == %@", ocId).first
-
-                if result != nil {
-                    addObject = result!
-                } else {
-                    addObject.ocId = ocId
-                }
-
-                addObject.account = account
-                addObject.e2eEncrypted = encrypted
-                addObject.favorite = favorite
-                addObject.fileId = fileId
-                if let etag = etag {
-                    addObject.etag = etag
-                }
-                if let permissions = permissions {
-                    addObject.permissions = permissions
-                }
-                addObject.serverUrl = serverUrl
-
-                realm.add(addObject, update: .all)
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-    }
-
-    @objc func deleteDirectoryAndSubDirectory(serverUrl: String, account: String) {
-
-        let realm = try! Realm()
-
-        let results = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl BEGINSWITH %@", account, serverUrl)
-
-        // Delete table Metadata & LocalFile
-        for result in results {
-
-            self.deleteMetadata(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", result.account, result.serverUrl))
-            self.deleteLocalFile(predicate: NSPredicate(format: "ocId == %@", result.ocId))
-        }
-
-        // Delete table Dirrectory
-        do {
-            try realm.write {
-                realm.delete(results)
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-    }
-
-    @objc func setDirectory(serverUrl: String, serverUrlTo: String? = nil, etag: String? = nil, ocId: String? = nil, fileId: String? = nil, encrypted: Bool, richWorkspace: String? = nil, account: String) {
-
-        let realm = try! Realm()
-
-        do {
-            try realm.write {
-
-                guard let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first else {
-                    return
-                }
-
-                let directory = tableDirectory.init(value: result)
-
-                realm.delete(result)
-
-                directory.e2eEncrypted = encrypted
-                if let etag = etag {
-                    directory.etag = etag
-                }
-                if let ocId = ocId {
-                    directory.ocId = ocId
-                }
-                if let fileId = fileId {
-                    directory.fileId = fileId
-                }
-                if let serverUrlTo = serverUrlTo {
-                    directory.serverUrl = serverUrlTo
-                }
-                if let richWorkspace = richWorkspace {
-                    directory.richWorkspace = richWorkspace
-                }
-
-                realm.add(directory, update: .all)
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-    }
-
-    @objc func getTableDirectory(predicate: NSPredicate) -> tableDirectory? {
-
-        let realm = try! Realm()
-
-        guard let result = realm.objects(tableDirectory.self).filter(predicate).first else {
-            return nil
-        }
-
-        return tableDirectory.init(value: result)
-    }
-
-    @objc func getTablesDirectory(predicate: NSPredicate, sorted: String, ascending: Bool) -> [tableDirectory]? {
-
-        let realm = try! Realm()
-
-        let results = realm.objects(tableDirectory.self).filter(predicate).sorted(byKeyPath: sorted, ascending: ascending)
-
-        if results.count > 0 {
-            return Array(results.map { tableDirectory.init(value: $0) })
-        } else {
-            return nil
-        }
-    }
-
-    @objc func renameDirectory(ocId: String, serverUrl: String) {
-
-        let realm = try! Realm()
-
-        do {
-            try realm.write {
-                let result = realm.objects(tableDirectory.self).filter("ocId == %@", ocId).first
-                result?.serverUrl = serverUrl
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-    }
-
-    @objc func setDirectory(serverUrl: String, offline: Bool, account: String) {
-
-        let realm = try! Realm()
-
-        do {
-            try realm.write {
-                let result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
-                result?.offline = offline
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-    }
-
-    @discardableResult
-    @objc func setDirectory(serverUrl: String, richWorkspace: String?, account: String) -> tableDirectory? {
-
-        let realm = try! Realm()
-        var result: tableDirectory?
-
-        do {
-            try realm.write {
-                result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
-                result?.richWorkspace = richWorkspace
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-
-        if let result = result {
-            return tableDirectory.init(value: result)
-        } else {
-            return nil
-        }
-    }
-
-    @discardableResult
-    @objc func setDirectory(serverUrl: String, colorFolder: String?, account: String) -> tableDirectory? {
-
-        let realm = try! Realm()
-        var result: tableDirectory?
-
-        do {
-            try realm.write {
-                result = realm.objects(tableDirectory.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first
-                result?.colorFolder = colorFolder
-            }
-        } catch let error {
-            NKCommon.shared.writeLog("Could not write to database: \(error)")
-        }
-
-        if let result = result {
-            return tableDirectory.init(value: result)
-        } else {
-            return nil
-        }
-    }
-
     // MARK: -
     // MARK: Table e2e Encryption