Do not initialise file provider components if system does not support file provider

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2023-03-15 10:26:10 +01:00
parent 19dfbd0539
commit 6e5c2ee04c
No known key found for this signature in database
GPG Key ID: C839200C384636B0
4 changed files with 24 additions and 17 deletions

View File

@ -16,6 +16,7 @@
#include <QObject>
#include "fileproviderdomainmanager.h"
#include "fileprovidersocketserver.h"
namespace OCC {
@ -37,7 +38,8 @@ public:
private:
explicit FileProvider(QObject * const parent = nullptr);
FileProviderSocketServer _socketServer;
std::unique_ptr<FileProviderDomainManager> _domainManager;
std::unique_ptr<FileProviderSocketServer> _socketServer;
};
} // namespace Mac

View File

@ -17,7 +17,6 @@
#include <QLoggingCategory>
#include "fileprovider.h"
#include "fileproviderdomainmanager.h"
namespace OCC {
@ -30,14 +29,32 @@ static FileProvider *_instance = nullptr;
FileProvider::FileProvider(QObject * const parent)
: QObject(parent)
{
const auto domainManager = FileProviderDomainManager::instance();
if (domainManager) {
if (!fileProviderAvailable()) {
qCDebug(lcMacFileProvider) << "File provider system is not available on this version of macOS.";
return;
}
qCDebug(lcMacFileProvider) << "Initialising file provider domain manager.";
_domainManager = std::make_unique<FileProviderDomainManager>(new FileProviderDomainManager(this));
if (_domainManager) {
qCDebug(lcMacFileProvider()) << "Initialized file provider domain manager";
}
qCDebug(lcMacFileProvider) << "Initialising file provider socket server.";
_socketServer = std::make_unique<FileProviderSocketServer>(new FileProviderSocketServer(this));
if (_socketServer) {
qCDebug(lcMacFileProvider) << "Initialised file provider socket server.";
}
}
FileProvider *FileProvider::instance()
{
if (!fileProviderAvailable()) {
return nullptr;
}
if (!_instance) {
_instance = new FileProvider();
}

View File

@ -29,7 +29,7 @@ class FileProviderDomainManager : public QObject
Q_OBJECT
public:
static FileProviderDomainManager *instance();
explicit FileProviderDomainManager(QObject * const parent = nullptr);
~FileProviderDomainManager() override;
private slots:
@ -51,8 +51,6 @@ private:
// Starts regular enumerator signalling if no push notifications available
QTimer _enumeratorSignallingTimer;
explicit FileProviderDomainManager(QObject * const parent = nullptr);
static FileProviderDomainManager *_instance;
class Private;
std::unique_ptr<Private> d;
};

View File

@ -81,8 +81,6 @@ Q_LOGGING_CATEGORY(lcMacFileProviderDomainManager, "nextcloud.gui.macfileprovide
namespace Mac {
FileProviderDomainManager *FileProviderDomainManager::_instance = nullptr;
class FileProviderDomainManager::Private {
public:
@ -460,14 +458,6 @@ FileProviderDomainManager::FileProviderDomainManager(QObject * const parent)
});
}
FileProviderDomainManager *FileProviderDomainManager::instance()
{
if (!_instance) {
_instance = new FileProviderDomainManager();
}
return _instance;
}
FileProviderDomainManager::~FileProviderDomainManager() = default;
void FileProviderDomainManager::setupFileProviderDomains()