瀏覽代碼

new view share

marinofaggiana 5 年之前
父節點
當前提交
9765dbc594
共有 3 個文件被更改,包括 83 次插入28 次删除
  1. 80 19
      iOSClient/Database/NCManageDatabase.swift
  2. 3 3
      iOSClient/Main/CCMain.m
  3. 0 6
      iOSClient/Share/NCShare.swift

+ 80 - 19
iOSClient/Database/NCManageDatabase.swift

@@ -2287,25 +2287,15 @@ class NCManageDatabase: NSObject {
 
         realm.beginWrite()
 
-        // Verify if exists
-        let result = realm.objects(tableShare.self).filter("account = %@ AND fileName = %@ AND serverUrl = %@", account, fileName, serverUrl).first
+        // Add new
+        let addObject = tableShare()
         
-        if result != nil {
-            
-            result?.shareUserAndGroup = share
-            
-        } else {
-            
-            // Add new
-            let addObject = tableShare()
-                
-            addObject.account = account
-            addObject.fileName = fileName
-            addObject.serverUrl = serverUrl
-            addObject.shareUserAndGroup = share
-                
-            realm.add(addObject)
-        }
+        addObject.account = account
+        addObject.fileName = fileName
+        addObject.serverUrl = serverUrl
+        addObject.shareUserAndGroup = share
+        
+        realm.add(addObject)
         
         do {
             try realm.commitWrite()
@@ -2388,6 +2378,77 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func updateShareV2(_ items: [String:OCSharedDto], activeUrl: String, account: String) {
+        
+        self.removeShareActiveAccount(account: account)
+        
+        var itemsLink = [OCSharedDto]()
+        var itemsUsersAndGroups = [OCSharedDto]()
+        
+        for (_, itemOCSharedDto) in items {
+            
+            if (itemOCSharedDto.shareType == Int(shareTypeLink.rawValue)) {
+                itemsLink.append(itemOCSharedDto)
+            }
+            
+            if (itemOCSharedDto.shareWith.count > 0 && (itemOCSharedDto.shareType == Int(shareTypeUser.rawValue) || itemOCSharedDto.shareType == Int(shareTypeGroup.rawValue) || itemOCSharedDto.shareType == Int(shareTypeRemote.rawValue)  )) {
+                itemsUsersAndGroups.append(itemOCSharedDto)
+            }
+        }
+        
+        // Manage sharesLink
+        
+        for itemOCSharedDto in itemsLink {
+            
+            let fullPath = CCUtility.getHomeServerUrlActiveUrl(activeUrl) + "\(itemOCSharedDto.path!)"
+            let fileName = NSString(string: fullPath).lastPathComponent
+            var serverUrl = NSString(string: fullPath).substring(to: (fullPath.count - fileName.count - 1))
+            
+            if serverUrl.hasSuffix("/") {
+                serverUrl = NSString(string: serverUrl).substring(to: (serverUrl.count - 1))
+            }
+            
+            if itemOCSharedDto.idRemoteShared > 0 {
+                _ = self.addShareLink("\(itemOCSharedDto.idRemoteShared)", fileName: fileName, serverUrl: serverUrl, account: account)
+            }
+        }
+        
+        // Manage sharesUserAndGroup
+        
+        var paths = [String:[String]]()
+        
+        for itemOCSharedDto in itemsUsersAndGroups {
+            
+            if paths[itemOCSharedDto.path] != nil {
+                
+                var share : [String] = paths[itemOCSharedDto.path]!
+                share.append("\(itemOCSharedDto.idRemoteShared)")
+                paths[itemOCSharedDto.path] = share
+                
+            } else {
+                
+                paths[itemOCSharedDto.path] = ["\(itemOCSharedDto.idRemoteShared)"]
+            }
+        }
+        
+        for (path, idsRemoteSharedArray) in paths {
+            
+            let idsRemoteShared = idsRemoteSharedArray.joined(separator: ",")
+            
+            print("[LOG] share \(String(describing: idsRemoteShared))")
+            
+            let fullPath = CCUtility.getHomeServerUrlActiveUrl(activeUrl) + "\(path)"
+            let fileName = NSString(string: fullPath).lastPathComponent
+            var serverUrl = NSString(string: fullPath).substring(to: (fullPath.count - fileName.count - 1))
+            
+            if serverUrl.hasSuffix("/") {
+                serverUrl = NSString(string: serverUrl).substring(to: (serverUrl.count - 1))
+            }
+            
+            _ = self.addShareUserAndGroup(idsRemoteShared, fileName: fileName, serverUrl: serverUrl, account: account)
+        }
+    }
+    
     @objc func updateShare(_ items: [String:OCSharedDto], activeUrl: String, account: String) -> [Any]? {
         
         var sharesLink = [String:String]()
@@ -2506,7 +2567,7 @@ class NCManageDatabase: NSObject {
         
         return Array(results)
     }
-
+    
     //MARK: -
     //MARK: Table Tag
     

+ 3 - 3
iOSClient/Main/CCMain.m

@@ -1883,10 +1883,7 @@
 
     UINavigationController *shareNavigationController = [[UIStoryboard storyboardWithName:@"NCShare" bundle:nil] instantiateInitialViewController];
     NCSharePaging *shareViewController = (NCSharePaging *)shareNavigationController.topViewController;
-    
     shareViewController.metadata = metadata;
-    shareViewController.shareLink = [appDelegate.sharesLink objectForKey:[metadata.serverUrl stringByAppendingString:metadata.fileName]];
-    shareViewController.shareUserAndGroup = [appDelegate.sharesUserAndGroup objectForKey:[metadata.serverUrl stringByAppendingString:metadata.fileName]];;
     
     [shareNavigationController setModalPresentationStyle:UIModalPresentationPageSheet];
     [self presentViewController:shareNavigationController animated:YES completion:nil];
@@ -1921,6 +1918,9 @@
             for (OCSharedDto *item in items)
                 [appDelegate.sharesID setObject:item forKey:[@(item.idRemoteShared) stringValue]];
             
+            // V2
+            [[NCManageDatabase sharedInstance] updateShareV2:appDelegate.sharesID activeUrl:appDelegate.activeUrl account:appDelegate.activeAccount];
+            //
             NSArray *result = [[NCManageDatabase sharedInstance] updateShare:appDelegate.sharesID activeUrl:appDelegate.activeUrl account:appDelegate.activeAccount];
             if (result) {
                 appDelegate.sharesLink = result[0];

+ 0 - 6
iOSClient/Share/NCShare.swift

@@ -29,8 +29,6 @@ class NCSharePaging: UIViewController {
     private let pagingViewController = NCShareHeaderViewController()
     
     @objc var metadata: tableMetadata?
-    @objc var shareLink: String = ""
-    @objc var shareUserAndGroup: String = ""
 
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -96,8 +94,6 @@ extension NCSharePaging: PagingViewControllerDataSource {
             let viewController = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "sharing") as! NCShare
             viewController.metadata = metadata!
             viewController.height = height
-            viewController.shareLink = shareLink
-            viewController.shareUserAndGroup = shareUserAndGroup
             return viewController
         default:
             return UIViewController()
@@ -237,8 +233,6 @@ class NCShare: UIViewController, UIGestureRecognizerDelegate {
     var metadata: tableMetadata?
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
 
-    public var shareLink: String = ""
-    public var shareUserAndGroup: String = ""
     public var height: CGFloat = 0
     
     private let iconShare: CGFloat = 200