From 30857703d3808a4094707abd20c06d3fa23c722e Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 3 Jul 2024 16:06:48 +0200 Subject: [PATCH] Fix the logic to determine update channels available, default value and what info to show the user. Signed-off-by: Camila Ayres --- src/gui/generalsettings.cpp | 12 +++++------- src/libsync/configfile.cpp | 25 ++++++++++++++++++++----- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/gui/generalsettings.cpp b/src/gui/generalsettings.cpp index 939e349aa2346..31d968344f2f2 100644 --- a/src/gui/generalsettings.cpp +++ b/src/gui/generalsettings.cpp @@ -281,11 +281,7 @@ void GeneralSettings::loadMiscSettings() _ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons()); #if defined(BUILD_UPDATER) - auto validUpdateChannels = cfgFile.validUpdateChannels(); - if (const auto serverHasValidSubscription = cfgFile.serverHasValidSubscription(); - serverHasValidSubscription && !Theme::instance()->isBranded()) { - validUpdateChannels << QStringLiteral("enterprise"); - } + const auto validUpdateChannels = cfgFile.validUpdateChannels(); _ui->updateChannel->addItems(validUpdateChannels); const auto currentUpdateChannelIndex = validUpdateChannels.indexOf(cfgFile.currentUpdateChannel()); _ui->updateChannel->setCurrentIndex(currentUpdateChannelIndex != -1? currentUpdateChannelIndex : 0); @@ -386,12 +382,14 @@ void GeneralSettings::slotUpdateChannelChanged() } }; + ConfigFile configFile; const auto channel = updateChannelFromLocalized(_ui->updateChannel->currentIndex()); - if (channel == ConfigFile().currentUpdateChannel()) { + if (channel == configFile.currentUpdateChannel()) { return; } - const auto enterprise = _ui->updateChannel->count() > 3 ? "- enterprise: contains stable versions for customers.\n" : ""; + const auto enterprise = configFile.validUpdateChannels().contains("enterprise") ? "- enterprise: contains stable versions for customers.\n" + : ""; auto msgBox = new QMessageBox( QMessageBox::Warning, tr("Changing update channel?"), diff --git a/src/libsync/configfile.cpp b/src/libsync/configfile.cpp index 9d16d07f729e5..6834edc90bcb6 100644 --- a/src/libsync/configfile.cpp +++ b/src/libsync/configfile.cpp @@ -110,8 +110,9 @@ static constexpr char forceLoginV2C[] = "forceLoginV2"; static constexpr char certPath[] = "http_certificatePath"; static constexpr char certPasswd[] = "http_certificatePasswd"; -static const QStringList validUpdateChannelsList { QStringLiteral("stable"), QStringLiteral("beta"), QStringLiteral("daily") }; -static constexpr char defaultUpdateChannelName[] = "stable"; +static const QStringList defaultUpdateChannelsList { QStringLiteral("stable"), QStringLiteral("beta"), QStringLiteral("daily") }; +static constexpr QString defaultUpdateChannelName = "stable"; +static constexpr char defaultEnterpriseChannel[] = "enterprise"; static constexpr char serverHasValidSubscriptionC[] = "serverHasValidSubscription"; static constexpr char desktopEnterpriseChannelName[] = "desktopEnterpriseChannel"; } @@ -691,18 +692,32 @@ int ConfigFile::updateSegment() const QStringList ConfigFile::validUpdateChannels() const { - return validUpdateChannelsList; + auto updateChannelsList = defaultUpdateChannelsList; + if (serverHasValidSubscription() && !Theme::instance()->isBranded()) { + updateChannelsList << defaultEnterpriseChannel; + } + + return updateChannelsList; } QString ConfigFile::defaultUpdateChannel() const { + auto defaultUpdateChannel = defaultUpdateChannelName; + if (serverHasValidSubscription() && !Theme::instance()->isBranded()) { + if (const auto serverChannel = desktopEnterpriseChannel(); + validUpdateChannels().contains(serverChannel)) { + qCWarning(lcConfigFile()) << "Enforcing update channel" << serverChannel << "because that is the desktop enterprise channel returned by the server."; + defaultUpdateChannel = serverChannel; + } + } + if (const auto currentVersionSuffix = Theme::instance()->versionSuffix(); validUpdateChannels().contains(currentVersionSuffix)) { qCWarning(lcConfigFile()) << "Enforcing update channel" << currentVersionSuffix << "because of the version suffix of the current client."; - return currentVersionSuffix; + defaultUpdateChannel = currentVersionSuffix; } - return defaultUpdateChannelName; + return defaultUpdateChannel; } QString ConfigFile::currentUpdateChannel() const