diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs index c0a4e02df..a4843e2b4 100644 --- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs @@ -5,6 +5,7 @@ using UniGetUI.Avalonia.ViewModels; using UniGetUI.Core.Data; using UniGetUI.Core.Logging; +using UniGetUI.Core.SettingsEngine; using UniGetUI.Core.Tools; namespace UniGetUI.Avalonia.ViewModels.Pages.SettingsPages; @@ -13,6 +14,12 @@ public partial class Interface_PViewModel : ViewModelBase { public bool IsWindows { get; } = OperatingSystem.IsWindows(); + /// + /// True when the user is enrolled in the beta program. In that case the modern UI is forced + /// and the classic-mode toggle should be disabled. + /// + public bool IsBetaTester { get; } = Settings.Get(Settings.K.EnableUniGetUIBeta); + [ObservableProperty] private string _iconCacheSizeText = ""; public event EventHandler? RestartRequired; diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml index deb2d35fa..dec3e20c6 100644 --- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml +++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml @@ -31,6 +31,8 @@ Text="{t:Translate Use classic mode}" WarningText="{t:Translate Restart UniGetUI to apply this change}" StateChangedCommand="{Binding ShowRestartRequiredCommand}" + IsEnabled="{Binding !IsBetaTester}" + ToolTip.Tip="{t:Translate The classic UI is disabled for beta testers}" CornerRadius="8"/> diff --git a/src/UniGetUI.Tests/ModernAppLauncherTests.cs b/src/UniGetUI.Tests/ModernAppLauncherTests.cs index 2ac76d353..895d8cf1a 100644 --- a/src/UniGetUI.Tests/ModernAppLauncherTests.cs +++ b/src/UniGetUI.Tests/ModernAppLauncherTests.cs @@ -37,6 +37,16 @@ public void ClassicModeDefaultsToEnabled() Assert.False(ModernAppLauncher.IsClassicModeEnabled()); } + [Fact] + public void BetaTestersDefaultToModernUI() + { + Assert.True(ModernAppLauncher.IsClassicModeEnabled()); + + Settings.Set(Settings.K.EnableUniGetUIBeta, true); + + Assert.False(ModernAppLauncher.IsClassicModeEnabled()); + } + [Fact] public void ResolveModernExecutablePath_PrefersRootExecutable() { diff --git a/src/UniGetUI/ModernAppLauncher.cs b/src/UniGetUI/ModernAppLauncher.cs index 68cd98274..6f96c8881 100644 --- a/src/UniGetUI/ModernAppLauncher.cs +++ b/src/UniGetUI/ModernAppLauncher.cs @@ -9,7 +9,8 @@ internal static class ModernAppLauncher internal const string ModernAppDirectoryName = "Avalonia"; internal const string ModernAppExecutableName = "UniGetUI.Avalonia.exe"; - public static bool IsClassicModeEnabled() => !Settings.Get(Settings.K.DisableClassicMode); + public static bool IsClassicModeEnabled() => + !Settings.Get(Settings.K.DisableClassicMode) && !Settings.Get(Settings.K.EnableUniGetUIBeta); public static void Launch(string[] args) {