From 29f346d49421222f412fc2c590fafd8af2a763bd Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 13 Mar 2023 16:28:18 +0100 Subject: [PATCH] Ensure that wipeAllFileProviderDomains doesn't break on macOS 11 Signed-off-by: Claudio Cambra --- .../macOS/fileproviderdomainmanager_mac.mm | 56 ++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index d52e32dda..33c8f0ef0 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -220,33 +220,37 @@ class FileProviderDomainManager::Private { { qCDebug(lcMacFileProviderDomainManager) << "Removing and wiping all file provider domains"; - [NSFileProviderManager getDomainsWithCompletionHandler:^(NSArray * 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 * 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) -- 2.30.2