Browse Source

fix DB

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

+ 7 - 0
iOSClient/Data/NCDatabase.swift

@@ -133,9 +133,11 @@ class tableActivity: Object, DateCompareable {
 }
 
 class tableActivityLatestId: Object {
+
     @objc dynamic var account = ""
     @objc dynamic var activityFirstKnown: Int = 0
     @objc dynamic var activityLastGiven: Int = 0
+
     override static func primaryKey() -> String {
         return "account"
     }
@@ -504,6 +506,7 @@ class tableShare: Object {
     @objc dynamic var password: String = ""
     @objc dynamic var path = ""
     @objc dynamic var permissions: Int = 0
+    @objc dynamic var primaryKey = ""
     @objc dynamic var sendPasswordByTalk: Bool = false
     @objc dynamic var serverUrl = ""
     @objc dynamic var shareType: Int = 0
@@ -519,6 +522,10 @@ class tableShare: Object {
     @objc dynamic var userIcon = ""
     @objc dynamic var userMessage = ""
     @objc dynamic var userStatus = ""
+
+    override static func primaryKey() -> String {
+        return "primaryKey"
+    }
 }
 
 class tableTag: Object {

+ 3 - 5
iOSClient/Data/NCManageDatabase.swift

@@ -164,7 +164,7 @@ class NCManageDatabase: NSObject {
                         migration.deleteData(forType: tableTrash.className())
                     }
 
-                    if oldSchemaVersion < 250 {
+                    if oldSchemaVersion < 252 {
                         migration.deleteData(forType: tableActivity.className())
                         migration.deleteData(forType: tableActivityLatestId.className())
                         migration.deleteData(forType: tableActivityPreview.className())
@@ -1382,9 +1382,6 @@ class NCManageDatabase: NSObject {
         do {
             try realm.safeWrite {
 
-                let results = realm.objects(tableShare.self).filter("account == %@", account)
-                realm.delete(results)
-
                 for share in shares {
 
                     let serverUrlPath = home + share.path
@@ -1420,6 +1417,7 @@ class NCManageDatabase: NSObject {
                     object.password = share.password
                     object.path = share.path
                     object.permissions = share.permissions
+                    object.primaryKey = account + " " + String(share.idShare)
                     object.sendPasswordByTalk = share.sendPasswordByTalk
                     object.shareType = share.shareType
                     object.shareWith = share.shareWith
@@ -1435,7 +1433,7 @@ class NCManageDatabase: NSObject {
                     object.userMessage = share.userMessage
                     object.userStatus = share.userStatus
 
-                    realm.add(object)
+                    realm.add(object, update: .all)
                 }
             }
         } catch let error {

+ 1 - 1
iOSClient/NCGlobal.swift

@@ -116,7 +116,7 @@ class NCGlobal: NSObject {
     // Database Realm
     //
     let databaseDefault                             = "nextcloud.realm"
-    let databaseSchemaVersion: UInt64               = 251
+    let databaseSchemaVersion: UInt64               = 252
 
     // Intro selector
     //

+ 1 - 2
iOSClient/Networking/NCService.swift

@@ -197,10 +197,9 @@ class NCService: NSObject {
             if isFilesSharingEnabled {
                 NextcloudKit.shared.readShares(parameters: NKShareParameter(), options: options) { account, shares, data, error in
                     if error == .success {
+                        NCManageDatabase.shared.deleteTableShare(account: account)
                         if let shares = shares, !shares.isEmpty {
                             NCManageDatabase.shared.addShare(urlBase: self.appDelegate.urlBase, account: account, shares: shares)
-                        } else {
-                            NCManageDatabase.shared.deleteTableShare(account: account)
                         }
                         self.appDelegate.shares = NCManageDatabase.shared.getTableShares(account: account)
                     }

+ 1 - 2
iOSClient/Shares/NCShares.swift

@@ -98,10 +98,9 @@ class NCShares: NCCollectionViewCommon {
             }
 
             if error == .success {
+                NCManageDatabase.shared.deleteTableShare(account: account)
                 if let shares = shares, !shares.isEmpty {
                     NCManageDatabase.shared.addShare(urlBase: self.appDelegate.urlBase, account: account, shares: shares)
-                } else {
-                    NCManageDatabase.shared.deleteTableShare(account: account)
                 }
                 self.appDelegate.shares = NCManageDatabase.shared.getTableShares(account: account)
                 self.reloadDataSource()