) -> Void,
completionHandler: @escaping (Error?) -> Void
) -> Progress {
- let progress = Progress(totalUnitCount: Int64(itemIdentifiers.count))
- var progressCounter: Int64 = 0
-
- func finishCurrent() {
- progressCounter += 1
-
- if progressCounter == progress.totalUnitCount {
- completionHandler(nil)
- }
- }
-
- for itemIdentifier in itemIdentifiers {
- Logger.fileProviderExtension.debug(
- "Fetching thumbnail for item with identifier:\(itemIdentifier.rawValue, privacy: .public)"
- )
- guard
- let metadata = FilesDatabaseManager.shared
- .itemMetadataFromFileProviderItemIdentifier(itemIdentifier),
- let thumbnailUrl = metadata.thumbnailUrl(size: size)
- else {
- Logger.fileProviderExtension.debug("Did not fetch thumbnail URL")
- finishCurrent()
- continue
- }
-
- Logger.fileProviderExtension.debug(
- "Fetching thumbnail for file:\(metadata.fileName) at:\(thumbnailUrl.absoluteString, privacy: .public)"
- )
-
- ncKit.getPreview(url: thumbnailUrl) { _, data, error in
- if error == .success, data != nil {
- perThumbnailCompletionHandler(itemIdentifier, data, nil)
- } else {
- perThumbnailCompletionHandler(
- itemIdentifier, nil, NSFileProviderError(.serverUnreachable))
- }
- finishCurrent()
- }
- }
-
- return progress
+ return NextcloudFileProviderKit.fetchThumbnails(
+ for: itemIdentifiers,
+ requestedSize: size,
+ usingKit: self.ncKit,
+ perThumbnailCompletionHandler: perThumbnailCompletionHandler,
+ completionHandler: completionHandler
+ )
}
}