marinofaggiana vor 3 Jahren
Ursprung
Commit
a877fd181f

+ 3 - 76
File Provider Extension/FileProviderEnumerator.swift

@@ -96,8 +96,6 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
         
         /*** ServerUrl ***/
                 
-            let paginationEndpoint = NCManageDatabase.shared.getCapabilitiesServerString(account: fileProviderData.shared.account, elements: NCElementsJSON.shared.capabilitiesPaginationEndpoint)
-            
             guard let serverUrl = serverUrl else {
                 observer.finishEnumerating(upTo: nil)
                 return
@@ -105,33 +103,14 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             
             if (page == NSFileProviderPage.initialPageSortedByDate as NSFileProviderPage || page == NSFileProviderPage.initialPageSortedByName as NSFileProviderPage) {
                 
-                if paginationEndpoint != nil {
-                                    
-                    self.getPagination(endpoint: paginationEndpoint!, serverUrl: serverUrl, page: 1, limit: fileProviderData.shared.itemForPage) { (metadatas) in
-                        self.completeObserver(observer, numPage: 1, metadatas: metadatas)
-                    }
-                    
-                } else {
-                    
-                    self.readFileOrFolder(serverUrl: serverUrl) { (metadatas) in
-                        self.completeObserver(observer, numPage: 1, metadatas: metadatas)
-                    }                    
+                self.readFileOrFolder(serverUrl: serverUrl) { (metadatas) in
+                    self.completeObserver(observer, numPage: 1, metadatas: metadatas)
                 }
                 
             } else {
                 
                 let numPage = Int(String(data: page.rawValue, encoding: .utf8)!)!
-
-                if paginationEndpoint != nil {
-
-                    self.getPagination(endpoint: paginationEndpoint!, serverUrl: serverUrl, page: numPage, limit: fileProviderData.shared.itemForPage) { (metadatas) in
-                        self.completeObserver(observer, numPage: numPage, metadatas: metadatas)
-                    }
-                    
-                } else {
-
-                    completeObserver(observer, numPage: numPage, metadatas: nil)
-                }
+                completeObserver(observer, numPage: numPage, metadatas: nil)
             }
         }
     }
@@ -254,56 +233,4 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
             }
         }
     }
-    
-    func getPagination(endpoint:String, serverUrl: String, page: Int, limit: Int, completionHandler: @escaping (_ metadatas: [tableMetadata]?) -> Void) {
-        
-        let offset = (page - 1) * limit
-        var fileNamePath = CCUtility.returnPathfromServerUrl(serverUrl, urlBase: fileProviderData.shared.accountUrlBase, account: fileProviderData.shared.account)!
-        if fileNamePath == "" {
-            fileNamePath = "/"
-        }
-        var directoryEtag: String?
-        
-        if let tableDirectory = NCManageDatabase.shared.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.shared.account, serverUrl)) {
-            if page == 1 {
-                directoryEtag = tableDirectory.etag
-            }
-        }
-        
-        NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
-        
-            if errorCode == 0 && files.count == 1 && directoryEtag != files.first?.etag {
-                
-                if page == 1 {
-                    let metadataFolder = NCManageDatabase.shared.convertNCFileToMetadata(files[0], isEncrypted: false, account: account)
-                    NCManageDatabase.shared.addMetadata(metadataFolder)
-                    NCManageDatabase.shared.addDirectory(encrypted: metadataFolder.e2eEncrypted, favorite: metadataFolder.favorite, ocId: metadataFolder.ocId, fileId: metadataFolder.fileId, etag: metadataFolder.etag, permissions: metadataFolder.permissions, serverUrl: serverUrl, account: metadataFolder.account)
-                }
-                                
-                NCCommunication.shared.iosHelper(fileNamePath: fileNamePath, serverUrl: serverUrl, offset: offset, limit: limit) { (account, files, errorCode, errorDescription) in
-                     
-                    if errorCode == 0 {
-                        DispatchQueue.global().async {
-                            NCManageDatabase.shared.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: false, account: account) { (metadataFolder, metadatasFolder, metadatas) in
-                                let metadatasResult = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", fileProviderData.shared.account, serverUrl, NCGlobal.shared.metadataStatusNormal), page: page, limit: fileProviderData.shared.itemForPage, sorted: "fileName", ascending: true)
-                                NCManageDatabase.shared.updateMetadatas(metadatas, metadatasResult: metadatasResult)
-                                for metadata in metadatasFolder {
-                                    let serverUrl = metadata.serverUrl + "/" + metadata.fileNameView
-                                    NCManageDatabase.shared.addDirectory(encrypted: metadata.e2eEncrypted, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrl, account: metadata.account)
-                                }
-                                let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.shared.account, serverUrl), page: page, limit: fileProviderData.shared.itemForPage, sorted: "fileName", ascending: true)
-                                completionHandler(metadatas)
-                            }
-                        }
-                    } else {
-                        let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.shared.account, serverUrl), page: page, limit: fileProviderData.shared.itemForPage, sorted: "fileName", ascending: true)
-                        completionHandler(metadatas)
-                    }
-                }
-            } else {
-                let metadatas = NCManageDatabase.shared.getAdvancedMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.shared.account, serverUrl), sorted: "fileName", ascending: true)
-                completionHandler(metadatas)
-            }
-        }
-    }
 }

