瀏覽代碼

replace activity

marinofaggiana 4 年之前
父節點
當前提交
0518a96c7c

+ 1 - 1
Cartfile.resolved

@@ -19,7 +19,7 @@ github "marinofaggiana/AFNetworking" "2967678c3e0e98c9b8d7e06222ad12d1f49c26f2"
 github "marinofaggiana/KTVHTTPCache" "2.0.2"
 github "marinofaggiana/TOPasscodeViewController" "0.0.6"
 github "marinofaggiana/XLForm" "eb9381ad8129f60402bf412250fb31b95a628a08"
-github "nextcloud/ios-communication-library" "1f50df8c58eee3f9c6a8738a5a12fe2c40917958"
+github "nextcloud/ios-communication-library" "31e1ae104af326456295b741208c9632f4662b53"
 github "realm/realm-cocoa" "v4.4.1"
 github "rechsteiner/Parchment" "v1.7.0"
 github "scenee/FloatingPanel" "v1.7.4"

+ 4 - 4
iOSClient/Activity/NCActivity.swift

@@ -576,10 +576,10 @@ extension NCActivity {
             NCUtility.sharedInstance.startActivityIndicator(view: self.view, bottom: 50)
         }
         
-        OCNetworking.sharedManager().getActivityWithAccount(appDelegate.activeAccount, since: idActivity, limit: 200, objectId:filterFileId, objectType: objectType, link: "", completion: { (account, listOfActivity, message, errorCode) in
+        NCCommunication.shared.getActivity(serverUrl: appDelegate.activeUrl, since: idActivity, limit: 200, objectId: filterFileId, objectType: objectType, previews: true, customUserAgent: nil, addCustomHeaders: nil, account: appDelegate.activeAccount) { (account, activities, errorCode, errorDescription) in
             
-            if errorCode == 0 && account == self.appDelegate.activeAccount {
-                NCManageDatabase.sharedInstance.addActivity(listOfActivity as! [OCActivity], account: account!)
+           if errorCode == 0 && account == self.appDelegate.activeAccount {
+                NCManageDatabase.sharedInstance.addActivity(activities , account: account)
             }
             
             NCUtility.sharedInstance.stopActivityIndicator()
@@ -591,6 +591,6 @@ extension NCActivity {
             }
             
             self.loadDataSource()
-        })
+        }
     }
 }

+ 36 - 40
iOSClient/Database/NCManageDatabase.swift

