Browse Source

Move create Item to FileProviderItem

Marino Faggiana 7 years ago
parent
commit
962f85a455
2 changed files with 22 additions and 20 deletions
  1. 0 17
      PickerFileProvider/FileProvider.swift
  2. 22 3
      PickerFileProvider/FileProviderItem.swift

+ 0 - 17
PickerFileProvider/FileProvider.swift

@@ -170,23 +170,6 @@ class FileProvider: NSFileProviderExtension {
         
             if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, identifier.rawValue))  {
                 if let directory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND directoryID = %@", account, metadata.directoryID)) {
-                    
-                    if (!metadata.directory) {
-                        
-                        let identifierPathUrl = fileProviderStorageURL!.appendingPathComponent(metadata.fileID)
-                        let fileIdentifier = "\(identifierPathUrl.path)/\(metadata.fileNameView)"
-                        
-                        do {
-                            try FileManager.default.createDirectory(atPath: identifierPathUrl.path, withIntermediateDirectories: true, attributes: nil)
-                        } catch let error {
-                            print("error: \(error)")
-                        }
-                        
-                        if FileManager.default.fileExists(atPath: fileIdentifier)  == false {
-                            FileManager.default.createFile(atPath: fileIdentifier, contents: nil, attributes: nil)
-                        }
-                    }
-                    
                     return FileProviderItem(metadata: metadata, serverUrl: directory.serverUrl)
                 }
             }

+ 22 - 3
PickerFileProvider/FileProviderItem.swift

@@ -108,12 +108,31 @@ class FileProviderItem: NSObject, NSFileProviderItem {
         // Verify file exists on cache
         if (!metadata.directory) {
             
-            let identifierPathUrl = groupURL!.appendingPathComponent("File Provider Storage").appendingPathComponent(metadata.fileID)
-            let filePath = "\(identifierPathUrl.path)/\(metadata.fileNameView)"
+            let identifierPathUrl = fileProviderStorageURL!.appendingPathComponent(metadata.fileID)
+            let fileIdentifier = "\(identifierPathUrl.path)/\(metadata.fileNameView)"
+            let fileDirectoryUser = "\(directoryUser)/\(metadata.fileID)"
             var fileSize = 0 as Double
+
+            do {
+                try FileManager.default.createDirectory(atPath: identifierPathUrl.path, withIntermediateDirectories: true, attributes: nil)
+            } catch let error {
+                print("error: \(error)")
+            }
+                
+            if FileManager.default.fileExists(atPath: fileIdentifier)  == false {
+                if FileManager.default.fileExists(atPath: fileDirectoryUser) {
+                    do {
+                        try FileManager.default.copyItem(atPath: fileDirectoryUser, toPath: fileIdentifier)
+                    } catch {
+                        FileManager.default.createFile(atPath: fileIdentifier, contents: nil, attributes: nil)
+                    }
+                } else {
+                    FileManager.default.createFile(atPath: fileIdentifier, contents: nil, attributes: nil)
+                }
+            }
             
             do {
-                let attributes = try FileManager.default.attributesOfItem(atPath: filePath)
+                let attributes = try FileManager.default.attributesOfItem(atPath: fileIdentifier)
                 fileSize = attributes[FileAttributeKey.size] as! Double
             } catch let error {
                 print("error: \(error)")