+ 1 - 1
Nextcloud.xcodeproj/project.pbxproj

@@ -2939,7 +2939,7 @@
 			repositoryURL = "https://github.com/nextcloud/ios-communication-library/";
 			requirement = {
 				kind = revision;
-				revision = 8d036cc622596e3b5bd6d61d5c0448cfb336e294;
+				revision = 756502d98589997ea216282e6623d8343681656d;
 			};
 		};
 		F788ECC5263AAAF900ADC67F /* XCRemoteSwiftPackageReference "MarkdownKit" */ = {

+ 1 - 1
Nextcloud.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -105,7 +105,7 @@
         "repositoryURL": "https://github.com/nextcloud/ios-communication-library/",
         "state": {
           "branch": null,
-          "revision": "8d036cc622596e3b5bd6d61d5c0448cfb336e294",
+          "revision": "756502d98589997ea216282e6623d8343681656d",
           "version": null
         }
       },

+ 0 - 1
iOSClient/Data/NCElementsJSON.swift

@@ -56,7 +56,6 @@ import UIKit
 
     @objc public let capabilitiesFilesUndelete:                 Array = ["ocs","data","capabilities","files","undelete"]
     @objc public let capabilitiesFilesComments:                 Array = ["ocs","data","capabilities","files","comments"]                                            // NC 20
-    @objc public let capabilitiesPaginationEndpoint:            Array = ["ocs","data","capabilities","files","pagination","endpoint"]
 
     @objc public let capabilitiesHWCEnabled:                    Array = ["ocs","data","capabilities","handwerkcloud","enabled"]
     

+ 1 - 0
iOSClient/Data/NCManageDatabase.swift

