From e91d6e2365cadc87bdaa5363f801e90385134849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Duquette?= Date: Wed, 20 May 2026 20:45:24 -0400 Subject: [PATCH] Track support of minimum age in managers We now use the value of SupportsMinimumAge to display which package managers support this setting. --- .gitignore | 28 ++----------------- .../Pages/SettingsPages/UpdatesViewModel.cs | 6 +--- .../SettingsPages/PackageManagerPage.axaml.cs | 5 +--- .../ManagerCapabilities.cs | 1 + .../Bun.cs | 1 + .../Cargo.cs | 1 + .../Npm.cs | 1 + .../Pip.cs | 1 + .../GeneralPages/Updates.xaml.cs | 5 +--- .../ManagersPages/PackageManager.xaml.cs | 5 +--- 10 files changed, 11 insertions(+), 43 deletions(-) diff --git a/.gitignore b/.gitignore index 711cadf3d3..8d71f9c744 100644 --- a/.gitignore +++ b/.gitignore @@ -53,32 +53,6 @@ src/.vs src/.vscode new-names.docx -src/UniGetUI/choco-cli/logs/ -src/UniGetUI/choco-cli/lib/ -src/UniGetUI/choco-cli/lib-bad/ -src/UniGetUI/choco-cli/.chocolatey/ -src/UniGetUI/choco-cli/lib/chocolatey-compatibility.extension/* -src/UniGetUI/choco-cli/extensions/chocolatey-core/* -src/UniGetUI/choco-cli/extensions/chocolatey-compatibility/* -src/UniGetUI/choco-cli/lib-bkp/ -src/UniGetUI/choco-cli/extensions/chocolatey-windowsupdate/* -src/UniGetUI/choco-cli/bin/chocolatey.exe -src/UniGetUI/choco-cli/redirects/chocolatey.exe -src/UniGetUI/choco-cli/redirects/chocolatey.exe.ignore -src/UniGetUI/choco-cli/redirects/cinst.exe -src/UniGetUI/choco-cli/redirects/cinst.exe.ignore -src/UniGetUI/choco-cli/redirects/clist.exe -src/UniGetUI/choco-cli/redirects/clist.exe.ignore -src/UniGetUI/choco-cli/redirects/cpush.exe -src/UniGetUI/choco-cli/redirects/cpush.exe.ignore -src/UniGetUI/choco-cli/redirects/cuninst.exe -src/UniGetUI/choco-cli/redirects/cuninst.exe.ignore -src/UniGetUI/choco-cli/redirects/cup.exe -src/UniGetUI/choco-cli/redirects/cup.exe.ignore -src/UniGetUI/choco-cli/bin/ssh-copy-id.exe -src/UniGetUI/choco-cli/extensions/chocolatey-visualstudio/ -src/UniGetUI/choco-cli/extensions/chocolatey-dotnetfx/ - *.user /src/UniGetUI/Generated Files /src/UniGetUI.Avalonia/Infrastructure/Generated Files @@ -96,3 +70,5 @@ src/UniGetUI.v3.ncrunchsolution # macOS Finder metadata .DS_Store /src/UniGetUI.Avalonia/Generated Files + +winget-cli_x64/ diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/UpdatesViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/UpdatesViewModel.cs index 9eca37b3bf..b3bfd32d9a 100644 --- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/UpdatesViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/UpdatesViewModel.cs @@ -20,10 +20,6 @@ public partial class UpdatesViewModel : ViewModelBase [ObservableProperty] private bool _isAutoCheckEnabled; [ObservableProperty] private bool _isCustomAgeSelected; - private static readonly HashSet _managersWithoutUpdateDate = - new(StringComparer.OrdinalIgnoreCase) - { "Homebrew", "Scoop", "vcpkg" }; - /// Items for the minimum update age ComboboxCard, in display/value pairs. public IReadOnlyList<(string Name, string Value)> MinimumAgeItems { get; } = [ @@ -89,7 +85,7 @@ public Control BuildReleaseDateCompatTable() var name = new TextBlock { Text = manager.DisplayName, VerticalAlignment = VerticalAlignment.Center }; Grid.SetRow(name, row); Grid.SetColumn(name, 0); - bool supported = !_managersWithoutUpdateDate.Contains(manager.Name); + bool supported = manager.Capabilities.SupportsMinimumAge; var badge = _statusBadge(supported ? yesStr : noStr, supported ? Colors.Green : Colors.Red); Grid.SetRow(badge, row); Grid.SetColumn(badge, 1); diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/PackageManagerPage.axaml.cs b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/PackageManagerPage.axaml.cs index 8840c5b266..0221361e5a 100644 --- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/PackageManagerPage.axaml.cs +++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/PackageManagerPage.axaml.cs @@ -21,9 +21,6 @@ namespace UniGetUI.Avalonia.Views.Pages.SettingsPages; public sealed partial class PackageManagerPage : UserControl, ISettingsPage { - private static readonly HashSet _managersWithoutUpdateDate = - new(StringComparer.OrdinalIgnoreCase) - { "Homebrew", "Scoop", "vcpkg" }; private PackageManagerViewModel ViewModel => (PackageManagerViewModel)DataContext!; public bool CanGoBack => true; @@ -260,7 +257,7 @@ private void BuildPage() }; bool initiallyCustom = savedAge == "custom"; - bool ageSupported = !_managersWithoutUpdateDate.Contains(manager.Name); + bool ageSupported = manager.Capabilities.SupportsMinimumAge; object ageDescription = !ageSupported ? new TextBlock { diff --git a/src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs b/src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs index c68f1b2bc7..f7520f1c73 100644 --- a/src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs +++ b/src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs @@ -35,6 +35,7 @@ public struct ManagerCapabilities public bool SupportsCustomSources = false; public bool SupportsCustomPackageIcons = false; public bool SupportsCustomPackageScreenshots = false; + public bool SupportsMinimumAge = false; public ProxySupport SupportsProxy = ProxySupport.No; public bool SupportsProxyAuth = false; public SourceCapabilities Sources { get; set; } diff --git a/src/UniGetUI.PackageEngine.Managers.Bun/Bun.cs b/src/UniGetUI.PackageEngine.Managers.Bun/Bun.cs index 8e5f90f7ac..830f61f3c1 100644 --- a/src/UniGetUI.PackageEngine.Managers.Bun/Bun.cs +++ b/src/UniGetUI.PackageEngine.Managers.Bun/Bun.cs @@ -28,6 +28,7 @@ public Bun() SupportsCustomScopes = false, CanListDependencies = true, SupportsPreRelease = true, + SupportsMinimumAge = true, SupportsProxy = ProxySupport.No, SupportsProxyAuth = false }; diff --git a/src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs b/src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs index 71d1e7b26b..b1d9748975 100644 --- a/src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs +++ b/src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs @@ -65,6 +65,7 @@ public Cargo() SupportsCustomVersions = true, SupportsCustomLocations = true, CanDownloadInstaller = true, + SupportsMinimumAge = true, SupportsProxy = ProxySupport.Partially, SupportsProxyAuth = true, }; diff --git a/src/UniGetUI.PackageEngine.Managers.Npm/Npm.cs b/src/UniGetUI.PackageEngine.Managers.Npm/Npm.cs index d7e6b43db8..8a996b4805 100644 --- a/src/UniGetUI.PackageEngine.Managers.Npm/Npm.cs +++ b/src/UniGetUI.PackageEngine.Managers.Npm/Npm.cs @@ -27,6 +27,7 @@ public Npm() SupportsCustomScopes = true, CanListDependencies = true, SupportsPreRelease = true, + SupportsMinimumAge = true, SupportsProxy = ProxySupport.No, SupportsProxyAuth = false, }; diff --git a/src/UniGetUI.PackageEngine.Managers.Pip/Pip.cs b/src/UniGetUI.PackageEngine.Managers.Pip/Pip.cs index 680a9191d4..051145a4db 100644 --- a/src/UniGetUI.PackageEngine.Managers.Pip/Pip.cs +++ b/src/UniGetUI.PackageEngine.Managers.Pip/Pip.cs @@ -61,6 +61,7 @@ public Pip() CanDownloadInstaller = true, SupportsPreRelease = true, CanListDependencies = true, + SupportsMinimumAge = true, SupportsProxy = ProxySupport.Yes, SupportsProxyAuth = true, }; diff --git a/src/UniGetUI/Pages/SettingsPages/GeneralPages/Updates.xaml.cs b/src/UniGetUI/Pages/SettingsPages/GeneralPages/Updates.xaml.cs index e03fb5aa21..d78ea57aeb 100644 --- a/src/UniGetUI/Pages/SettingsPages/GeneralPages/Updates.xaml.cs +++ b/src/UniGetUI/Pages/SettingsPages/GeneralPages/Updates.xaml.cs @@ -18,9 +18,6 @@ namespace UniGetUI.Pages.SettingsPages.GeneralPages /// public sealed partial class Updates : Page, ISettingsPage { - private static readonly HashSet _managersWithoutUpdateDate = - new(StringComparer.OrdinalIgnoreCase) { "Homebrew", "Scoop", "vcpkg", "WinGet" }; - public Updates() { this.InitializeComponent(); @@ -130,7 +127,7 @@ private static UIElement BuildReleaseDateCompatTable() int row = i + 1; var name = new TextBlock { Text = manager.DisplayName, VerticalAlignment = VerticalAlignment.Center }; Grid.SetRow(name, row); Grid.SetColumn(name, 0); - bool supported = !_managersWithoutUpdateDate.Contains(manager.Name); + bool supported = manager.Capabilities.SupportsMinimumAge; var badge = MakeStatusBadge(supported ? yesStr : noStr, supported); Grid.SetRow(badge, row); Grid.SetColumn(badge, 1); table.Children.Add(name); diff --git a/src/UniGetUI/Pages/SettingsPages/ManagersPages/PackageManager.xaml.cs b/src/UniGetUI/Pages/SettingsPages/ManagersPages/PackageManager.xaml.cs index eddb4a0a59..9ef02b1c99 100644 --- a/src/UniGetUI/Pages/SettingsPages/ManagersPages/PackageManager.xaml.cs +++ b/src/UniGetUI/Pages/SettingsPages/ManagersPages/PackageManager.xaml.cs @@ -35,9 +35,6 @@ namespace UniGetUI.Pages.SettingsPages.GeneralPages /// public sealed partial class PackageManagerPage : Page, ISettingsPage { - private static readonly HashSet _managersWithoutUpdateDate = - new(StringComparer.OrdinalIgnoreCase) { "Homebrew", "Scoop", "vcpkg", "WinGet" }; - IPackageManager? Manager; public event EventHandler? RestartRequired; public event EventHandler? NavigationRequested @@ -493,7 +490,7 @@ protected override void OnNavigatedTo(NavigationEventArgs e) }; bool initiallyCustomAge = savedAgeVal == "custom"; - bool ageSupported = !_managersWithoutUpdateDate.Contains(Manager.Name); + bool ageSupported = Manager.Capabilities.SupportsMinimumAge; object ageCardDescription = !ageSupported ? new TextBlock