From: Claudio Cambra Date: Fri, 10 Mar 2023 23:30:52 +0000 (+0100) Subject: Scan for existing file provider domains on FileProviderDomainManager init X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~10^2~55^2~163 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=331ce22e62e4b440422c577490e0d02d59268465;p=nextcloud-desktop.git Scan for existing file provider domains on FileProviderDomainManager init Signed-off-by: Claudio Cambra --- diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index 526107695..178478689 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -36,6 +36,42 @@ class FileProviderDomainManager::Private { Private() = default; ~Private() = default; + void findExistingFileProviderDomains() + { + [NSFileProviderManager getDomainsWithCompletionHandler:^(NSArray *domains, NSError *error) { + if(error) { + qCDebug(lcMacFileProviderDomainManager) << "Could not get existing file provider domains: " + << error.code + << error.localizedDescription; + } + + for (NSFileProviderDomain *domain in domains) { + const auto accountId = QString::fromNSString(domain.identifier); + + if (const auto accountState = AccountManager::instance()->accountFromUserId(accountId); + accountState && + accountState->account() && + accountState->account()->displayName() == QString::fromNSString(domain.displayName)) { + + qCDebug(lcMacFileProviderDomainManager) << "Found existing file provider domain for account:" + << accountState->account()->displayName(); + _registeredDomains.insert(accountId, domain); + + } else { + qCDebug(lcMacFileProviderDomainManager) << "Found existing file provider domain with no known configured account:" + << domain.displayName; + [NSFileProviderManager removeDomain:domain completionHandler:^(NSError *error) { + if(error) { + qCDebug(lcMacFileProviderDomainManager) << "Error removing file provider domain: " + << error.code + << error.localizedDescription; + } + }]; + } + } + }]; + } + void addFileProviderDomain(const AccountState *accountState) { const QString accountDisplayName = accountState->account()->displayName(); @@ -153,6 +189,8 @@ FileProviderDomainManager::FileProviderDomainManager(QObject *parent) { d.reset(new FileProviderDomainManager::Private()); + d->findExistingFileProviderDomains(); + connect(AccountManager::instance(), &AccountManager::accountAdded, this, &FileProviderDomainManager::addFileProviderDomainForAccount); connect(AccountManager::instance(), &AccountManager::accountRemoved,