diff --git a/src/gui/macOS/fileprovider.h b/src/gui/macOS/fileprovider.h index faef58c372..c974afb765 100644 --- a/src/gui/macOS/fileprovider.h +++ b/src/gui/macOS/fileprovider.h @@ -16,6 +16,7 @@ #include +#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 _domainManager; + std::unique_ptr _socketServer; }; } // namespace Mac diff --git a/src/gui/macOS/fileprovider_mac.mm b/src/gui/macOS/fileprovider_mac.mm index 8b5df2ec5e..879a39098a 100644 --- a/src/gui/macOS/fileprovider_mac.mm +++ b/src/gui/macOS/fileprovider_mac.mm @@ -17,7 +17,6 @@ #include #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(new FileProviderDomainManager(this)); + + if (_domainManager) { qCDebug(lcMacFileProvider()) << "Initialized file provider domain manager"; } + + qCDebug(lcMacFileProvider) << "Initialising file provider socket server."; + _socketServer = std::make_unique(new FileProviderSocketServer(this)); + + if (_socketServer) { + qCDebug(lcMacFileProvider) << "Initialised file provider socket server."; + } } FileProvider *FileProvider::instance() { + if (!fileProviderAvailable()) { + return nullptr; + } + if (!_instance) { _instance = new FileProvider(); } diff --git a/src/gui/macOS/fileproviderdomainmanager.h b/src/gui/macOS/fileproviderdomainmanager.h index b175e621aa..a8787c7ccd 100644 --- a/src/gui/macOS/fileproviderdomainmanager.h +++ b/src/gui/macOS/fileproviderdomainmanager.h @@ -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 d; }; diff --git a/src/gui/macOS/fileproviderdomainmanager_mac.mm b/src/gui/macOS/fileproviderdomainmanager_mac.mm index 22c440941d..aea1776b3f 100644 --- a/src/gui/macOS/fileproviderdomainmanager_mac.mm +++ b/src/gui/macOS/fileproviderdomainmanager_mac.mm @@ -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()