]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Handle situations where we might not get a manager for our desired domain in fileprov...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 13 Mar 2023 15:29:12 +0000 (16:29 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:32 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileproviderdomainmanager_mac.mm

index 4ee11b74dbc77890a674e341d90dfbae66b95710..c79503e9d9ad6c8f9c884ce8245a15ab21a44d53 100644 (file)
@@ -296,7 +296,13 @@ class FileProviderDomainManager::Private {
         }
 
         NSFileProviderDomain * const fileProviderDomain = _registeredDomains[domainId];
+        Q_ASSERT(fileProviderDomain != nil);
+
         NSFileProviderManager * const fpManager = [NSFileProviderManager managerForDomain:fileProviderDomain];
+        if (fpManager == nil) {
+            readdFileProviderDomain(fileProviderDomain);
+            return;
+        }
 
         [fpManager disconnectWithReason:message.toNSString()
                                 options:NSFileProviderManagerDisconnectionOptionsTemporary
@@ -329,7 +335,13 @@ class FileProviderDomainManager::Private {
         }
 
         NSFileProviderDomain * const fileProviderDomain = _registeredDomains[domainId];
+        Q_ASSERT(fileProviderDomain != nil);
+
         NSFileProviderManager * const fpManager = [NSFileProviderManager managerForDomain:fileProviderDomain];
+        if (fpManager == nil) {
+            readdFileProviderDomain(fileProviderDomain);
+            return;
+        }
 
         [fpManager reconnectWithCompletionHandler:^(NSError * const error) {
             if (error) {
@@ -361,6 +373,11 @@ class FileProviderDomainManager::Private {
         Q_ASSERT(fileProviderDomain != nil);
 
         NSFileProviderManager * const fpManager = [NSFileProviderManager managerForDomain:fileProviderDomain];
+        if (fpManager == nil) {
+            readdFileProviderDomain(fileProviderDomain);
+            return;
+        }
+
         [fpManager signalEnumeratorForContainerItemIdentifier:NSFileProviderWorkingSetContainerItemIdentifier completionHandler:^(NSError * const error) {
             if (error != nil) {
                 qCDebug(lcMacFileProviderDomainManager) << "Error signalling enumerator changed for working set:"