ソースを参照

improvements code

Marino Faggiana 6 年 前
コミット
7a15bb9551

+ 78 - 97
PickerFileProvider/FileProviderExtension+Actions.swift

@@ -173,20 +173,18 @@ extension FileProviderExtension {
                 return
             }
             
-            let parentItemIdentifier = self.providerData.getParentItemIdentifier(metadata: metadata)
-            if parentItemIdentifier != nil {
-                
-                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: self.providerData)
-                
-                fileProviderSignalUpdateItem[item.itemIdentifier] = item
-                self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
-                
-                completionHandler(item, nil)
-                
-            } else {
+            guard let parentItemIdentifier = self.providerData.getParentItemIdentifier(metadata: metadata) else {
                 completionHandler(nil, NSFileProviderError(.noSuchItem))
+                return
             }
             
+            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: self.providerData)
+                
+            fileProviderSignalUpdateItem[item.itemIdentifier] = item
+            self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+                
+            completionHandler(item, nil)
+            
         }, failure: { (errorMessage, errorCode) in
             completionHandler(nil, NSFileProviderError(.serverUnreachable))
         })
@@ -244,86 +242,74 @@ extension FileProviderExtension {
                 NCManageDatabase.sharedInstance.setLocalFile(fileID: metadata.fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: itemName, etag: nil, etagFPE: nil)
             }
             
-            let parentItemIdentifier = self.providerData.getParentItemIdentifier(metadata: metadata)
-            if parentItemIdentifier != nil {
-                
-                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: self.providerData)
-                
-                fileProviderSignalUpdateItem[item.itemIdentifier] = item
-                self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
-                
-                completionHandler(item, nil)
-                
-            } else {
-                
+            guard let parentItemIdentifier = self.providerData.getParentItemIdentifier(metadata: metadata) else {
                 completionHandler(nil, NSFileProviderError(.noSuchItem))
+                return
             }
             
+            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: self.providerData)
+                
+            fileProviderSignalUpdateItem[item.itemIdentifier] = item
+            self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+                
+            completionHandler(item, nil)
+            
         }, failure: { (errorMessage, errorCode) in
             completionHandler(nil, NSFileProviderError(.serverUnreachable))
         })
     }
     
+    /*
     override func setFavoriteRank(_ favoriteRank: NSNumber?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
         
         /* ONLY iOS 11*/
         guard #available(iOS 11, *) else { return }
         
-        completionHandler(nil, nil)
-        
-        /*
-         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
-         }
-         
-         // Refresh Favorite Identifier Rank
-         listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
-         
-         if favoriteRank == nil {
-         listFavoriteIdentifierRank.removeValue(forKey: itemIdentifier.rawValue)
-         } else {
-         let rank = listFavoriteIdentifierRank[itemIdentifier.rawValue]
-         if rank == nil {
-         listFavoriteIdentifierRank[itemIdentifier.rawValue] = favoriteRank//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)
-         
-         // 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 {
-         
-         //NSString *fileOrFolderPath = [CCUtility returnFileNamePathFromFileName:fileName serverUrl:serverUrl activeUrl:_activeUrl];
-         
-         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)
+        // Check account
+        if providerData.setupActiveAccount() == false {
+            completionHandler(nil, NSFileProviderError(.notAuthenticated))
+            return
+        }
+        
+        guard let metadata = providerData.getTableMetadataFromItemIdentifier(itemIdentifier) else {
+            completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
+        }
+        
+        guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
+            completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
+        }
+        
+        guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
+            completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
+        }
          
-         }, failure: { (errorMessage, errorCode) in
-         print("errorMessage")
-         })
-         }
-         }
-         */
+        // Refresh Favorite Identifier Rank
+        var listFavoriteIdentifierRank = NCManageDatabase.sharedInstance.getTableMetadatasDirectoryFavoriteIdentifierRank()
+        var favorite = false
+        
+        if favoriteRank == nil {
+            listFavoriteIdentifierRank.removeValue(forKey: itemIdentifier.rawValue)
+        } else {
+            let rank = listFavoriteIdentifierRank[itemIdentifier.rawValue]
+            if rank == nil {
+                listFavoriteIdentifierRank[itemIdentifier.rawValue] = favoriteRank//NSNumber(value: Int64(newRank))
+            }
+            favorite = true
+        }
+        
+        let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
+            
+        fileProviderSignalUpdateItem[item.itemIdentifier] = item
+        signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+            
+        completionHandler(item, nil)
+        
+        // Call the completion handler before performing any network activity or other long-running tasks. Defer these tasks to the background
     }
+    */
     
     override func setTagData(_ tagData: Data?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
         
@@ -338,19 +324,17 @@ extension FileProviderExtension {
         // Add, Remove (nil)
         NCManageDatabase.sharedInstance.addTag(metadata.fileID, tagIOS: tagData)
         
-        let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
-        if parentItemIdentifier != nil {
-            
-            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
-            
-            fileProviderSignalUpdateItem[item.itemIdentifier] = item
-            signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
-            
-            completionHandler(item, nil)
-            
-        } else {
+        guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
             completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
         }
+        
+        let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
+            
+        fileProviderSignalUpdateItem[item.itemIdentifier] = item
+        signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+            
+        completionHandler(item, nil)
     }
     
     override func setLastUsedDate(_ lastUsedDate: Date?, forItemIdentifier itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void) {
@@ -363,18 +347,15 @@ extension FileProviderExtension {
             return
         }
         
-        let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
+        guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
+            completionHandler(nil, NSFileProviderError(.noSuchItem))
+            return
+        }
         
-        if parentItemIdentifier != nil {
-            
-            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
-            item.lastUsedDate = lastUsedDate
+        let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
+        item.lastUsedDate = lastUsedDate
 
-            completionHandler(item, nil)
-            
-        } else {
-            completionHandler(nil, nil)
-        }
+        completionHandler(item, nil)
     }
     
     /*

+ 13 - 9
PickerFileProvider/FileProviderExtension+Network.swift

@@ -87,10 +87,13 @@ extension FileProviderExtension {
         if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier)) {
             
             let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
-            let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
+            if parentItemIdentifier != nil {
+                
+                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
             
-            fileProviderSignalDeleteItemIdentifier[item.itemIdentifier] = item.itemIdentifier
-            signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+                fileProviderSignalDeleteItemIdentifier[item.itemIdentifier] = item.itemIdentifier
+                signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+            }
         }
         
         NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier), clearDateReadDirectoryID: nil)
@@ -109,13 +112,14 @@ extension FileProviderExtension {
                 
                 NCManageDatabase.sharedInstance.setLocalFile(fileID: fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: metadata.etag, etagFPE: metadata.etag)
                 
-                let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
-                if parentItemIdentifier != nil {
-                    let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
-                    
-                    fileProviderSignalUpdateItem[item.itemIdentifier] = item
-                    signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
+                guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
+                    return
                 }
+                
+                let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
+                    
+                fileProviderSignalUpdateItem[item.itemIdentifier] = item
+                signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
             }
             
         } else {