marinofaggiana 3 anni fa
parent
commit
f565b931e1

+ 3 - 1
iOSClient/Activity/NCActivity.swift

@@ -255,7 +255,9 @@ extension NCActivity: UITableViewDataSource {
                 cell.fileUser = activity.user
                 
                 let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + activity.user + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: activity.user, fileName: fileName, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
+                let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + activity.user + ".data"
+
+                NCOperationQueue.shared.downloadAvatar(user: activity.user, fileName: fileName, fileNameData: fileNameData, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
             }
             
             // subject

+ 2 - 1
iOSClient/Main/Collection Common/NCCollectionViewCommon.swift

@@ -1372,7 +1372,8 @@ extension NCCollectionViewCommon: UICollectionViewDataSource {
         // Avatar
         if metadata.ownerId.count > 0 && metadata.ownerId != appDelegate.userId && appDelegate.account == metadata.account {
             let fileName = String(CCUtility.getUserUrlBase(metadata.user, urlBase: metadata.urlBase)) + "-" + metadata.ownerId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileName: fileName, placeholder: NCBrandColor.cacheImages.shared, cell: cell, view: collectionView)
+            let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata.ownerId + ".data"
+            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileName: fileName, fileNameData: fileNameData, placeholder: NCBrandColor.cacheImages.shared, cell: cell, view: collectionView)
         }
     }
     

+ 9 - 5
iOSClient/Networking/NCOperationQueue.swift

@@ -161,11 +161,12 @@ import NCCommunication
     
     // Download Avatar
     
