Files
simplex-chat/apps/ios/SimpleX Service/FileProviderEnumerator.swift
2022-06-02 11:06:45 +01:00

58 lines
2.1 KiB
Swift

//
// FileProviderEnumerator.swift
// SimpleX Service
//
// Created by Evgeny on 01/06/2022.
// Copyright © 2022 SimpleX Chat. All rights reserved.
//
import FileProvider
class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
var enumeratedItemIdentifier: NSFileProviderItemIdentifier
init(enumeratedItemIdentifier: NSFileProviderItemIdentifier) {
logger.debug("FileProviderExtension FileProviderEnumerator.init")
self.enumeratedItemIdentifier = enumeratedItemIdentifier
super.init()
}
func identifierForItemAtURL(_ url: URL, completionHandler: @escaping (NSFileProviderItemIdentifier) -> Void) {
// logger.debug("FileProviderExtension.identifierForItemAtURL")
completionHandler(SERVICE_PROXY_ITEM_ID)
}
func invalidate() {
// TODO: perform invalidation of server connection if necessary
}
func enumerateItems(for observer: NSFileProviderEnumerationObserver, startingAt page: NSFileProviderPage) {
/* TODO:
- inspect the page to determine whether this is an initial or a follow-up request
If this is an enumerator for a directory, the root container or all directories:
- perform a server request to fetch directory contents
If this is an enumerator for the active set:
- perform a server request to update your local database
- fetch the active set from your local database
- inform the observer about the items returned by the server (possibly multiple times)
- inform the observer that you are finished with this page
*/
}
func enumerateChanges(for observer: NSFileProviderChangeObserver, from anchor: NSFileProviderSyncAnchor) {
/* TODO:
- query the server for updates since the passed-in sync anchor
If this is an enumerator for the active set:
- note the changes in your local database
- inform the observer about item deletions and updates (modifications + insertions)
- inform the observer when you have finished enumerating up to a subsequent sync anchor
*/
}
}