private static var subsystem = Bundle.main.bundleIdentifier!
static let actionViewController = Logger(subsystem: subsystem, category: "actionViewController")
+ static let sharesDataSource = Logger(subsystem: subsystem, category: "sharesDataSource")
static let shareViewController = Logger(subsystem: subsystem, category: "shareViewController")
}
import AppKit
import FileProvider
import NextcloudKit
+import OSLog
+
class ShareTableViewDataSource: NSObject, NSTableViewDataSource {
var sharesTableView: NSTableView? {
didSet {
didSet { sharesTableView?.reloadData() }
}
+ func loadItem(identifier: NSFileProviderItemIdentifier, url: URL) {
+ itemIdentifier = identifier
+ itemURL = url
+ Task {
+ await reload()
+ }
+ }
+
+ private func reload() async {
+ guard let itemIdentifier = itemIdentifier, let itemURL = itemURL else { return }
+ do {
+ let connection = try await serviceConnection(url: itemURL)
+ shares = await connection.shares(forItemIdentifier: itemIdentifier) ?? []
+ } catch let error {
+ Logger.sharesDataSource.error("Could not reload data: \(error)")
+ }
+ }
+
private func serviceConnection(url: URL) async throws -> FPUIExtensionService {
let services = try await FileManager().fileProviderServicesForItem(at: url)
guard let service = services[fpUiExtensionServiceName] else {