Separate domain finding into separate function in FileProviderUtils

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2023-11-01 13:44:37 +08:00
parent b47665efba
commit 44a6f4673e
No known key found for this signature in database
GPG Key ID: C839200C384636B0
2 changed files with 21 additions and 10 deletions

View File

@ -16,6 +16,7 @@
class QString;
@class NSFileProviderDomain;
@class NSFileProviderManager;
/**
@ -36,6 +37,9 @@ namespace Mac {
namespace FileProviderUtils {
// Synchronous function to get the domain for a domain identifier
NSFileProviderDomain *domainForIdentifier(const QString &domainIdentifier);
// Synchronous function to get manager for a domain identifier
NSFileProviderManager *managerForDomainIdentifier(const QString &domainIdentifier);

View File

@ -27,9 +27,9 @@ namespace FileProviderUtils {
Q_LOGGING_CATEGORY(lcMacFileProviderUtils, "nextcloud.gui.macfileproviderutils", QtInfoMsg)
NSFileProviderManager *managerForDomainIdentifier(const QString &domainIdentifier)
NSFileProviderDomain *domainForIdentifier(const QString &domainIdentifier)
{
__block NSFileProviderManager *manager = nil;
__block NSFileProviderDomain *foundDomain = nil;
NSString *const nsDomainIdentifier = domainIdentifier.toNSString();
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
@ -45,24 +45,31 @@ NSFileProviderManager *managerForDomainIdentifier(const QString &domainIdentifie
return;
}
BOOL foundDomain = NO;
for (NSFileProviderDomain *const domain in domains) {
if ([domain.identifier isEqualToString:nsDomainIdentifier]) {
foundDomain = YES;
manager = [NSFileProviderManager managerForDomain:domain];
foundDomain = domain;
break;
}
}
if (!foundDomain) {
qCWarning(lcMacFileProviderUtils) << "No matching item domain, cannot get manager";
}
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
if (foundDomain == nil) {
qCWarning(lcMacFileProviderUtils) << "No matching item domain for identifier"
<< domainIdentifier;
}
return foundDomain;
}
NSFileProviderManager *managerForDomainIdentifier(const QString &domainIdentifier)
{
NSFileProviderDomain * const domain = domainForIdentifier(domainIdentifier);
NSFileProviderManager * const manager = [NSFileProviderManager managerForDomain:domain];
if (manager == nil) {
qCWarning(lcMacFileProviderUtils) << "Received null manager for domain"
<< domainIdentifier;