@@ -110,8 +110,13 @@ static constexpr char forceLoginV2C[] = "forceLoginV2";
110110static constexpr char certPath[] = " http_certificatePath" ;
111111static constexpr char certPasswd[] = " http_certificatePasswd" ;
112112
113- static const QStringList validUpdateChannelsList { QStringLiteral (" stable" ), QStringLiteral (" beta" ), QStringLiteral (" daily" ) };
114- static constexpr char defaultUpdateChannelName[] = " stable" ;
113+ static constexpr char serverHasValidSubscriptionC[] = " serverHasValidSubscription" ;
114+ static constexpr char desktopEnterpriseChannelName[] = " desktopEnterpriseChannel" ;
115+
116+ static const QStringList defaultUpdateChannelsList { QStringLiteral (" stable" ), QStringLiteral (" beta" ), QStringLiteral (" daily" ) };
117+ static const QString defaultUpdateChannelName = " stable" ;
118+ static const QStringList enterpriseUpdateChannelsList { QStringLiteral (" stable" ), QStringLiteral (" enterprise" ) };
119+ static const QString defaultEnterpriseChannel = " enterprise" ;
115120}
116121
117122namespace OCC {
@@ -689,17 +694,37 @@ int ConfigFile::updateSegment() const
689694
690695QStringList ConfigFile::validUpdateChannels () const
691696{
692- return validUpdateChannelsList;
697+ const auto isBranded = Theme::instance ()->isBranded ();
698+
699+ if (isBranded) {
700+ return { defaultUpdateChannelName };
701+ }
702+
703+ if (serverHasValidSubscription ()) {
704+ return enterpriseUpdateChannelsList;
705+ }
706+
707+ return defaultUpdateChannelsList;
693708}
694709
695710QString ConfigFile::defaultUpdateChannel () const
696711{
712+ const auto isBranded = Theme::instance ()->isBranded ();
713+ if (serverHasValidSubscription () && !isBranded) {
714+ if (const auto serverChannel = desktopEnterpriseChannel ();
715+ validUpdateChannels ().contains (serverChannel)) {
716+ qCWarning (lcConfigFile ()) << " Enforcing update channel" << serverChannel << " because that is the desktop enterprise channel returned by the server." ;
717+ return serverChannel;
718+ }
719+ }
720+
697721 if (const auto currentVersionSuffix = Theme::instance ()->versionSuffix ();
698- validUpdateChannels ().contains (currentVersionSuffix)) {
722+ validUpdateChannels ().contains (currentVersionSuffix) && !isBranded ) {
699723 qCWarning (lcConfigFile ()) << " Enforcing update channel" << currentVersionSuffix << " because of the version suffix of the current client." ;
700724 return currentVersionSuffix;
701725 }
702726
727+ qCWarning (lcConfigFile ()) << " Enforcing default update channel" << defaultUpdateChannelName;
703728 return defaultUpdateChannelName;
704729}
705730
@@ -721,7 +746,7 @@ void ConfigFile::setUpdateChannel(const QString &channel)
721746 if (!validUpdateChannels ().contains (channel)) {
722747 qCWarning (lcConfigFile ()) << " Received invalid update channel:"
723748 << channel
724- << " can only accept 'stable', 'beta' or 'daily' . Ignoring." ;
749+ << " can only accept" << validUpdateChannels () << " . Ignoring." ;
725750 return ;
726751 }
727752
@@ -1176,6 +1201,31 @@ void ConfigFile::setLaunchOnSystemStartup(const bool autostart)
11761201 settings.setValue (QLatin1String (launchOnSystemStartupC), autostart);
11771202}
11781203
1204+ bool ConfigFile::serverHasValidSubscription () const
1205+ {
1206+ QSettings settings (configFile (), QSettings::IniFormat);
1207+ return settings.value (QLatin1String (serverHasValidSubscriptionC), false ).toBool ();
1208+ }
1209+
1210+ void ConfigFile::setServerHasValidSubscription (const bool valid)
1211+ {
1212+ QSettings settings (configFile (), QSettings::IniFormat);
1213+ settings.setValue (QLatin1String (serverHasValidSubscriptionC), valid);
1214+ }
1215+
1216+ QString ConfigFile::desktopEnterpriseChannel () const
1217+ {
1218+ QSettings settings (configFile (), QSettings::IniFormat);
1219+ return settings.value (QLatin1String (desktopEnterpriseChannelName), defaultUpdateChannel ()).toString ();
1220+ }
1221+
1222+ void ConfigFile::setDesktopEnterpriseChannel (const QString &channel)
1223+ {
1224+ QSettings settings (configFile (), QSettings::IniFormat);
1225+ settings.setValue (QLatin1String (desktopEnterpriseChannelName), channel);
1226+ }
1227+
1228+
11791229Q_GLOBAL_STATIC (QString, g_configFileName)
11801230
11811231std::unique_ptr<QSettings> ConfigFile::settingsWithGroup (const QString &group, QObject *parent)
0 commit comments