Marino Faggiana 6 роки тому
батько
коміт
11217f56eb

+ 1 - 10
PickerFileProvider/FileProviderExtension+Actions.swift

@@ -111,17 +111,8 @@ extension FileProviderExtension {
             return
         }
         
-        //TODO: se è un UPLOAD QUEUE assetlocalidentifier
-        if let uploadQueue = NCManageDatabase.sharedInstance.getQueueUpload(predicate: NSPredicate(format: "account = %@ AND assetLocalIdentifier = %@", self.providerData.account, metadata.assetLocalIdentifier)) {
-            
-            NCManageDatabase.sharedInstance.deleteQueueUpload(assetLocalIdentifier: metadata.assetLocalIdentifier, selector: metadata.sessionSelector)
-
-            NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "assetLocalIdentifier = %@", metadata.assetLocalIdentifier), clearDateReadDirectoryID: nil)
+        deleteFile(withIdentifier: itemIdentifier, parentItemIdentifier: parentItemIdentifier, metadata: metadata)
 
-        } else {
-            deleteFile(withIdentifier: itemIdentifier, parentItemIdentifier: parentItemIdentifier, metadata: metadata)
-        }
-        
         // return immediately
         queueTradeSafe.sync(flags: .barrier) {
             fileProviderSignalDeleteContainerItemIdentifier[itemIdentifier] = itemIdentifier

+ 22 - 30
PickerFileProvider/FileProviderExtension+Network.swift

@@ -150,28 +150,21 @@ extension FileProviderExtension {
         /* ONLY iOS 11*/
         guard #available(iOS 11, *) else { return }
         
-        if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier)) {
+        if errorCode == 0 {
             
-            let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
-            if parentItemIdentifier != nil {
-                
-                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
+            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, fileID)) else {
+                return
+            }
             
-                queueTradeSafe.async(flags: .barrier) {
-                    fileProviderSignalDeleteContainerItemIdentifier[item.itemIdentifier] = item.itemIdentifier
-                    fileProviderSignalDeleteWorkingSetItemIdentifier[item.itemIdentifier] = item.itemIdentifier
-                    self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
-                }
+            guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
+                return
             }
-        }
-        
-        NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier), clearDateReadDirectoryID: nil)
-        
-        if errorCode == 0 {
             
-            NCManageDatabase.sharedInstance.deleteQueueUpload(assetLocalIdentifier: assetLocalIdentifier, selector: selector)
+            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
             
-            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, fileID)) {
+            if assetLocalIdentifier != "" {
+                
+                NCManageDatabase.sharedInstance.deleteQueueUpload(assetLocalIdentifier: assetLocalIdentifier, selector: selector)
                 
                 // Rename directory file
                 if fileManager.fileExists(atPath: providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier) {
@@ -179,19 +172,18 @@ extension FileProviderExtension {
                     _ = moveFile(providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier, toPath: providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue)
                 }
                 
-                NCManageDatabase.sharedInstance.setLocalFile(fileID: fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: metadata.etag, etagFPE: metadata.etag)
-                
-                guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
-                    return
-                }
-                
-                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
-                
-                queueTradeSafe.async(flags: .barrier) {
-                    fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
-                    fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
-                    self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
-                }
+            } else {
+
+                let filePath = providerData.fileProviderStorageURL!.path + "/" + item.itemIdentifier.rawValue + "/" + metadata.fileName
+                _ = self.copyFile(filePath, toPath: providerData.directoryUser + "/" + metadata.fileID)
+            }
+            
+            NCManageDatabase.sharedInstance.setLocalFile(fileID: fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: metadata.etag, etagFPE: metadata.etag)
+            
+            queueTradeSafe.async(flags: .barrier) {
+                fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
+                fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
+                self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
             }
             
             uploadFile()

+ 14 - 1
PickerFileProvider/FileProviderExtension.swift

@@ -462,13 +462,26 @@ class FileProviderExtension: NSFileProviderExtension, CCNetworkingDelegate {
             let pathComponents = url.pathComponents
 
             assert(pathComponents.count > 2)
+
             let identifier = NSFileProviderItemIdentifier(pathComponents[pathComponents.count - 2])
             
             guard let metadata = providerData.getTableMetadataFromItemIdentifier(identifier) else {
                 return
             }
             
-            CCNetworking.shared().uploadFileMetadata(metadata, taskStatus: Int(k_taskStatusResume))
+            metadata.assetLocalIdentifier = ""
+            metadata.session = k_upload_session_extension
+            metadata.sessionID = metadata.fileID
+            metadata.sessionSelector = selectorUploadFile
+            metadata.sessionSelectorPost = ""
+            
+            guard let metadataForUpload = NCManageDatabase.sharedInstance.addMetadata(metadata) else {
+                return
+            }
+            
+            _ = self.copyFile(url.path, toPath: providerData.directoryUser + "/" + metadata.fileID)
+
+            CCNetworking.shared().uploadFileMetadata(metadataForUpload, taskStatus: Int(k_taskStatusResume), delegate: self)
             
         } else {
             

+ 2 - 2
iOSClient/AppDelegate.m

@@ -1337,7 +1337,7 @@
         if ([metadata.session isEqualToString:k_upload_session_wwan])
             metadata.session = k_upload_session;
         
-        [[CCNetworking sharedNetworking] uploadFileMetadata:metadata taskStatus:k_taskStatusResume];
+        [[CCNetworking sharedNetworking] uploadFileMetadata:metadata taskStatus:k_taskStatusResume delegate:nil];
     }
     else if ([[_listChangeTask objectForKey:fileID] isEqualToString:@"reloadDownload"]) {
         
@@ -1563,7 +1563,7 @@
     
     for (tableMetadata *metadata in metadatas) {
         
-        [[CCNetworking sharedNetworking] uploadFileMetadata:metadata taskStatus: k_taskStatusResume];
+        [[CCNetworking sharedNetworking] uploadFileMetadata:metadata taskStatus: k_taskStatusResume delegate:nil];
         
         [directoryIDs addObject:metadata.directoryID];
         

+ 1 - 1
iOSClient/Networking/CCNetworking.h

@@ -63,7 +63,7 @@
 // Upload
 - (void)uploadFileFromAssetLocalIdentifier:(CCMetadataNet *)metadataNet delegate:(id)delegate;
 - (void)uploadFile:(NSString *)fileName serverUrl:(NSString *)serverUrl assetLocalIdentifier:(NSString *)assetLocalIdentifier session:(NSString *)session taskStatus:(NSInteger)taskStatus selector:(NSString *)selector selectorPost:(NSString *)selectorPost errorCode:(NSInteger)errorCode delegate:(id)delegate;
-- (void)uploadFileMetadata:(tableMetadata *)metadata taskStatus:(NSInteger)taskStatus;
+- (void)uploadFileMetadata:(tableMetadata *)metadata taskStatus:(NSInteger)taskStatus delegate:(id)delegate;
 
 // Utility
 

+ 5 - 1
iOSClient/Networking/CCNetworking.m

@@ -976,12 +976,16 @@
     }
 }
 
-- (void)uploadFileMetadata:(tableMetadata *)metadata taskStatus:(NSInteger)taskStatus
+- (void)uploadFileMetadata:(tableMetadata *)metadata taskStatus:(NSInteger)taskStatus delegate:(id)delegate
 {
     BOOL reSend = NO;
     NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
     if (!serverUrl) return;
     
+    //add delegate
+    if (delegate)
+        [_delegates setObject:delegate forKey:metadata.fileID];
+    
     if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/%@", _directoryUser, metadata.sessionID]]) {
             
         reSend = YES;