Skip to content

Commit 770fde3

Browse files
authored
Merge pull request #10012 from nextcloud/backport/10011/stable-33.0
[stable-33.0] fix: Refactor visitedDirectory handling in MaterializedEnumerationObserver
2 parents 487a6b5 + 086e5a3 commit 770fde3

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

shell_integration/MacOSX/NextcloudFileProviderKit/Sources/NextcloudFileProviderKit/Enumeration/MaterializedEnumerationObserver.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,16 @@ public class MaterializedEnumerationObserver: NSObject, NSFileProviderEnumeratio
9797
logger.info("Updating item state to dataless.", [.name: metadata.fileName, .item: evictedItemIdentifier])
9898

9999
metadata.downloaded = false
100-
metadata.visitedDirectory = false
100+
101+
// Being absent from enumeratorForMaterializedItems only means the item has no
102+
// local materialized content. For directories, visitedDirectory is our refresh
103+
// subscription: if Finder has enumerated a folder before, keep watching it for
104+
// remote child changes even when macOS reports it as dataless. This matters for
105+
// shared mount roots, which may be omitted from materialized items after browsing.
106+
if !metadata.directory {
107+
metadata.visitedDirectory = false
108+
}
109+
101110
dbManager.addItemMetadata(metadata)
102111
}
103112

shell_integration/MacOSX/NextcloudFileProviderKit/Tests/NextcloudFileProviderKitTests/MaterialisedEnumerationObserverTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ final class MaterialisedEnumerationObserverTests: NextcloudFileProviderKitTestCa
130130
XCTAssertTrue(finalItemC?.downloaded ?? false, "itemC should remain downloaded.")
131131

132132
let finalDirD = dbManager.itemMetadata(ocId: "dirD")
133-
XCTAssertFalse(
134-
finalDirD?.visitedDirectory ?? true, "dirD should now be marked as not visited."
133+
XCTAssertTrue(
134+
finalDirD?.visitedDirectory ?? false, "dirD should be marked as visited."
135135
)
136136

137137
expect.fulfill()

0 commit comments

Comments
 (0)