marinofaggiana 4 năm trước cách đây
mục cha
commit
110689dda1

+ 1 - 1
iOSClient/CCGlobal.h

@@ -332,7 +332,7 @@
 
 #define k_notificationCenter_progressTask               @"progressTask"                     // userInfo: account, ocId, serverUrl, status, progress, totalBytes, totalBytesExpected
 
-#define k_notificationCenter_createFolder               @"createFolder"                     // userInfo: fileName, serverUrl, errorCode, errorDescription
+#define k_notificationCenter_createFolder               @"createFolder"                     // userInfo: metadata
 #define k_notificationCenter_deleteFile                 @"deleteFile"                       // userInfo: metadata, onlyLocal, errorCode, errorDescription
 #define k_notificationCenter_renameFile                 @"renameFile"                       // userInfo: metadata, errorCode, errorDescription
 #define k_notificationCenter_moveFile                   @"moveFile"                         // userInfo: metadata, metadataNew, errorCode, errorDescription

+ 5 - 2
iOSClient/Favorites/NCFavorite.swift

@@ -78,7 +78,8 @@ class NCFavorite: NCCollectionViewCommon  {
     // MARK: - NC API & Algorithm
     
     override func reloadDataSource() {
-          
+        super.reloadDataSource()
+        
         var sort: String
         var ascending: Bool
         var directoryOnTop: Bool
@@ -101,7 +102,8 @@ class NCFavorite: NCCollectionViewCommon  {
     }
     
     override func reloadDataSourceNetwork() {
-       
+        super.reloadDataSourceNetwork()
+        
         if isSearching {
             networkSearch()
             return
@@ -141,6 +143,7 @@ class NCFavorite: NCCollectionViewCommon  {
                             }
                         }
                     }
+                    self.metadataFolder = metadataFolder
                 }
                 self.isReloadDataSourceNetworkInProgress = false
                 self.reloadDataSource()

+ 8 - 10
iOSClient/Main/CCMain.m

@@ -448,18 +448,16 @@
 - (void)createFolder:(NSNotification *)notification
 {
     NSDictionary *userInfo = notification.userInfo;
-    NSString *serverUrl = userInfo[@"serverUrl"];
-    NSInteger errorCode = [userInfo[@"errorCode"] integerValue];
+    tableMetadata *metadata = userInfo[@"metadata"];
     
-    if (![serverUrl isEqualToString:self.serverUrl]) { return; }
-    if (errorCode == 0) {
-        BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl e2eEncrypted:nil account:appDelegate.account urlBase: appDelegate.urlBase];
-        if (isFolderEncrypted) {
-            [self readFolder:serverUrl];
-        }
-    }
+    if (![metadata.serverUrl isEqualToString:self.serverUrl]) { return; }
     
-    [self reloadDatasource:self.serverUrl ocId:nil];
+    BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:metadata.serverUrl e2eEncrypted:nil account:appDelegate.account urlBase: appDelegate.urlBase];
+    if (isFolderEncrypted) {
+        [self readFolder:metadata.serverUrl];
+    } else {
+        [self reloadDatasource:self.serverUrl ocId:nil];
+    }
 }
 
 - (void)deleteFile:(NSNotification *)notification

+ 33 - 13
iOSClient/Main/Collection/NCCollectionViewCommon.swift

@@ -34,10 +34,11 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
         
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
        
-    internal var metadataPush: tableMetadata?
     internal var isEditMode = false
     internal var selectOcId: [String] = []
     internal var metadatasSource: [tableMetadata] = []
+    internal var metadataFolder: tableMetadata?
+    internal var metadataPush: tableMetadata?
     internal var dataSource: NCDataSource?
         
     internal var layout = ""
@@ -52,6 +53,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
     private var gridLayout: NCGridLayout!
             
     private let headerMenuHeight: CGFloat = 50
+    private var headerRichWorkspaceHeight: CGFloat = 0
     private let sectionHeaderHeight: CGFloat = 20
     private let footerHeight: CGFloat = 50
     
