marinofaggiana 3 anni fa
parent
commit
71cff491ad

+ 1 - 1
Share/NCShareExtension.swift

@@ -631,7 +631,7 @@ extension NCShareExtension: UICollectionViewDataSource {
         }
         if metadata.ownerId.count > 0 && metadata.ownerId != activeAccount.userId {
             let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(activeAccount.user, urlBase: activeAccount.urlBase)) + "-" + metadata.ownerId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageShared.image)
+            NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, view: collectionView, indexPath: indexPath)
         }
         
         cell.imageSelect.isHidden = true

+ 1 - 1
iOSClient/Activity/NCActivity.swift

@@ -241,7 +241,7 @@ extension NCActivity: UITableViewDataSource {
                 cell.avatar.isHidden = false
                 
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + activity.user + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: activity.user, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.avatar.image)
+                NCOperationQueue.shared.downloadAvatar(user: activity.user, fileNameLocalPath: fileNameLocalPath, view: tableView, indexPath: indexPath)
             }
             
             // subject

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

@@ -1509,7 +1509,7 @@ extension NCCollectionViewCommon: UICollectionViewDataSource {
             }
             if metadata.ownerId.count > 0 && metadata.ownerId != appDelegate.userId && appDelegate.account == metadata.account {
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: metadata.urlBase)) + "-" + metadata.ownerId + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageShared.image)
+                NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, view: collectionView, indexPath: indexPath)
             }
             
             // Transfer

+ 36 - 9
iOSClient/Networking/NCOperationQueue.swift

@@ -150,26 +150,38 @@ import NCCommunication
     
     // Download Avatar
     
-    func downloadAvatar(user: String, fileNameLocalPath: String, imageAvatar: inout UIImage?) {
+    func downloadAvatar(user: String, fileNameLocalPath: String, view: UIView, indexPath: IndexPath) {
+
+        var cell: NCCellProtocol?
+        
+        if view is UICollectionView {
+            if indexPath.section < (view as! UICollectionView).numberOfSections && indexPath.row < (view as! UICollectionView).numberOfItems(inSection: indexPath.section) {
+                cell = (view as! UICollectionView).cellForItem(at: indexPath) as? NCCellProtocol
+            }
+        } else {
+            if indexPath.section < (view as! UITableView).numberOfSections && indexPath.row < (view as! UITableView).numberOfRows(inSection: indexPath.section) {
+                cell = (view as! UITableView).cellForRow(at: indexPath) as? NCCellProtocol
+            }
+        }
 
         #if !EXTENSION
         let appDelegate = UIApplication.shared.delegate as! AppDelegate
         if let image = appDelegate.avatars[user] {
-            imageAvatar = image
+            cell?.avatarImageView?.image = image
             return
         }
         #endif
                 
-        imageAvatar = UIImage(named: "avatar")
+        cell?.avatarImageView?.image = UIImage(named: "avatar")
         if let image = UIImage(contentsOfFile: fileNameLocalPath) {
-            imageAvatar = NCUtility.shared.createAvatar(image: image, size: 30)
+            cell?.avatarImageView?.image = NCUtility.shared.createAvatar(image: image, size: 30)
         }
         for operation in downloadAvatarQueue.operations as! [NCOperationDownloadAvatar] {
             if operation.user == user {
                 return
             }
         }
-        downloadAvatarQueue.addOperation(NCOperationDownloadAvatar.init(user: user, fileNameLocalPath: fileNameLocalPath, imageAvatar: &imageAvatar))
+        downloadAvatarQueue.addOperation(NCOperationDownloadAvatar.init(user: user, fileNameLocalPath: fileNameLocalPath, view: view, indexPath: indexPath))
     }
     
     @objc func downloadAvatarCancelAll() {
@@ -441,12 +453,14 @@ class NCOperationDownloadAvatar: ConcurrentOperation {
 
     var user: String
     var fileNameLocalPath: String
-    var imageAvatar: UIImage?
+    var view: Any
+    var indexPath: IndexPath
         
-    init(user: String, fileNameLocalPath: String, imageAvatar: inout UIImage?) {
+    init(user: String, fileNameLocalPath: String, view: Any, indexPath: IndexPath) {
         self.user = user
         self.fileNameLocalPath = fileNameLocalPath
-        self.imageAvatar = imageAvatar
+        self.view = view
+        self.indexPath = indexPath
     }
     
     override func start() {
@@ -458,7 +472,20 @@ class NCOperationDownloadAvatar: ConcurrentOperation {
                 if errorCode == 0 {
                     if var image = UIImage(contentsOfFile: self.fileNameLocalPath) {
                         image = NCUtility.shared.createAvatar(image: image, size: 30)
-                        self.imageAvatar = image
+                        
+                        var cell: NCCellProtocol?
+                        
+                        if self.view is UICollectionView {
+                            if self.indexPath.section < (self.view as! UICollectionView).numberOfSections && self.indexPath.row < (self.view as! UICollectionView).numberOfItems(inSection: self.indexPath.section) {
+                                cell = (self.view as! UICollectionView).cellForItem(at: self.indexPath) as? NCCellProtocol
+                            }
+                        } else {
+                            if self.indexPath.section < (self.view as! UITableView).numberOfSections && self.indexPath.row < (self.view as! UITableView).numberOfRows(inSection: self.indexPath.section) {
+                                cell = (self.view as! UITableView).cellForRow(at: self.indexPath) as? NCCellProtocol
+                            }
+                        }
+                        cell?.avatarImageView?.image = image
+                       
                         #if !EXTENSION
                         let appDelegate = UIApplication.shared.delegate as! AppDelegate
                         appDelegate.avatars[self.user] = image

+ 1 - 1
iOSClient/Notification/NCNotification.swift

@@ -146,7 +146,7 @@ class NCNotification: UITableViewController, NCNotificationCellDelegate, NCEmpty
                         } else {
                             cell.avatar.isHidden = false
                             cell.avatarLeadingMargin.constant = 50
-                            NCOperationQueue.shared.downloadAvatar(user: userId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.avatar.image)
+                            NCOperationQueue.shared.downloadAvatar(user: userId, fileNameLocalPath: fileNameLocalPath, view: tableView, indexPath: indexPath)
                         }
                     }
                 }

+ 1 - 1
iOSClient/Select/NCSelect.swift

@@ -522,7 +522,7 @@ extension NCSelect: UICollectionViewDataSource {
             }
             if metadata.ownerId.count > 0 && metadata.ownerId != activeAccount.userId {
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(activeAccount.user, urlBase: activeAccount.urlBase)) + "-" + metadata.ownerId + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageShared.image)
+                NCOperationQueue.shared.downloadAvatar(user: metadata.ownerId, fileNameLocalPath: fileNameLocalPath, view: collectionView, indexPath: indexPath)
             }
             
             cell.imageSelect.isHidden = true

+ 31 - 4
iOSClient/Share/NCShare.swift

@@ -97,8 +97,20 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             sharedWithYouByImage.image = UIImage(named: "avatar")?.imageColor(NCBrandColor.shared.label)
 
             let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + metadata!.ownerId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: metadata!.ownerId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &sharedWithYouByImage.image)
-        }
+            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) { (account, data, 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)
+                        }
+                    } 
+                }
+            }
+        } 
         
         reloadData()
         
