Marino Faggiana 6 жил өмнө
parent
commit
cb3cebd2ac

+ 38 - 7
iOSClient/Database/NCDatabase.swift

@@ -69,20 +69,51 @@ class tableActivity: Object {
     @objc dynamic var type = ""
     @objc dynamic var user = ""
     @objc dynamic var subject = ""
-    let subject_rich = List<String>()
-    @objc dynamic var message = ""
-    let message_rich = List<String>()
+    @objc dynamic var subjectRich = ""
+    let subjectRichItem = List<tableActivitySubjectRich>()
     @objc dynamic var icon = ""
     @objc dynamic var link = ""
-    @objc dynamic var object_type = ""
-    @objc dynamic var object_id: Double = 0
-    @objc dynamic var object_name = ""
-    let previews = List<String>()
+    @objc dynamic var objectType = ""
+    @objc dynamic var objectID: Double = 0
+    @objc dynamic var objectName = ""
+    @objc dynamic var previews = ""
+    let previewsItem = List<tableActivityPreviews>()
     @objc dynamic var note = ""
     @objc dynamic var selector = ""
     @objc dynamic var verbose: Bool = false
 }
 
+class tableActivitySubjectRich: Object {
+    
+    @objc dynamic var account = ""
+    @objc dynamic var idActivity: Double = 0
+    @objc dynamic var id = ""
+    @objc dynamic var key = ""
+    @objc dynamic var link = ""
+    @objc dynamic var name = ""
+    @objc dynamic var path = ""
+    @objc dynamic var type = ""
+    
+    override static func primaryKey() -> String {
+        return "id"
+    }
+}
+
+class tableActivityPreviews : Object {
+    
+    @objc dynamic var account = ""
+    @objc dynamic var idActivity: Double = 0
+    @objc dynamic var id = ""
+    @objc dynamic var link = ""
+    @objc dynamic var name = ""
+    @objc dynamic var path = ""
+    @objc dynamic var type = ""
+    
+    override static func primaryKey() -> String {
+        return "id"
+    }
+}
+
 class tableCapabilities: Object {
     
     @objc dynamic var account = ""

+ 42 - 23
iOSClient/Database/NCManageDatabase.swift

@@ -580,36 +580,55 @@ class NCManageDatabase: NSObject {
                     if realm.objects(tableActivity.self).filter("idActivity = %d", activity.idActivity).first == nil {
                         
                         // Add new Activity
-                        let addObject = tableActivity()
-                
-                        addObject.account = account
+                        let addObjectActivity = tableActivity()
+                        
+                        addObjectActivity.account = account
                 
                         if let date = activity.date {
-                            addObject.date = date as NSDate
+                            addObjectActivity.date = date as NSDate
                         }
                         
-                        addObject.idActivity = Double(activity.idActivity)
-                        addObject.app = activity.app
-                        addObject.type = activity.type
-                        addObject.user = activity.user
-                        addObject.subject = activity.subject
-                        for record in activity.subject_rich {
-                            addObject.subject_rich.append(record as! String)
-                        }
-                        addObject.message = activity.message
-                        for record in activity.message_rich {
-                            addObject.message_rich.append(record as! String)
+                        addObjectActivity.idActivity = Double(activity.idActivity)
+                        addObjectActivity.app = activity.app
+                        addObjectActivity.type = activity.type
+                        addObjectActivity.user = activity.user
+                        addObjectActivity.subject = activity.subject
+                        
+                        if activity.subject_rich.count > 0 {
+                            addObjectActivity.subjectRich = activity.subject_rich[0] as! String
+                            if activity.subject_rich.count > 1 {
+                                let dict = activity.subject_rich[1] as! [String:AnyObject]
+                                for (key, value) in dict {
+                                    
+                                    let addObjectActivitySubjectRich = tableActivitySubjectRich()
+                                    let record = value as! [String:AnyObject]
+                                    addObjectActivitySubjectRich.account = account
+                                    addObjectActivitySubjectRich.id = account + String(activity.idActivity) + key
+                                    addObjectActivitySubjectRich.key = key
+                                    addObjectActivitySubjectRich.idActivity = Double(activity.idActivity)
+                                    addObjectActivitySubjectRich.link = record["link"] as? String ?? ""
+                                    addObjectActivitySubjectRich.name = record["name"] as? String ?? ""
+                                    addObjectActivitySubjectRich.path = record["path"] as? String ?? ""
+                                    addObjectActivitySubjectRich.type = record["type"] as? String ?? ""
+
+                                    realm.add(addObjectActivitySubjectRich, update: true)
+                                }
+                            }
                         }
-                        addObject.icon = activity.icon
-                        addObject.link = activity.link
-                        addObject.object_type = activity.object_type
-                        addObject.object_id = Double(activity.object_id)
-                        addObject.object_name = activity.object_name
+                        
+                        addObjectActivity.icon = activity.icon
+                        addObjectActivity.link = activity.link
+                        addObjectActivity.objectType = activity.object_type
+                        addObjectActivity.objectID = Double(activity.object_id)
+                        addObjectActivity.objectName = activity.object_name
+                        
+                        /*
                         for record in activity.previews {
-                            addObject.previews.append(record as! String)
+                            addObjectActivity.previews.append(record as! String)
                         }
-
-                        realm.add(addObject)
+                        */
+                        
+                        realm.add(addObjectActivity)
                     }
                 }
             }

+ 0 - 3
iOSClient/Library/OCCommunicationLib/OCActivity.m

@@ -33,9 +33,6 @@
         
         self.idActivity = 0;
         self.date = [NSDate date];
-        self.link = @"";
-        self.message = @"";
-        self.subject = @"";
     }
     
     return self;

+ 2 - 0
iOSClient/Settings/CCAdvanced.m

@@ -350,6 +350,8 @@
         if (withDB) {
             
             [[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:appDelegate.activeAccount];
+            [[NCManageDatabase sharedInstance] clearTable:[tableActivitySubjectRich class] account:appDelegate.activeAccount];
+            [[NCManageDatabase sharedInstance] clearTable:[tableActivityPreviews class] account:appDelegate.activeAccount];
             [[NCManageDatabase sharedInstance] clearTable:[tableCapabilities class] account:appDelegate.activeAccount];
             [[NCManageDatabase sharedInstance] clearTable:[tableDirectory class] account:appDelegate.activeAccount];
             [[NCManageDatabase sharedInstance] clearTable:[tableE2eEncryption class] account:appDelegate.activeAccount];

+ 2 - 0
iOSClient/Settings/CCManageAccount.m

@@ -240,6 +240,8 @@
     
     [[NCManageDatabase sharedInstance] clearTable:[tableAccount class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:account];
+    [[NCManageDatabase sharedInstance] clearTable:[tableActivityPreviews 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];