Browse Source

Files : enable setLastUsedDate

Marino Faggiana 6 years ago
parent
commit
e15ba95620

+ 17 - 25
PickerFileProvider/FileProviderEnumerator.swift

@@ -71,7 +71,23 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
         
         if enumeratedItemIdentifier == .workingSet {
             
-            items = selectItemWorkingSet()
+            // Tag
+            let tags = NCManageDatabase.sharedInstance.getTags(predicate: NSPredicate(format: "account = %@", providerData.account))
+            for tag in tags {
+                
+                if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, tag.fileID))  {
+                    
+                    if metadata.directory == false {
+                        providerData.createFileIdentifierOnFileSystem(metadata: metadata)
+                    }
+                    
+                    let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
+                    if parentItemIdentifier != nil {
+                        let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
+                        items.append(item)
+                    }
+                }
+            }
             
             observer.didEnumerate(items)
             observer.finishEnumerating(upTo: nil)
@@ -207,29 +223,5 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
         
         return items
     }
-    
-    func selectItemWorkingSet() -> [NSFileProviderItemProtocol] {
-        
-        var items: [NSFileProviderItemProtocol] = []
 
-        // Tag
-        let tags = NCManageDatabase.sharedInstance.getTags(predicate: NSPredicate(format: "account = %@", providerData.account))
-        for tag in tags {
-            
-            if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, tag.fileID))  {
-                
-                if metadata.directory == false {
-                    providerData.createFileIdentifierOnFileSystem(metadata: metadata)
-                }
-                
-                let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
-                if parentItemIdentifier != nil {
-                    let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
-                    items.append(item)
-                }
-            }
-        }
-        return items
-    }
-    
 }

+ 24 - 0
PickerFileProvider/FileProviderExtension+Actions.swift

@@ -353,6 +353,30 @@ extension FileProviderExtension {
         }
     }
     
+    override func setLastUsedDate(_ lastUsedDate: Date?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
+        
+        /* ONLY iOS 11*/
+        guard #available(iOS 11, *) else { return }
+        
+        guard let metadata = providerData.getTableMetadataFromItemIdentifier(itemIdentifier) else {
+            completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
+        }
+        
+        let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
+        
+        if parentItemIdentifier != nil {
+            
+            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
+            item.lastUsedDate = lastUsedDate
+
+            completionHandler(item, nil)
+            
+        } else {
+            completionHandler(nil, nil)
+        }
+    }
+    
     /*
      override func trashItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
      print("[LOG] trashitem")

+ 1 - 1
PickerFileProvider/FileProviderItem.swift

@@ -49,7 +49,7 @@ class FileProviderItem: NSObject, NSFileProviderItem {
     // Tracking Usage
     var contentModificationDate: Date?                              // The date the item was last modified
     var creationDate: Date?                                         // The date the item was created
-    //var lastUsedDate: Date?                                         // The date the item was last used
+    var lastUsedDate: Date? = Date()                                // The date the item was last used, default to the moment when the item is created 
 
     // Tracking Versions
     var versionIdentifier: Data?                                    // A data value used to determine when the item changes