Fix the logic to determine update channels available, default value and what info to show the user.

Signed-off-by: Camila Ayres <hello@camilasan.com>
This commit is contained in:
Camila Ayres 2024-07-03 16:06:48 +02:00
parent 0663282b2b
commit e51324dc9a
No known key found for this signature in database
GPG Key ID: 7A4A6121E88E2AD4
2 changed files with 25 additions and 12 deletions

View File

@ -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?"),

View File

@ -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