From: Claudio Cambra Date: Fri, 19 Jul 2024 07:17:59 +0000 (+0800) Subject: Implement ChangeNotificationInterface in client interface extension of FileProviderEx... X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~6^2~107^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ac6e0d81f67baa60272c9542089ab8d3016e110f;p=nextcloud-desktop.git Implement ChangeNotificationInterface in client interface extension of FileProviderExtension Signed-off-by: Claudio Cambra --- diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift index bc66d57f4..e9f60607a 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+ClientInterface.swift @@ -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(