Explorar o código

Favorite Files

Marino Faggiana %!s(int64=7) %!d(string=hai) anos
pai
achega
a955ed730f
Modificáronse 1 ficheiros con 18 adicións e 20 borrados
  1. 18 20
      PickerFileProvider/FileProvider.swift

+ 18 - 20
PickerFileProvider/FileProvider.swift

@@ -96,6 +96,9 @@ class FileProvider: NSFileProviderExtension {
             
             // Only iOS 11
             
+            listUpdateItems.removeAll()
+            listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
+            
         } else {
             
             NSFileCoordinator().coordinate(writingItemAt: self.documentStorageURL, options: [], error: nil, byAccessor: { newURL in
@@ -705,6 +708,8 @@ class FileProvider: NSFileProviderExtension {
             return
         }
         
+        var favorite = false
+        
         guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
             return
@@ -725,43 +730,36 @@ class FileProvider: NSFileProviderExtension {
                 let newRank = listFavoriteIdentifierRank.count + 1
                 listFavoriteIdentifierRank[itemIdentifier.rawValue] = NSNumber(value: Int64(newRank))
             }
+            favorite = true
         }
         
         // Call the completion handler before performing any network activity or other long-running tasks. Defer these tasks to the background
         let item = FileProviderItem(metadata: metadata, serverUrl: serverUrl)
         completionHandler(item, nil)
         
-        /*
-         guard let item = try? item(for: itemIdentifier) else {
-         completionHandler(nil, NSFileProviderError(.noSuchItem))
-         return
-         }
+        // Change Status ? Call API Nextcloud Network
+        if (favorite == true && metadata.favorite == false) || (favorite == false && metadata.favorite == true) {
          
-        DispatchQueue(label: "com.nextcloud", qos: .background, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil).async {
-            
-            guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, itemIdentifier.rawValue)) else {
-                completionHandler(nil, NSFileProviderError(.noSuchItem))
-                return
-            }
-            
-            guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
-                completionHandler(nil, NSFileProviderError(.noSuchItem))
-                return
-            }
-            
-            if (favorite == true && metadata.favorite == false) || (favorite == false && metadata.favorite == true) {
+            DispatchQueue(label: "com.nextcloud", qos: .background, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil).async {
                 
-                ocNetworking?.settingFavorite(metadata.fileName, serverUrl: serverUrl, favorite: true, success: {
+                ocNetworking?.settingFavorite(metadata.fileName, serverUrl: serverUrl, favorite: favorite, success: {
                     
+                    // Change DB
                     metadata.favorite = favorite
                     _ = NCManageDatabase.sharedInstance.addMetadata(metadata)
                     
+                    // Refresh Favorite Identifier Rank
+                    listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
+                    
+                    // Refresh Item
+                    self.refreshEnumerator(identifier: itemIdentifier, serverUrl: serverUrl)
+                    
+                    
                 }, failure: { (errorMessage, errorCode) in
                     print("errorMessage")
                 })
             }
         }
-        */
     }
     
     override func setLastUsedDate(_ lastUsedDate: Date?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {