Marino Faggiana 7 years ago
parent
commit
31d684e6f1
2 changed files with 25 additions and 2 deletions
  1. 18 2
      PickerFileProvider/FileProvider.swift
  2. 7 0
      PickerFileProvider/FileProviderItem.swift

+ 18 - 2
PickerFileProvider/FileProvider.swift

@@ -699,8 +699,24 @@ class FileProvider: NSFileProviderExtension {
     }
     
     override func setTagData(_ tagData: Data?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
-        print("[LOG] setTagData")
-        completionHandler(nil, nil)
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else {
+            return
+        }
+        
+        if tagData != nil {
+            // Add Tag
+            guard let tag = String(data: tagData!, encoding: .utf8) else {
+                completionHandler(nil, NSFileProviderError(.noSuchItem))
+                return
+            }
+            NCManageDatabase.sharedInstance.addTag(itemIdentifier.rawValue, tagIOS: tag)
+            
+        } else {
+            // Remove Tag
+            NCManageDatabase.sharedInstance.deleteTag(itemIdentifier.rawValue)
+        }
     }
     
     override func trashItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {

+ 7 - 0
PickerFileProvider/FileProviderItem.swift

@@ -67,6 +67,8 @@ class FileProviderItem: NSObject, NSFileProviderItem {
     var isDownloaded: Bool = true                                   // A Boolean value that indicates whether the item has been downloaded from your remote server
     var downloadingError: Error?                                    // An error that occurred while downloading the item
 
+    var tagData: Data?                                              // Tag
+    
     var isDirectory = false;
     
     init(metadata: tableMetadata, serverUrl: String) {
@@ -125,5 +127,10 @@ class FileProviderItem: NSObject, NSFileProviderItem {
                 self.isMostRecentVersionDownloaded = true
             }
         }
+        
+        // Tag
+        if let tableTag = NCManageDatabase.sharedInstance.getTag(predicate: NSPredicate(format: "account = %@ AND fileID = %@", metadata.account, metadata.fileID)) {
+            tagData = tableTag.tagIOS.data(using: .utf8)
+        }
     }
 }