marinofaggiana 4 ani în urmă
părinte
comite
956fd9027b
1 a modificat fișierele cu 90 adăugiri și 81 ștergeri
  1. 90 81
      iOSClient/Networking/NCService.swift

+ 90 - 81
iOSClient/Networking/NCService.swift

@@ -54,66 +54,66 @@ class NCService: NSObject {
         }
         
         NCCommunication.shared.getUserProfile() { (account, userProfile, errorCode, errorDescription) in
-                 
+               
             if errorCode == 0 && account == self.appDelegate.activeAccount {
                 
-                // Update User (+ userProfile.id) & active account & account network
-                guard let tableAccount = NCManageDatabase.sharedInstance.setAccountUserProfile(userProfile!) else {
-                    NCContentPresenter.shared.messageNotification("Account", description: "Internal error : account not found on DB",  delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: Int(k_CCErrorInternalError))
-                    return
-                }
-                
-                let user = tableAccount.user
-                let url = tableAccount.url
+                DispatchQueue.global().async {
+                    
+                    // Update User (+ userProfile.id) & active account & account network
+                    guard let tableAccount = NCManageDatabase.sharedInstance.setAccountUserProfile(userProfile!) else {
+                        DispatchQueue.main.async {
+                            NCContentPresenter.shared.messageNotification("Account", description: "Internal error : account not found on DB",  delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: Int(k_CCErrorInternalError))
+                        }
+                        return
+                    }
                 
-                self.appDelegate.settingActiveAccount(tableAccount.account, activeUrl: tableAccount.url, activeUser: tableAccount.user, activeUserID: tableAccount.userID, activePassword: CCUtility.getPassword(tableAccount.account))
+                    let user = tableAccount.user
+                    let url = tableAccount.url
                 
-                // Call func thath required the userdID
-//                self.appDelegate.activeFavorites.listingFavorites()
-//                self.appDelegate.activeMedia.reloadDataSource(loadNetworkDatasource: true) { }
+                    self.appDelegate.settingActiveAccount(tableAccount.account, activeUrl: tableAccount.url, activeUser: tableAccount.user, activeUserID: tableAccount.userID, activePassword: CCUtility.getPassword(tableAccount.account))
                 
-                // Synchronize
-                let directories = NCManageDatabase.sharedInstance.getTablesDirectory(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "serverUrl", ascending: true)
-                if (directories != nil) {
-                    for directory: tableDirectory in directories! {
-                        CCSynchronize.shared()?.readFolder(directory.serverUrl, selector: selectorReadFolderWithDownload, account: tableAccount.account)
+                    // Synchronize
+                    let directories = NCManageDatabase.sharedInstance.getTablesDirectory(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "serverUrl", ascending: true)
+                    if (directories != nil) {
+                        for directory: tableDirectory in directories! {
+                            CCSynchronize.shared()?.readFolder(directory.serverUrl, selector: selectorReadFolderWithDownload, account: tableAccount.account)
+                        }
                     }
-                }
                 
-                let files = NCManageDatabase.sharedInstance.getTableLocalFiles(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "fileName", ascending: true)
-                if (files != nil) {
-                    for file: tableLocalFile in files! {
-                        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", file.ocId)) else {
-                            continue
+                    let files = NCManageDatabase.sharedInstance.getTableLocalFiles(predicate: NSPredicate(format: "account == %@ AND offline == true", tableAccount.account), sorted: "fileName", ascending: true)
+                    if (files != nil) {
+                        for file: tableLocalFile in files! {
+                            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "ocId == %@", file.ocId)) else {
+                                continue
+                            }
+                            CCSynchronize.shared()?.readFile(metadata.ocId, fileName: metadata.fileName, serverUrl: metadata.serverUrl, selector: selectorReadFileWithDownload, account: tableAccount.account)
                         }
-                        CCSynchronize.shared()?.readFile(metadata.ocId, fileName: metadata.fileName, serverUrl: metadata.serverUrl, selector: selectorReadFileWithDownload, account: tableAccount.account)
                     }
-                }
 
-                
-                DispatchQueue.global().async {
-                    
+                        
                     let avatarUrl = "\(self.appDelegate.activeUrl!)/index.php/avatar/\(self.appDelegate.activeUser!)/\(k_avatar_size)".addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!
                     let fileNamePath = CCUtility.getDirectoryUserData() + "/" + CCUtility.getStringUser(user, activeUrl: url) + "-" + self.appDelegate.activeUser + ".png"
-                    
+                        
                     NCCommunication.shared.downloadContent(serverUrl: avatarUrl) { (account, data, errorCode, errorMessage) in
                         if errorCode == 0 {
-                            if let image = UIImage(data: data!) {
-                                try? FileManager.default.removeItem(atPath: fileNamePath)
-                                if let data = image.pngData() {
-                                    try? data.write(to: URL(fileURLWithPath: fileNamePath))
+                            DispatchQueue.global().async {
+                                if let image = UIImage(data: data!) {
+                                    try? FileManager.default.removeItem(atPath: fileNamePath)
+                                    if let data = image.pngData() {
+                                        try? data.write(to: URL(fileURLWithPath: fileNamePath))
+                                    }
                                 }
                             }
                         }
                     }
-                  
+                      
                     DispatchQueue.main.async {
                         NotificationCenter.default.post(name: NSNotification.Name(rawValue: k_notificationCenter_changeUserProfile), object: nil)
                     }
-                }
                 
-                // Get Capabilities
-                self.requestServerCapabilities()
+                    // Get Capabilities
+                    self.requestServerCapabilities()
+                }
                 
             } else {
                 
@@ -150,61 +150,70 @@ class NCService: NSObject {
         NCCommunication.shared.getCapabilities() { (account, data, errorCode, errorDescription) in
             
             if errorCode == 0 && data != nil {
-                NCManageDatabase.sharedInstance.addCapabilitiesJSon(data!, account: account)
                 
-                // Setup communication
-                self.appDelegate.settingSetupCommunicationCapabilities(account)
+                DispatchQueue.global().async {
+                    
+                    NCManageDatabase.sharedInstance.addCapabilitiesJSon(data!, account: account)
                 
-                // Theming
-                self.appDelegate.settingThemingColorBrand()
+                    // Setup communication
+                    self.appDelegate.settingSetupCommunicationCapabilities(account)
                 
-                // File Sharing
-                let isFilesSharingEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFileSharingApiEnabled, exists: false)
-                if (isFilesSharingEnabled && self.appDelegate.activeMain != nil) {
+                    // Theming
+                    self.appDelegate.settingThemingColorBrand()
+                
+                    // File Sharing
+                    let isFilesSharingEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesFileSharingApiEnabled, exists: false)
+                    if (isFilesSharingEnabled && self.appDelegate.activeMain != nil) {
                     
-                    OCNetworking.sharedManager()?.readShare(withAccount: account, completion: { (account, items, message, errorCode) in
-                        if errorCode == 0 && account == self.appDelegate.activeAccount {
-                            let itemsOCSharedDto = items as! [OCSharedDto]
-                            NCManageDatabase.sharedInstance.deleteTableShare(account: account!)
-                            self.appDelegate.shares = NCManageDatabase.sharedInstance.addShare(account: account!, activeUrl: self.appDelegate.activeUrl, items: itemsOCSharedDto)
-                            self.appDelegate.activeMain?.tableView?.reloadData()
-                            self.appDelegate.activeFavorites?.tableView?.reloadData()
-                        } else {
-                            NCContentPresenter.shared.messageNotification("_share_", description: message, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
-                        }
-                    })
-                }
+                        OCNetworking.sharedManager()?.readShare(withAccount: account, completion: { (account, items, message, errorCode) in
+                            if errorCode == 0 && account == self.appDelegate.activeAccount {
+                                
+                                DispatchQueue.global().async {
+                                    let itemsOCSharedDto = items as! [OCSharedDto]
+                                    NCManageDatabase.sharedInstance.deleteTableShare(account: account!)
+                                    self.appDelegate.shares = NCManageDatabase.sharedInstance.addShare(account: account!, activeUrl: self.appDelegate.activeUrl, items: itemsOCSharedDto)
+                                }
+                            } else {
+                                NCContentPresenter.shared.messageNotification("_share_", description: message, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
+                            }
+                        })
+                    }
                 
-                // NCTextObtainEditorDetails
-                let serverVersionMajor = NCManageDatabase.sharedInstance.getCapabilitiesServerInt(account: account, elements: NCElementsJSON.shared.capabilitiesVersionMajor)
-                if serverVersionMajor >= k_nextcloud_version_18_0 {
-                    NCCommunication.shared.NCTextObtainEditorDetails() { (account, editors, creators, errorCode, errorMessage) in
-                        if errorCode == 0 && account == self.appDelegate.activeAccount {
-                            NCManageDatabase.sharedInstance.addDirectEditing(account: account, editors: editors, creators: creators)
+                    // NCTextObtainEditorDetails
+                    let serverVersionMajor = NCManageDatabase.sharedInstance.getCapabilitiesServerInt(account: account, elements: NCElementsJSON.shared.capabilitiesVersionMajor)
+                    if serverVersionMajor >= k_nextcloud_version_18_0 {
+                        NCCommunication.shared.NCTextObtainEditorDetails() { (account, editors, creators, errorCode, errorMessage) in
+                            if errorCode == 0 && account == self.appDelegate.activeAccount {
+                                DispatchQueue.main.async {
+                                    NCManageDatabase.sharedInstance.addDirectEditing(account: account, editors: editors, creators: creators)
+                                }
+                            }
                         }
                     }
-                }
-                
-                let isExternalSitesServerEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSitesExists, exists: true)
-                if (isExternalSitesServerEnabled) {
-                    NCCommunication.shared.getExternalSite() { (account, externalSites, errorCode, errorDescription) in
-                        if errorCode == 0 && account == self.appDelegate.activeAccount {
-                            NCManageDatabase.sharedInstance.deleteExternalSites(account: account)
-                            for externalSite in externalSites {
-                                NCManageDatabase.sharedInstance.addExternalSites(externalSite, account: account)
+                    
+                    let isExternalSitesServerEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesExternalSitesExists, exists: true)
+                    if (isExternalSitesServerEnabled) {
+                        NCCommunication.shared.getExternalSite() { (account, externalSites, errorCode, errorDescription) in
+                            if errorCode == 0 && account == self.appDelegate.activeAccount {
+                                DispatchQueue.main.async {
+                                    NCManageDatabase.sharedInstance.deleteExternalSites(account: account)
+                                    for externalSite in externalSites {
+                                        NCManageDatabase.sharedInstance.addExternalSites(externalSite, account: account)
+                                    }
+                                }
                             }
                         }
+                    } else {
+                        NCManageDatabase.sharedInstance.deleteExternalSites(account: account)
                     }
-                } else {
-                    NCManageDatabase.sharedInstance.deleteExternalSites(account: account)
-                }
                 
-                // Handwerkcloud
-                let isHandwerkcloudEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesHWCEnabled, exists: false)
-                if (isHandwerkcloudEnabled) {
-                    self.requestHC()
+                    // Handwerkcloud
+                    let isHandwerkcloudEnabled = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesHWCEnabled, exists: false)
+                    if (isHandwerkcloudEnabled) {
+                        self.requestHC()
+                    }
                 }
-                            
+                
             } else if errorCode != 0 {
                 
                 self.appDelegate.settingThemingColorBrand()