@@ -313,7 +325,22 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate, NCShareLinkCellDel
             }
 
             let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(self.appDelegate.user, urlBase: self.appDelegate.urlBase)) + "-" + sharee.label + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: sharee.shareWith, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageItem.image)
+            if FileManager.default.fileExists(atPath: fileNameLocalPath) {
+                if let image = UIImage(contentsOfFile: fileNameLocalPath) {
+                    cell.imageItem.image = NCUtility.shared.createAvatar(image: image, size: 30)
+                }
+            } else {
+                NCCommunication.shared.downloadAvatar(user: sharee.shareWith, fileNameLocalPath: fileNameLocalPath, size: NCGlobal.shared.avatarSize) { (account, data, errorCode, errorMessage) in
+                    if errorCode == 0 && account == self.appDelegate.account && UIImage(data: data!) != nil {
+                        if let image = UIImage(contentsOfFile: fileNameLocalPath) {
+                            DispatchQueue.main.async {
+                                cell.imageItem.image = NCUtility.shared.createAvatar(image: image, size: 30)
+                            }
+                        }
+                    }
+                }
+            }
+
             cell.imageShareeType.image = NCShareCommon.shared.getImageShareType(shareType: sharee.shareType)
         }
         
@@ -393,7 +420,7 @@ extension NCShare: UITableViewDataSource {
                 cell.status.text = status.statusMessage
                 
                 let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableShare.shareWith + ".png"
-                NCOperationQueue.shared.downloadAvatar(user: tableShare.shareWith, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageItem.image)
+                NCOperationQueue.shared.downloadAvatar(user: tableShare.shareWith, fileNameLocalPath: fileNameLocalPath, view: tableView, indexPath: indexPath)
                 
                 if CCUtility.isAnyPermission(toEdit: tableShare.permissions) {
                     cell.switchCanEdit.setOn(true, animated: false)

+ 1 - 1
iOSClient/Share/NCShareComments.swift

@@ -181,7 +181,7 @@ extension NCShareComments: UITableViewDataSource {
             
             // Image
             let fileNameLocalPath = String(CCUtility.getDirectoryUserData()) + "/" + String(CCUtility.getStringUser(appDelegate.user, urlBase: appDelegate.urlBase)) + "-" + tableComments.actorId + ".png"
-            NCOperationQueue.shared.downloadAvatar(user: tableComments.actorId, fileNameLocalPath: fileNameLocalPath, imageAvatar: &cell.imageItem.image)
+            NCOperationQueue.shared.downloadAvatar(user: tableComments.actorId, fileNameLocalPath: fileNameLocalPath, view: tableView, indexPath: indexPath)
             // Username
             cell.labelUser.text = tableComments.actorDisplayName
             cell.labelUser.textColor = NCBrandColor.shared.label