@@ -267,11 +269,20 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
     @objc func createFolder(_ notification: NSNotification) {
         if self.view?.window == nil { return }
         
-//        if let userInfo = notification.userInfo as NSDictionary? {
-//            if let fileName = userInfo["fileName"] as? String, let serverUrl = userInfo["serverUrl"] as? String,let errorCode = userInfo["errorCode"] as? Int, let errorDescription = userInfo["errorDescription"] as? String {
-               
-//            }
-//        }
+        if let userInfo = notification.userInfo as NSDictionary? {
+            if let metadata = userInfo["metadata"] as? tableMetadata {
+                if metadata.serverUrl == serverUrl && metadata.account == appDelegate.account {
+                    if let row = dataSource?.addMetadata(metadata) {
+                        let indexPath = IndexPath(row: row, section: 0)
+                        collectionView?.performBatchUpdates({
+                            collectionView?.insertItems(at: [indexPath])
+                        }, completion: { (_) in
+                            self.collectionView?.reloadData()
+                        })
+                    }
+                }
+            }
+        }
     }
     
     @objc func favoriteFile(_ notification: NSNotification) {
@@ -585,7 +596,13 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
     
     // MARK: - NC API & Algorithm
     
-    @objc func reloadDataSource() { }
+    @objc func reloadDataSource() {
+        if metadataFolder?.richWorkspace?.count ?? 0 == 0 {
+            headerRichWorkspaceHeight = 0
+        } else {
+            headerRichWorkspaceHeight = UIScreen.main.bounds.size.height / 4
+        }
+    }
     @objc func reloadDataSourceNetwork() { }
     @objc func networkSearch() {
         if literalSearch?.count ?? 0 > 1 {
@@ -669,7 +686,8 @@ extension NCCollectionViewCommon: UICollectionViewDataSource {
                 header.separator.backgroundColor = NCBrandColor.sharedInstance.separator
                 header.setStatusButton(count: dataSource?.metadatas.count ?? 0)
                 header.setTitleSorted(datasourceTitleButton: titleButton)
-                
+                header.labelSectionHeightConstraint.constant = headerRichWorkspaceHeight
+
                 if groupBy == "none" {
                     header.labelSection.isHidden = true
                     header.labelSectionHeightConstraint.constant = 0
@@ -679,6 +697,12 @@ extension NCCollectionViewCommon: UICollectionViewDataSource {
                     header.labelSectionHeightConstraint.constant = sectionHeaderHeight
                 }
                 
+                if metadataFolder?.richWorkspace?.count ?? 0 == 0 {
+                    header.labelSection.isHidden = true
+                } else {
+                    header.labelSection.isHidden = false
+                }
+                
                 return header
                 
             } else {
@@ -750,11 +774,7 @@ extension NCCollectionViewCommon: UICollectionViewDelegateFlowLayout {
 
     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
         if section == 0 {
-            if groupBy == "none" {
-                return CGSize(width: collectionView.frame.width, height: headerMenuHeight)
-            } else {
-                return CGSize(width: collectionView.frame.width, height: headerMenuHeight + sectionHeaderHeight)
-            }
+            return CGSize(width: collectionView.frame.width, height: headerMenuHeight + sectionHeaderHeight + headerRichWorkspaceHeight)
         } else {
             return CGSize(width: collectionView.frame.width, height: sectionHeaderHeight)
         }

+ 8 - 5
iOSClient/Networking/NCNetworking.swift

@@ -745,7 +745,7 @@ import Queuer
             fileNameFolder = NCUtility.shared.createFileName(fileNameFolder, serverUrl: serverUrl, account: account)
         }
         if fileNameFolder.count == 0 {
-            self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": Int(0)], errorDescription: "", completion: completion)
+            completion(0, "")
             return
         }
         let fileNameFolderUrl = serverUrl + "/" + fileNameFolder
@@ -758,18 +758,21 @@ import Queuer
                         NCManageDatabase.sharedInstance.addMetadata(metadataFolder!)
                         // Add folder
                         NCManageDatabase.sharedInstance.addDirectory(encrypted: metadataFolder!.e2eEncrypted, favorite: metadataFolder!.favorite, ocId: metadataFolder!.ocId, fileId: metadataFolder!.fileId, etag: nil, permissions: metadataFolder!.permissions, serverUrl: fileNameFolderUrl, richWorkspace: metadataFolder!.richWorkspace, account: account)
+                        
+                        if let metadata = NCManageDatabase.sharedInstance.getMetadataFromOcId(metadataFolder?.ocId) {
+                            self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["metadata": metadata], errorDescription: errorDescription, completion: completion)
+                        }
                     }
-                    self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": errorCode], errorDescription: errorDescription, completion: completion)
+                    completion(errorCode, errorDescription)
                 }
             } else if errorCode == 405 && overwrite {
-                self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": 0], errorDescription: "", completion: completion)
+                completion(0, "")
             } else {
-                
                 #if !EXTENSION
                 NCContentPresenter.shared.messageNotification("_error_", description: errorDescription, delay: TimeInterval(k_dismissAfterSecond), type: NCContentPresenter.messageType.error, errorCode: errorCode)
                 #endif
                 
-                self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": errorCode], errorDescription: errorDescription, completion: completion)
+                completion(errorCode, errorDescription)
             }
         }
     }