@@ -204,6 +204,7 @@ class NCManageDatabase: NSObject {
         self.clearTable(tableActivity.self, account: account)
         self.clearTable(tableActivityPreview.self, account: account)
         self.clearTable(tableActivitySubjectRich.self, account: account)
+        self.clearTable(tableAvatar.self, account: account)
         self.clearTable(tableCapabilities.self, account: account)
         self.clearTable(tableChunk.self, account: account)
         self.clearTable(tableComments.self, account: account)

+ 24 - 21
iOSClient/Networking/NCOperationQueue.swift

@@ -463,30 +463,33 @@ class NCOperationDownloadAvatar: ConcurrentOperation {
         if isCancelled {
             self.finish()
         } else {
-            NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: etag) { (account, data, etag, errorCode, errorMessage) in
+            NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: self.etag) { (account, data, etag, errorCode, errorMessage) in
                 
-                if errorCode == 0 && data != nil && etag != nil {
-                    if var image = UIImage.init(data: data!) {
-                        image = NCUtility.shared.createAvatar(image: image, size: 30)
-                        NCManageDatabase.shared.addAvatar(fileName: self.fileName, etag: etag!)
-                        #if !EXTENSION
-                        (UIApplication.shared.delegate as! AppDelegate).avatars[self.user] = image
-                        #endif
-                        if self.user == self.cell.fileUser {
-                            if let avatarImageView = self.cell?.fileAvatarImageView  {
-                                UIView.transition(with: avatarImageView,
-                                                  duration: 0.75,
-                                                  options: .transitionCrossDissolve,
-                                                  animations: { avatarImageView.image = image },
-                                                  completion: nil)
-                            }
-                        } else {
-                            if self.view is UICollectionView {
-                                (self.view as? UICollectionView)?.reloadData()
-                            } else if self.view is UITableView{
-                                (self.view as? UITableView)?.reloadData()
+                if errorCode == 0, let data = data, let etag = etag, var image = UIImage.init(data: data) {
+                    
+                    image = NCUtility.shared.createAvatar(image: image, size: 30)
+                    NCManageDatabase.shared.addAvatar(fileName: self.fileName, etag: etag)
+                    #if !EXTENSION
+                    (UIApplication.shared.delegate as! AppDelegate).avatars[self.user] = image
+                    #endif
+                    if self.user == self.cell.fileUser {
+                        if let avatarImageView = self.cell?.fileAvatarImageView  {
+                            UIView.transition(with: avatarImageView, duration: 0.75, options: .transitionCrossDissolve) {
+                                avatarImageView.image = image
+                            } completion: { _ in
+                                if self.view is UICollectionView {
+                                    (self.view as? UICollectionView)?.reloadData()
+                                } else if self.view is UITableView{
+                                    (self.view as? UITableView)?.reloadData()
+                                }
                             }
                         }
+                    } else {
+                        if self.view is UICollectionView {
+                            (self.view as? UICollectionView)?.reloadData()
+                        } else if self.view is UITableView{
+                            (self.view as? UITableView)?.reloadData()
+                        }
                     }
                 }
                 

+ 6 - 14
iOSClient/Networking/NCService.swift

@@ -96,7 +96,6 @@ class NCService: NSObject {
                 
                     let user = tableAccount.user
                     let url = tableAccount.urlBase
-                    let userUrlBase = CCUtility.getUserUrlBase(user, urlBase: url)!
                     
                     self.appDelegate.settingAccount(tableAccount.account, urlBase: tableAccount.urlBase, user: tableAccount.user, userId: tableAccount.userId, password: CCUtility.getPassword(tableAccount.account))
                        
@@ -107,19 +106,12 @@ class NCService: NSObject {
                     self.synchronizeOffline(account: tableAccount.account)
                     
                     // Get Avatar
-                    let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + userUrlBase + "-" + self.appDelegate.user + ".png"
-                    let oldData = try? Data(contentsOf: URL(fileURLWithPath: fileNameLocalPath))
-                    NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: nil) { (account, data, etag, errorCode, errorMessage) in
-                        if let data = data, let oldData = oldData {
-                            do {
-                                let isEqual = try NCUtility.shared.compare(tolerance: 95, expected: data, observed: oldData)
-                                if !isEqual {
-                                    NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadAvatar, userInfo: nil)
-                                }
-                            } catch {
-                                NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadAvatar, userInfo: nil)
-                            }
-                        } else {
+                    let fileName = String(CCUtility.getUserUrlBase(user, urlBase: url)) + "-" + self.appDelegate.user + ".png"
+                    let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
+                    let etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
+                    NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: etag) { (account, data, etag, errorCode, errorMessage) in
+                        if let etag = etag, errorCode == 0 {
+                            NCManageDatabase.shared.addAvatar(fileName: fileName, etag: etag)
                             NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadAvatar, userInfo: nil)
                         }
                     }

+ 7 - 6
iOSClient/Share/NCShare.swift

@@ -96,17 +96,18 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             sharedWithYouByLabel.text = NSLocalizedString("_shared_with_you_by_", comment: "") + " " + metadata!.ownerDisplayName
             sharedWithYouByImage.image = UIImage(named: "avatar")?.imageColor(NCBrandColor.shared.label)
 
-            let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata!.ownerId + ".png"
+            let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata!.ownerId + ".png"
+            let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
             if FileManager.default.fileExists(atPath: fileNameLocalPath) {
                 if let image = UIImage(contentsOfFile: fileNameLocalPath) {
                     sharedWithYouByImage.image = NCUtility.shared.createAvatar(image: image, size: 40)
                 }
             } else {
-                NCCommunication.shared.downloadAvatar(user: metadata!.ownerId, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: nil) { (account, data, etag, errorCode, errorMessage) in
-                    if errorCode == 0 && account == self.appDelegate.account && UIImage(data: data!) != nil {
-                        if let image = UIImage(contentsOfFile: fileNameLocalPath) {
-                            self.sharedWithYouByImage.image = NCUtility.shared.createAvatar(image: image, size: 40)
-                        }
+                let etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
+                NCCommunication.shared.downloadAvatar(user: metadata!.ownerId, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize, etag: etag) { (account, data, etag, errorCode, errorMessage) in
+                    
+                    if errorCode == 0, let etag = etag, let image = UIImage(contentsOfFile: fileNameLocalPath) {
+                        self.sharedWithYouByImage.image = NCUtility.shared.createAvatar(image: image, size: 40)
                     } 
                 }
             }