// // FileProviderEnumeratorFile.swift // PickerFileProvider // // Created by Marino Faggiana on 30/04/18. // Copyright © 2018 TWS. All rights reserved. // // Author Marino Faggiana // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // import FileProvider class FileProviderEnumeratorFile: NSObject, NSFileProviderEnumerator { var enumeratedItemIdentifier: NSFileProviderItemIdentifier init(enumeratedItemIdentifier: NSFileProviderItemIdentifier) { self.enumeratedItemIdentifier = enumeratedItemIdentifier super.init() } func invalidate() { } func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) { var items: [NSFileProviderItemProtocol] = [] guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", account, enumeratedItemIdentifier.rawValue)) else { observer.finishEnumerating(upTo: nil) return } guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else { observer.finishEnumerating(upTo: nil) return } let item = FileProviderItem(metadata: metadata, serverUrl: serverUrl) items.append(item) observer.didEnumerate(items) observer.finishEnumerating(upTo: nil) } func enumerateChanges(for observer: NSFileProviderChangeObserver, from anchor: NSFileProviderSyncAnchor) { if updateItem != nil { observer.didUpdate([updateItem!]) } observer.finishEnumeratingChanges(upTo: anchor, moreComing: false) } func currentSyncAnchor(completionHandler: @escaping (NSFileProviderSyncAnchor?) -> Void) { let anchor = NSFileProviderSyncAnchor(enumeratedItemIdentifier.rawValue.data(using: .utf8)!) completionHandler(anchor) } }