58 lines
2.1 KiB
Swift
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
|
|
*/
|
|
}
|
|
|
|
}
|