Check if the given item is shareable before fetching shares

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-03-19 18:57:52 +08:00
parent 4d3e63009c
commit 65db197a62

View File

@ -25,6 +25,7 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele
}
}
var shareCapabilities = ShareCapabilities()
var itemMetadata: NKFile?
private(set) var kit: NextcloudKit?
private(set) var itemURL: URL?
@ -79,7 +80,8 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele
Logger.sharesDataSource.error("Failed to get details from FileProviderExt")
return
}
itemServerRelativePath = serverPath as String
let serverPathString = serverPath as String
itemServerRelativePath = serverPathString
account = convertedAccount
await sharesTableView?.deselectAll(self)
shareCapabilities = await fetchCapabilities()
@ -89,8 +91,15 @@ class ShareTableViewDataSource: NSObject, NSTableViewDataSource, NSTableViewDele
uiDelegate?.showError(errorMsg)
return
}
itemMetadata = await fetchItemMetadata(itemRelativePath: serverPathString)
guard itemMetadata?.permissions.contains("S") == true else {
let errorMsg = "This file cannot be shared."
Logger.sharesDataSource.warning("\(errorMsg)")
uiDelegate?.showError(errorMsg)
return
}
shares = await fetch(
itemIdentifier: itemIdentifier, itemRelativePath: serverPath as String
itemIdentifier: itemIdentifier, itemRelativePath: serverPathString
)
} catch let error {
Logger.sharesDataSource.error("Could not reload data: \(error, privacy: .public)")