From 20363bd241f1640375effe11dac9b8eb2d546d5a Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Mar 2023 13:39:24 +0100 Subject: [PATCH] Add completion handler to materialised observer Signed-off-by: Claudio Cambra --- ...leProviderMaterialisedEnumerationObserver.swift | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderMaterialisedEnumerationObserver.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderMaterialisedEnumerationObserver.swift index f6f95f2ba..4bda429f1 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderMaterialisedEnumerationObserver.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderMaterialisedEnumerationObserver.swift @@ -17,10 +17,12 @@ import FileProvider class FileProviderMaterialisedEnumerationObserver : NSObject, NSFileProviderEnumerationObserver { let ncKitAccount: String + let completionHandler: (_ deletedOcIds: Set) -> Void var allEnumeratedItemIds: Set = Set() - required init(ncKitAccount: String) { + required init(ncKitAccount: String, completionHandler: @escaping(_ deletedOcIds: Set) -> Void) { self.ncKitAccount = ncKitAccount + self.completionHandler = completionHandler super.init() } @@ -35,16 +37,18 @@ class FileProviderMaterialisedEnumerationObserver : NSObject, NSFileProviderEnum func finishEnumerating(upTo nextPage: NSFileProviderPage?) { NSLog("Handling enumerated materialised items.") FileProviderMaterialisedEnumerationObserver.handleEnumeratedItems(self.allEnumeratedItemIds, - account: self.ncKitAccount) + account: self.ncKitAccount, + completionHandler: self.completionHandler) } func finishEnumeratingWithError(_ error: Error) { NSLog("Ran into error when enumerating materialised items. Handling items enumerated so far") FileProviderMaterialisedEnumerationObserver.handleEnumeratedItems(self.allEnumeratedItemIds, - account: self.ncKitAccount) + account: self.ncKitAccount, + completionHandler: self.completionHandler) } - static func handleEnumeratedItems(_ itemIds: Set, account: String) { + static func handleEnumeratedItems(_ itemIds: Set, account: String, completionHandler: @escaping(_ deletedOcIds: Set) -> Void) { let dbManager = NextcloudFilesDatabaseManager.shared let databaseLocalFileMetadatas = dbManager.localFileMetadatas(account: account) var noLongerMaterialisedIds = Set() @@ -64,6 +68,8 @@ class FileProviderMaterialisedEnumerationObserver : NSObject, NSFileProviderEnum for itemId in noLongerMaterialisedIds { dbManager.deleteLocalFileMetadata(ocId: itemId) } + + completionHandler(noLongerMaterialisedIds) } } } -- 2.30.2