diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-05-24 16:07:36 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-05-25 15:21:44 +0300 |
commit | e81625c9706ac5280fed65f6b8af141963860072 (patch) | |
tree | 9ce22eeb4bc3c88c834921818627c253b0bbdb57 /src/libsync | |
parent | 0ae84fad0d718b084dc5bcefc2098ce4f4b8b7a3 (diff) |
Use ocis productversion
Diffstat (limited to 'src/libsync')
-rw-r--r-- | src/libsync/account.cpp | 39 | ||||
-rw-r--r-- | src/libsync/account.h | 17 | ||||
-rw-r--r-- | src/libsync/capabilities.cpp | 27 | ||||
-rw-r--r-- | src/libsync/capabilities.h | 34 | ||||
-rw-r--r-- | src/libsync/syncengine.cpp | 2 |
5 files changed, 67 insertions, 52 deletions
diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 011ea5d2f..e5304b1ae 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -291,56 +291,31 @@ bool Account::hasCapabilities() const void Account::setCapabilities(const Capabilities &caps) { _capabilities = caps; -} - -QString Account::serverProductName() const -{ - return _serverProduct; -} -QString Account::serverVersionString() const -{ - return _serverVersion; + Q_EMIT serverVersionChanged(); } bool Account::serverVersionUnsupported() const { - if (serverVersion().isNull() || serverProductName().isEmpty()) { + if (!hasCapabilities()) { // not detected yet, assume it is fine. return false; } - // TODO: this is a work around for a ocis announcing version 2.0.0 - // next version will announce ocisvison and keep version to 10 - if (serverProductName() == QLatin1String("Infinite Scale")) { + + // ocis + if (!capabilities().status().productversion.isEmpty()) { return false; } // Older version which is not "end of life" according to https://github.com/owncloud/core/wiki/Maintenance-and-Release-Schedule - if (serverVersion() < QVersionNumber(10)) { + if (capabilities().status().legacyVersion < QVersionNumber(10)) { return true; } - if (serverProductName().endsWith(QLatin1String("Nextcloud"))) { + if (capabilities().status().productname.endsWith(QLatin1String("Nextcloud"))) { return true; } return false; } -QVersionNumber Account::serverVersion() const -{ - return QVersionNumber::fromString(_serverVersion); -} - -void Account::setServerInfo(const QString &version, const QString &productName) -{ - _serverProduct = productName; - if (version == _serverVersion) { - return; - } - - auto oldServerVersion = _serverVersion; - _serverVersion = version; - emit serverVersionChanged(this, oldServerVersion, version); -} - QString Account::defaultSyncRoot() const { Q_ASSERT(!_defaultSyncRoot.isEmpty()); diff --git a/src/libsync/account.h b/src/libsync/account.h index 4b174485d..4230e563c 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -168,19 +168,6 @@ public: bool hasCapabilities() const; - - /** Access the server version - * - * For servers >= 10.0.0, this can be the empty string until capabilities - * have been received. - */ - QString serverVersionString() const; - QVersionNumber serverVersion() const; - - QString serverProductName() const; - - void setServerInfo(const QString &version, const QString &product); - /** Whether the server is too old. * * Not supporting server versions is a gradual process. There's a hard @@ -224,7 +211,7 @@ signals: // e.g. when the approved SSL certificates changed void wantsAccountSaved(Account *acc); - void serverVersionChanged(Account *account, const QString &newVersion, const QString &oldVersion); + void serverVersionChanged(); void accountChangedAvatar(); void accountChangedDisplayName(); @@ -255,8 +242,6 @@ private: QSet<QSslCertificate> _approvedCerts; Capabilities _capabilities; - QString _serverVersion; - QString _serverProduct; QuotaInfo *_quotaInfo; QPointer<AccessManager> _am; QScopedPointer<AbstractCredentials> _credentials; diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index 8559ff920..c945334eb 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -28,6 +28,7 @@ Capabilities::Capabilities(const QVariantMap &capabilities) , _fileSharingPublicCapabilities(_fileSharingCapabilities.value(QStringLiteral("public"), {}).toMap()) , _tusSupport(_capabilities.value(QStringLiteral("files")).toMap().value(QStringLiteral("tus_support")).toMap()) , _spaces(_capabilities.value(QStringLiteral("spaces")).toMap()) + , _status(_capabilities.value(QStringLiteral("core")).toMap().value(QStringLiteral("status")).toMap()) { } @@ -180,12 +181,16 @@ bool Capabilities::bigfilechunkingEnabled() const return _capabilities.value(QStringLiteral("files")).toMap().value(QStringLiteral("bigfilechunking"), true).toBool(); } +const Status &Capabilities::status() const +{ + return _status; +} + const TusSupport &Capabilities::tusSupport() const { return _tusSupport; } - const SpaceSupport &Capabilities::spacesSupport() const { return _spaces; @@ -248,6 +253,26 @@ QStringList Capabilities::blacklistedFiles() const return _capabilities.value(QStringLiteral("files")).toMap().value(QStringLiteral("blacklisted_files")).toStringList(); } +Status::Status(const QVariantMap &status) +{ + legacyVersion = QVersionNumber::fromString(status.value(QStringLiteral("version")).toString()); + legacyVersionString = status.value(QStringLiteral("versionstring")).toString(); + edition = status.value(QStringLiteral("edition")).toString(); + productname = status.value(QStringLiteral("productname")).toString(); + product = status.value(QStringLiteral("product")).toString(); + productversion = status.value(QStringLiteral("productversion")).toString(); +} + +QVersionNumber Status::version() const +{ + return productversion.isEmpty() ? legacyVersion : QVersionNumber::fromString(productversion); +} + +QString Status::versionString() const +{ + return productversion.isEmpty() ? legacyVersionString : productversion; +} + TusSupport::TusSupport(const QVariantMap &tus_support) { if (tus_support.isEmpty() || qEnvironmentVariableIsSet("OWNCLOUD_NO_TUS")) { diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h index ab09cabc1..09baf03dd 100644 --- a/src/libsync/capabilities.h +++ b/src/libsync/capabilities.h @@ -24,8 +24,36 @@ namespace OCC { +struct OWNCLOUDSYNC_EXPORT Status +{ + /** + <installed>1</installed> + <maintenance>0</maintenance> + <needsDbUpgrade>0</needsDbUpgrade> + <version>10.11.0.0</version> + <versionstring>10.11.0</versionstring> + <edition>Community</edition> + <productname>Infinite Scale</productname> + <product>Infinite Scale</product> + <productversion>2.0.0-beta1+7c2e3201b</productversion> + */ + + Status(const QVariantMap &status); + // legacy version + QVersionNumber legacyVersion; + // legacy version + QString legacyVersionString; + + QString edition; + QString productname; + QString product; + QString productversion; + + QVersionNumber version() const; + QString versionString() const; +}; -struct TusSupport +struct OWNCLOUDSYNC_EXPORT TusSupport { /** <tus_support> @@ -46,7 +74,7 @@ struct TusSupport bool isValid() const; }; -struct SpaceSupport +struct OWNCLOUDSYNC_EXPORT SpaceSupport { /** "spaces": { @@ -105,6 +133,7 @@ public: /// Wheter to use chunking bool bigfilechunkingEnabled() const; + const Status &status() const; const TusSupport &tusSupport() const; const SpaceSupport &spacesSupport() const; @@ -208,6 +237,7 @@ private: QVariantMap _fileSharingPublicCapabilities; TusSupport _tusSupport; SpaceSupport _spaces; + Status _status; }; } diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index d4a25f1a7..7496aee1a 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -458,7 +458,7 @@ void SyncEngine::startSync() emit transmissionProgress(*_progressInfo); qCInfo(lcEngine) << "#### Discovery start ####################################################"; - qCInfo(lcEngine) << "Server" << account()->serverVersion() + qCInfo(lcEngine) << "Server" << account()->capabilities().status().versionString() << (account()->isHttp2Supported() ? "Using HTTP/2" : ""); _progressInfo->_status = ProgressInfo::Discovery; emit transmissionProgress(*_progressInfo); |