Implement ChangeNotificationInterface in client interface extension of FileProviderEx...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 19 Jul 2024 07:17:59 +0000 (15:17 +0800)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 19 Jul 2024 08:24:21 +0000 (16:24 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift

index bc66d57f4bc1d420d653c433ed03023cc08effce..e9f60607a5de6727fa1a21553ca9ba3254a8db09 100644 (file)
@@ -19,7 +19,7 @@ import NextcloudKit
 import NextcloudFileProviderKit
 import OSLog
 
-extension FileProviderExtension: NSFileProviderServicing {
+extension FileProviderExtension: NSFileProviderServicing, ChangeNotificationInterface {
     /*
      This FileProviderExtension extension contains everything needed to communicate with the client.
      We have two systems for communicating between the extensions and the client.
@@ -80,6 +80,17 @@ extension FileProviderExtension: NSFileProviderServicing {
             "Signalling enumerators for user \(self.ncAccount!.username) at server \(self.ncAccount!.serverUrl, privacy: .public)"
         )
 
+        notifyChange()
+    }
+
+    func notifyChange() {
+        guard let fpManager = NSFileProviderManager(for: domain) else {
+            Logger.fileProviderExtension.error(
+                "Could not get file provider manager for domain \(self.domain.displayName, privacy: .public), cannot notify changes"
+            )
+            return
+        }
+
         fpManager.signalEnumerator(for: .workingSet) { error in
             if error != nil {
                 Logger.fileProviderExtension.error(
@@ -103,7 +114,9 @@ extension FileProviderExtension: NSFileProviderServicing {
             nextcloudVersion: 25,
             delegate: nil) // TODO: add delegate methods for self
 
-        changeObserver = RemoteChangeObserver(ncKit: ncKit, domain: domain)
+        changeObserver = RemoteChangeObserver(
+            remoteInterface: ncKit, changeNotificationInterface: self, domain: domain
+        )
         ncKit.setup(delegate: changeObserver)
 
         Logger.fileProviderExtension.info(