-    func downloadAvatar(user: String, fileName: String, placeholder: UIImage?, cell: UIView, view: UIView?) {
+    func downloadAvatar(user: String, fileName: String, fileNameData: String, placeholder: UIImage?, cell: UIView, view: UIView?) {
 
         let cell: NCCellProtocol = cell as! NCCellProtocol
         let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
-
+        let fileNameDataUrl = URL.init(fileURLWithPath:String(CCUtility.getDirectoryUserData()) + "/" + fileNameData)
+        
         if let image = NCManageDatabase.shared.getImageAvatarLoaded(fileName: fileName) {
             cell.fileAvatarImageView?.image = image
             return
@@ -177,7 +178,7 @@ import NCCommunication
             cell.fileAvatarImageView?.image = placeholder
         }
         
-        downloadAvatarQueue.addOperation(NCOperationDownloadAvatar.init(user: user, fileName: fileName, fileNameLocalPath: fileNameLocalPath, cell: cell, view: view))
+        downloadAvatarQueue.addOperation(NCOperationDownloadAvatar.init(user: user, fileName: fileName, fileNameLocalPath: fileNameLocalPath, fileNameDataUrl: fileNameDataUrl, cell: cell, view: view))
     }
     
     func cancelDownloadAvatar(user: String) {
@@ -451,13 +452,15 @@ class NCOperationDownloadAvatar: ConcurrentOperation {
     var fileName: String
     var etag: String?
     var fileNameLocalPath: String
+    var fileNameDataUrl: URL
     var cell: NCCellProtocol!
     var view: UIView?
 
-    init(user: String, fileName: String, fileNameLocalPath: String, cell: NCCellProtocol, view: UIView?) {
+    init(user: String, fileName: String, fileNameLocalPath: String, fileNameDataUrl: URL, cell: NCCellProtocol, view: UIView?) {
         self.user = user
         self.fileName = fileName
         self.fileNameLocalPath = fileNameLocalPath
+        self.fileNameDataUrl = fileNameDataUrl
         self.cell = cell
         self.view = view
         self.etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
@@ -470,8 +473,9 @@ class NCOperationDownloadAvatar: ConcurrentOperation {
         } else {
             NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, sizeImage: NCGlobal.shared.avatarSize, sizeRoundedAvatar: NCGlobal.shared.sizeRoundedAvatar, etag: self.etag) { (account, image, data, etag, errorCode, errorMessage) in
                 
-                if errorCode == 0, let image = image, let etag = etag {
+                if errorCode == 0, let image = image, let etag = etag, let data = data {
                     
+                    try? data.write(to: self.fileNameDataUrl)
                     NCManageDatabase.shared.addAvatar(fileName: self.fileName, etag: etag)
                     
                     if self.user == self.cell.fileUser {

+ 5 - 1
iOSClient/Networking/NCService.swift

@@ -108,13 +108,17 @@ class NCService: NSObject {
                     
                     // Get Avatar
                     let fileName = String(CCUtility.getUserUrlBase(user, urlBase: url)) + "-" + self.appDelegate.user + ".png"
+                    let fileNameData = String(CCUtility.getUserUrlBase(user, urlBase: url)) + "-" + self.appDelegate.user + ".data"
                     let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
+                    let fileNameDataUrl = URL.init(fileURLWithPath:String(CCUtility.getDirectoryUserData()) + "/" + fileNameData)
+
                     let etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
                     
                     NCCommunication.shared.downloadAvatar(user: user, fileNameLocalPath: fileNameLocalPath, sizeImage: NCGlobal.shared.avatarSize, sizeRoundedAvatar: NCGlobal.shared.sizeRoundedAvatar, etag: etag) { (account, image, data, etag, errorCode, errorMessage) in
                         
-                        if let etag = etag, errorCode == 0 {
+                        if let etag = etag, errorCode == 0, let data = data {
                             
+                            try? data.write(to: fileNameDataUrl)
                             NCManageDatabase.shared.addAvatar(fileName: fileName, etag: etag)
                             NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadAvatar, userInfo: nil)
                             

+ 2 - 1
iOSClient/Notification/NCNotification.swift

@@ -137,6 +137,7 @@ class NCNotification: UITableViewController, NCNotificationCellDelegate, NCEmpty
                 if let user = json["user"]?["id"].stringValue {
                     
                     let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + user + ".png"
+                    let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + user + ".data"
                     let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
                     
                     if FileManager.default.fileExists(atPath: fileNameLocalPath) {
@@ -149,7 +150,7 @@ class NCNotification: UITableViewController, NCNotificationCellDelegate, NCEmpty
                         cell.avatar.isHidden = false
                         cell.avatarLeadingMargin.constant = 50
                         cell.fileUser = user
-                        NCOperationQueue.shared.downloadAvatar(user: user, fileName: fileName, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
+                        NCOperationQueue.shared.downloadAvatar(user: user, fileName: fileName, fileNameData: fileNameData, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
                     }
                 }
             }

+ 2 - 1
iOSClient/Select/NCSelect.swift

@@ -417,7 +417,8 @@ extension NCSelect: UICollectionViewDataSource {
         // Avatar
         if metadata.ownerId.count > 0 && metadata.ownerId != activeAccount.userId && activeAccount.account == metadata.account {
             let fileName = String(CCUtility.getUserUrlBase(metadata.user, urlBase: metadata.urlBase)) + "-" + metadata.ownerId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileName: fileName, placeholder: NCBrandColor.cacheImages.shared, cell: cell, view: collectionView)
+            let fileNameData = String(CCUtility.getUserUrlBase(metadata.user, urlBase: metadata.urlBase)) + "-" + metadata.ownerId + ".data"
+            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileName: fileName, fileNameData: fileNameData, placeholder: NCBrandColor.cacheImages.shared, cell: cell, view: collectionView)
         }
     }
     

+ 12 - 3
iOSClient/Share/NCShare.swift

@@ -97,6 +97,8 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             sharedWithYouByImage.image = UIImage(named: "avatar")?.imageColor(NCBrandColor.shared.label)
 
             let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata!.ownerId + ".png"
+            let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata!.ownerId + ".data"
+            
             if let image = NCManageDatabase.shared.getImageAvatarLoaded(fileName: fileName) {
                 
                 sharedWithYouByImage.image = image
@@ -104,12 +106,14 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             } else {
                 
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
+                let fileNameDataUrl = URL.init(fileURLWithPath:String(CCUtility.getDirectoryUserData()) + "/" + fileNameData)
                 let etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
                 
                 NCCommunication.shared.downloadAvatar(user: metadata!.ownerId, fileNameLocalPath: fileNameLocalPath, sizeImage: NCGlobal.shared.avatarSize, sizeRoundedAvatar: NCGlobal.shared.sizeRoundedAvatar, etag: etag) { (account, image, data, etag, errorCode, errorMessage) in
                     
-                    if errorCode == 0, let etag = etag, let image = image {
+                    if errorCode == 0, let etag = etag, let image = image, let data = data {
                         
+                        try? data.write(to: fileNameDataUrl)
                         NCManageDatabase.shared.addAvatar(fileName: fileName, etag: etag)
                         self.sharedWithYouByImage.image = image
                         
@@ -345,6 +349,8 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             }
             
             let fileName = String(CCUtility.getUserUrlBase(self.appDelegate.user, urlBase: self.appDelegate.urlBase)) + "-" + sharee.shareWith + ".png"
+            let fileNameData = String(CCUtility.getUserUrlBase(self.appDelegate.user, urlBase: self.appDelegate.urlBase)) + "-" + sharee.shareWith + ".data"
+            
             if let image = NCManageDatabase.shared.getImageAvatarLoaded(fileName: fileName) {
                 
                 cell.imageItem.image = image
@@ -352,12 +358,14 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             } else {
                 
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + fileName
+                let fileNameDataUrl = URL.init(fileURLWithPath:String(CCUtility.getDirectoryUserData()) + "/" + fileNameData)
                 let etag = NCManageDatabase.shared.getTableAvatar(fileName: fileName)?.etag
 
                 NCCommunication.shared.downloadAvatar(user: sharee.shareWith, fileNameLocalPath: fileNameLocalPath, sizeImage: NCGlobal.shared.avatarSize, sizeRoundedAvatar: NCGlobal.shared.sizeRoundedAvatar, etag: etag) { (account, image, data, etag, errorCode, errorMessage) in
                     
-                    if errorCode == 0, let etag = etag, let image = image {
+                    if errorCode == 0, let etag = etag, let image = image, let data = data {
                         
+                        try? data.write(to: fileNameDataUrl)
                         NCManageDatabase.shared.addAvatar(fileName: fileName, etag: etag)
                         cell.imageItem.image = image
                         
@@ -443,7 +451,8 @@ extension NCShare: UITableViewDataSource {
                 cell.status.text = status.statusMessage
                 
                 let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableShare.shareWith + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: tableShare.shareWith, fileName: fileName, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
+                let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableShare.shareWith + ".data"
+                NCOperationQueue.shared.downloadAvatar(user: tableShare.shareWith, fileName: fileName, fileNameData: fileNameData, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
                 
                 // If the initiator or the recipient is not the current user, show the list of sharees without any options to edit it.
                 if tableShare.uidOwner != self.appDelegate.userId && tableShare.uidFileOwner != self.appDelegate.userId {

+ 2 - 1
iOSClient/Share/NCShareComments.swift

@@ -181,7 +181,8 @@ extension NCShareComments: UITableViewDataSource {
             
             // Image
             let fileName = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableComments.actorId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: tableComments.actorId, fileName: fileName, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
+            let fileNameData = String(CCUtility.getUserUrlBase(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableComments.actorId + ".data"
+            NCOperationQueue.shared.downloadAvatar(user: tableComments.actorId, fileName: fileName, fileNameData: fileNameData, placeholder: UIImage(named: "avatar"), cell: cell, view: tableView)
             // Username
             cell.labelUser.text = tableComments.actorDisplayName
             cell.labelUser.textColor = NCBrandColor.shared.label