@@ -714,53 +714,47 @@ class NCManageDatabase: NSObject {
     //MARK: -
     //MARK: Table Activity
 
-    #if !EXTENSION
-    @objc func addActivity(_ listOfActivity: [OCActivity], account: String) {
+    @objc func addActivity(_ activities: [NCCommunicationActivity], account: String) {
     
         let realm = try! Realm()
 
         do {
             try realm.write {
             
-                for activity in listOfActivity {
+                for activity in activities {
                     
                     let addObjectActivity = tableActivity()
                     
                     addObjectActivity.account = account
                     addObjectActivity.idActivity = activity.idActivity
                     addObjectActivity.idPrimaryKey = account + String(activity.idActivity)
-            
-                    if let date = activity.date {
-                        addObjectActivity.date = date as NSDate
-                    }
-                    
+                    addObjectActivity.date = activity.date
                     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 {
-                            if let dict = activity.subject_rich[1] as? [String:AnyObject] {
-                                for (key, value) in dict {
-                                    let addObjectActivitySubjectRich = tableActivitySubjectRich()
-                                    if let dict = value as? [String:AnyObject] {
+                    if let subject_rich = activity.subject_rich {
+                        if let json = JSON(subject_rich).array {
+                            addObjectActivity.subjectRich = json[0].stringValue
+                            if json.count > 1 {
+                                if let dict = json[1].dictionary {
+                                    for (key, value) in dict {
+                                        let addObjectActivitySubjectRich = tableActivitySubjectRich()
+                                        let dict = value as JSON
                                         addObjectActivitySubjectRich.account = account
-                                        switch dict["id"] {
-                                        case is String:
-                                            addObjectActivitySubjectRich.id = dict["id"] as? String ?? ""
-                                        case is Int:
-                                            addObjectActivitySubjectRich.id = String(dict["id"] as? Int ?? 0)
-                                        default: addObjectActivitySubjectRich.id = ""
+                                        if dict["id"].intValue > 0 {
+                                            addObjectActivitySubjectRich.id = String(dict["id"].intValue)
+                                        } else {
+                                            addObjectActivitySubjectRich.id = dict["id"].stringValue
                                         }
-                                        addObjectActivitySubjectRich.name = dict["name"] as? String ?? ""
+                                        addObjectActivitySubjectRich.name = dict["name"].stringValue
                                         addObjectActivitySubjectRich.idPrimaryKey = account + String(activity.idActivity) + addObjectActivitySubjectRich.id + addObjectActivitySubjectRich.name
                                         addObjectActivitySubjectRich.key = key
                                         addObjectActivitySubjectRich.idActivity = activity.idActivity
-                                        addObjectActivitySubjectRich.link = dict["link"] as? String ?? ""
-                                        addObjectActivitySubjectRich.path = dict["path"] as? String ?? ""
-                                        addObjectActivitySubjectRich.type = dict["type"] as? String ?? ""
+                                        addObjectActivitySubjectRich.link = dict["link"].stringValue
+                                        addObjectActivitySubjectRich.path = dict["path"].stringValue
+                                        addObjectActivitySubjectRich.type = dict["type"].stringValue
 
                                         realm.add(addObjectActivitySubjectRich, update: .all)
                                     }
@@ -769,20 +763,23 @@ class NCManageDatabase: NSObject {
                         }
                     }
                     
-                    if activity.previews.count > 0 {
-                        for case let activityPreview as [String:AnyObject] in activity.previews {
-                            let addObjectActivityPreview = tableActivityPreview()
-                            addObjectActivityPreview.account = account
-                            addObjectActivityPreview.idActivity = activity.idActivity
-                            addObjectActivityPreview.fileId = activityPreview["fileId"] as? Int ?? 0
-                            addObjectActivityPreview.idPrimaryKey = account + String(activity.idActivity) + String(addObjectActivityPreview.fileId)
-                            addObjectActivityPreview.source = activityPreview["source"] as? String ?? ""
-                            addObjectActivityPreview.link = activityPreview["link"] as? String ?? ""
-                            addObjectActivityPreview.mimeType = activityPreview["mimeType"] as? String ?? ""
-                            addObjectActivityPreview.view = activityPreview["view"] as? String ?? ""
-                            addObjectActivityPreview.isMimeTypeIcon = activityPreview["isMimeTypeIcon"] as? Bool ?? false
-                            
-                            realm.add(addObjectActivityPreview, update: .all)
+                    if let previews = activity.previews {
+                        if let json = JSON(previews).array {
+                            for preview in json {
+                                let addObjectActivityPreview = tableActivityPreview()
+                                
+                                addObjectActivityPreview.account = account
+                                addObjectActivityPreview.idActivity = activity.idActivity
+                                addObjectActivityPreview.fileId = preview["fileId"].intValue
+                                addObjectActivityPreview.idPrimaryKey = account + String(activity.idActivity) + String(addObjectActivityPreview.fileId)
+                                addObjectActivityPreview.source = preview["source"].stringValue
+                                addObjectActivityPreview.link = preview["link"].stringValue
+                                addObjectActivityPreview.mimeType = preview["mimeType"].stringValue
+                                addObjectActivityPreview.view = preview["view"].stringValue
+                                addObjectActivityPreview.isMimeTypeIcon = preview["isMimeTypeIcon"].boolValue
+                                
+                                realm.add(addObjectActivityPreview, update: .all)
+                            }
                         }
                     }
                     
@@ -800,7 +797,6 @@ class NCManageDatabase: NSObject {
             print("[LOG] Could not write to database: ", error)
         }
     }
-    #endif
     
     func getActivity(predicate: NSPredicate, filterFileId: String?) -> (all: [tableActivity], filter: [tableActivity]) {
         

+ 0 - 1
iOSClient/Networking/OCNetworking.h

@@ -47,7 +47,6 @@
 
 #pragma mark ===== API =====
 
-- (void)getActivityWithAccount:(NSString *)account since:(NSInteger)since limit:(NSInteger)limit objectId:(NSString *)objectId objectType:(NSString *)objectType link:(NSString *)link completion:(void(^)(NSString *account, NSArray *listOfActivity, NSString *message, NSInteger errorCode))completion;
 - (void)getNotificationWithAccount:(NSString *)account completion:(void (^)(NSString *account, NSArray *listOfNotifications, NSString *message, NSInteger errorCode))completion;
 - (void)setNotificationWithAccount:(NSString *)account serverUrl:(NSString *)serverUrl type:(NSString *)type completion:(void (^)(NSString *account, NSString *message, NSInteger errorCode))completion;
 

+ 0 - 54
iOSClient/Networking/OCNetworking.m

@@ -384,60 +384,6 @@
 #pragma mark ===== VAR =====
 #pragma --------------------------------------------------------------------------------------------
 
-- (void)getActivityWithAccount:(NSString *)account since:(NSInteger)since limit:(NSInteger)limit objectId:(NSString *)objectId objectType:(NSString *)objectType link:(NSString *)link completion:(void(^)(NSString *account, NSArray *listOfActivity, NSString *message, NSInteger errorCode))completion
-{
-    BOOL previews = false;
-
-    tableAccount *tableAccount = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", account]];
-    if (tableAccount == nil) {
-        completion(account, nil, NSLocalizedString(@"_error_user_not_available_", nil), k_CCErrorUserNotAvailble);
-    } else if ([CCUtility getPassword:account].length == 0) {
-        completion(account, nil, NSLocalizedString(@"_bad_username_password_", nil), kOCErrorServerUnauthorized);
-    } else if ([CCUtility getCertificateError:account]) {
-        completion(account, nil, NSLocalizedString(@"_ssl_certificate_untrusted_", nil), NSURLErrorServerCertificateUntrusted);
-    }
-    
-    NSInteger serverVersionMajor = [[NCManageDatabase sharedInstance] getCapabilitiesServerIntWithAccount:account elements:NCElementsJSON.shared.capabilitiesVersionMajor];
-    if (serverVersionMajor >= k_nextcloud_version_15_0) {
-        previews = true;
-    }
-    
-    OCCommunication *communication = [OCNetworking sharedManager].sharedOCCommunication;
-    
-    [communication setCredentialsWithUser:tableAccount.user andUserID:tableAccount.userID andPassword:[CCUtility getPassword:account]];
-    [communication setUserAgent:[CCUtility getUserAgent]];
-    [communication getActivityServer:[tableAccount.url stringByAppendingString:@"/"] since:since limit:limit objectId:objectId objectType:objectType previews:previews link:link onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSArray *listOfActivity, NSString *redirectedServer) {
-        
-        completion(account, listOfActivity, nil, 0);
-        
-    } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {
-        
-        NSString *message;
-        NSInteger errorCode = response.statusCode;
-        
-        if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
-            errorCode = error.code;
-        
-        // Server Unauthorized
-        if (errorCode == kOCErrorServerUnauthorized || errorCode == kOCErrorServerForbidden) {
-#ifndef EXTENSION
-            [[NCNetworkingCheckRemoteUser shared] checkRemoteUserWithAccount:account];
-#endif
-        } else if (errorCode == NSURLErrorServerCertificateUntrusted) {
-            [CCUtility setCertificateError:account error:YES];
-        }
-        
-        // Error
-        if (errorCode == 503)
-            message = NSLocalizedString(@"_server_error_retry_", nil);
-        else
-            message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
-        
-        completion(account, nil, message, errorCode);
-    }];
-}
-
-
 - (void)getNotificationWithAccount:(NSString *)account completion:(void (^)(NSString *account, NSArray *listOfNotifications, NSString *message, NSInteger errorCode))completion
 {
     tableAccount *tableAccount = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", account]];