]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Ensure that wipeAllFileProviderDomains doesn't break on macOS 11
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 13 Mar 2023 15:28:18 +0000 (16:28 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:31 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileproviderdomainmanager_mac.mm

index d52e32dda227f32e9833c05e242b2610adacbb26..33c8f0ef0753e5b3eb12a559136692c9181a403f 100644 (file)
@@ -220,33 +220,37 @@ class FileProviderDomainManager::Private {
     {
         qCDebug(lcMacFileProviderDomainManager) << "Removing and wiping all file provider domains";
 
-        [NSFileProviderManager getDomainsWithCompletionHandler:^(NSArray<NSFileProviderDomain *> * const domains, NSError * const error) {
-            if (error) {
-                qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domains: "
-                                                        << error.code
-                                                        << error.localizedDescription;
-                return;
-            }
+        if (@available(macOS 12.0, *)) {
+            [NSFileProviderManager getDomainsWithCompletionHandler:^(NSArray<NSFileProviderDomain *> * const domains, NSError * const error) {
+                if (error) {
+                    qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domains: "
+                                                            << error.code
+                                                            << error.localizedDescription;
+                    return;
+                }
 
-            for (NSFileProviderDomain * const domain in domains) {
-                [NSFileProviderManager removeDomain:domain mode:NSFileProviderDomainRemovalModeRemoveAll completionHandler:^(NSURL * const preservedLocation, NSError * const error) {
-                    Q_UNUSED(preservedLocation)
-
-                    if (error) {
-                        qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domain: "
-                                                                << domain.displayName
-                                                                << error.code
-                                                                << error.localizedDescription;
-                        return;
-                    }
-
-                    NSFileProviderDomain * const registeredDomainPtr = _registeredDomains.take(QString::fromNSString(domain.identifier));
-                    if (registeredDomainPtr != nil) {
-                        [domain release];
-                    }
-                }];
-            }
-        }];
+                for (NSFileProviderDomain * const domain in domains) {
+                    [NSFileProviderManager removeDomain:domain mode:NSFileProviderDomainRemovalModeRemoveAll completionHandler:^(NSURL * const preservedLocation, NSError * const error) {
+                        Q_UNUSED(preservedLocation)
+
+                        if (error) {
+                            qCDebug(lcMacFileProviderDomainManager) << "Error removing and wiping file provider domain: "
+                                                                    << domain.displayName
+                                                                    << error.code
+                                                                    << error.localizedDescription;
+                            return;
+                        }
+
+                        NSFileProviderDomain * const registeredDomainPtr = _registeredDomains.take(QString::fromNSString(domain.identifier));
+                        if (registeredDomainPtr != nil) {
+                            [domain release];
+                        }
+                    }];
+                }
+            }];
+        } else {
+            removeAllFileProviderDomains();
+        }
     }
 
     void disconnectFileProviderDomainForAccount(const AccountState * const accountState, const QString &message)