Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 28 additions & 38 deletions Sources/NextcloudFileProviderKit/Item/Item.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,49 +36,39 @@
}

public var capabilities: NSFileProviderItemCapabilities {
Comment thread
claucambra marked this conversation as resolved.
guard !metadata.directory else {
var directoryCapabilities: NSFileProviderItemCapabilities = [
.allowsAddingSubItems,
.allowsContentEnumerating,
.allowsReading,
.allowsDeleting,
.allowsReparenting,
.allowsRenaming
]

#if os(macOS)
if #available(macOS 11.3, *) {
directoryCapabilities.insert(.allowsExcludingFromSync)
}
#endif

// .allowsEvicting deprecated on macOS 13.0+, use contentPolicy instead
if #unavailable(macOS 13.0) {
directoryCapabilities.insert(.allowsEvicting)
}
var capabilities: NSFileProviderItemCapabilities = []
let permissions = metadata.permissions.uppercased()
if permissions.contains("G"), metadata.directory { // Readable
capabilities.insert(.allowsContentEnumerating)
} else if permissions.contains("G") {
capabilities.insert(.allowsReading)
}
if permissions.contains("D"), !metadata.lock { // Deletable
capabilities.insert(.allowsDeleting)
}
if remoteSupportsTrash, !isLockFileName(filename), !metadata.lock {
capabilities.insert(.allowsTrashing)
}
if permissions.contains("W"), !metadata.directory, !metadata.lock { // Updateable (file)
capabilities.insert(.allowsWriting)
}
if permissions.contains("NV"), !metadata.lock { // Updateable, renameable, moveable
capabilities.insert([.allowsRenaming, .allowsReparenting])
Comment thread
claucambra marked this conversation as resolved.
Outdated

if remoteSupportsTrash {
directoryCapabilities.insert(.allowsTrashing)
if metadata.directory {
capabilities.insert(.allowsAddingSubItems)
}
Comment thread
claucambra marked this conversation as resolved.

return directoryCapabilities
}
guard !metadata.lock else {
return [.allowsReading]
// .allowsEvicting deprecated on macOS 13.0+, use contentPolicy instead
if #unavailable(macOS 13.0), !metadata.keepDownloaded {
capabilities.insert(.allowsEvicting)

Check warning on line 64 in Sources/NextcloudFileProviderKit/Item/Item.swift

View check run for this annotation

Codecov / codecov/patch

Sources/NextcloudFileProviderKit/Item/Item.swift#L64

Added line #L64 was not covered by tests
}

var itemCapabilities: NSFileProviderItemCapabilities = [
.allowsWriting,
.allowsReading,
.allowsDeleting,
.allowsRenaming,
.allowsReparenting,
.allowsEvicting,
]
if remoteSupportsTrash, !isLockFileName(filename) {
itemCapabilities.insert(.allowsTrashing)
#if os(macOS)
if #available(macOS 11.3, *) {
capabilities.insert(.allowsExcludingFromSync)
}
return itemCapabilities
#endif
return capabilities
}

public var itemVersion: NSFileProviderItemVersion {
Expand Down
Loading