Skip to content

Commit

Permalink
Merge pull request #2987 from mrixner/version-in-ignored-updates
Browse files Browse the repository at this point in the history
  • Loading branch information
marticliment authored Nov 17, 2024
2 parents bbb5c49 + 232e6b5 commit 29241a5
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections.Concurrent;
using UniGetUI.Core.Logging;
using UniGetUI.Core.SettingsEngine;
using UniGetUI.Interface.Enums;
Expand All @@ -9,6 +10,11 @@ public class UpgradablePackagesLoader : AbstractPackageLoader
{
private System.Timers.Timer? UpdatesTimer;

/// <summary>
/// The collection of packages with updates ignored
/// </summary>
public ConcurrentDictionary<string, IPackage> IgnoredPackages = new();

public UpgradablePackagesLoader(IEnumerable<IPackageManager> managers)
: base(managers, "DISCOVERABLE_PACKAGES", AllowMultiplePackageVersions: false, CheckedBydefault: !Settings.Get("DisableSelectingUpdatesByDefault"))
{
Expand All @@ -18,7 +24,11 @@ public UpgradablePackagesLoader(IEnumerable<IPackageManager> managers)
protected override async Task<bool> IsPackageValid(IPackage package)
{
if (package.Version == package.NewVersion) return false;
if (await package.HasUpdatesIgnoredAsync(package.NewVersion)) return false;
if (await package.HasUpdatesIgnoredAsync(package.NewVersion))
{
IgnoredPackages[package.Id] = package;
return false;
}
if (package.NewerVersionIsInstalled()) return false;
return true;
}
Expand Down
10 changes: 7 additions & 3 deletions src/UniGetUI/Pages/DialogPages/IgnoredUpdates.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*" MaxWidth="120"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="170"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*" MaxWidth="80"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
Expand All @@ -84,9 +86,11 @@
<TextBlock Text="{x:Bind Id}" Grid.Column="3" VerticalAlignment="Center"/>
<widgets:LocalIcon Icon="version" Grid.Column="4" Height="24" Width="24"/>
<TextBlock Text="{x:Bind Version}" Grid.Column="5" VerticalAlignment="Center"/>
<widgets:LocalIcon Icon="{x:Bind Manager.Properties.IconId}" Grid.Column="6" Height="24" Width="24"/>
<TextBlock Text="{x:Bind Manager.DisplayName}" Grid.Column="7" VerticalAlignment="Center"/>
<Button Click="{x:Bind RemoveFromIgnoredUpdates}" Height="32" Width="32" Padding="0" Grid.Column="8">
<widgets:LocalIcon Icon="Upgradable" Grid.Column="6" Height="24" Width="24"/>
<TextBlock Text="{x:Bind NewVersion}" Grid.Column="7" VerticalAlignment="Center"/>
<widgets:LocalIcon Icon="{x:Bind Manager.Properties.IconId}" Grid.Column="8" Height="24" Width="24"/>
<TextBlock Text="{x:Bind Manager.DisplayName}" Grid.Column="9" VerticalAlignment="Center"/>
<Button Click="{x:Bind RemoveFromIgnoredUpdates}" Height="32" Width="32" Padding="0" Grid.Column="10">
<FontIcon Glyph="&#xE74D;" FontSize="16"/>
</Button>
</Grid>
Expand Down
24 changes: 24 additions & 0 deletions src/UniGetUI/Pages/DialogPages/IgnoredUpdates.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ public class IgnoredPackageEntry
public string Id { get; }
public string Name { get; }
public string Version { get; }
public string NewVersion { get; }
public IPackageManager Manager { get; }
private ObservableCollection<IgnoredPackageEntry> List { get; }
public IgnoredPackageEntry(string id, string version, IPackageManager manager, ObservableCollection<IgnoredPackageEntry> list)
Expand All @@ -108,6 +109,22 @@ public IgnoredPackageEntry(string id, string version, IPackageManager manager, O
Version = version;
}

string CurrentVersion = PEInterface.InstalledPackagesLoader.GetPackageForId(id)?.Version ?? "Unknown";

if (PEInterface.UpgradablePackagesLoader.IgnoredPackages.TryGetValue(Id, out IPackage? package)
&& package.NewVersion != package.Version)
{
NewVersion = CurrentVersion + " \u27a4 " + package.NewVersion;
}
else if (CurrentVersion != "Unknown")
{
NewVersion = CoreTools.Translate("Up to date") + $" ({CurrentVersion})";;
}
else
{
NewVersion = CoreTools.Translate("Unknown");
}

Manager = manager;
List = list;
}
Expand All @@ -117,6 +134,13 @@ public async Task RemoveFromIgnoredUpdates()
string ignoredId = $"{Manager.Properties.Name.ToLower()}\\{Id}";
await Task.Run(() => IgnoredUpdatesDatabase.Remove(ignoredId));

// If possible, add the package to the software updates tab again
if (PEInterface.UpgradablePackagesLoader.IgnoredPackages.TryRemove(Id, out IPackage? nativePackage)
&& nativePackage.NewVersion != nativePackage.Version)
{
PEInterface.UpgradablePackagesLoader.AddForeign(nativePackage);
}

foreach (IPackage package in PEInterface.InstalledPackagesLoader.Packages)
{
if (Manager == package.Manager && package.Id == Id)
Expand Down
3 changes: 3 additions & 0 deletions src/UniGetUI/Pages/SoftwarePages/SoftwareUpdatesPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ public override void GenerateToolBar()
{
await package.AddToIgnoredUpdatesAsync();
PEInterface.UpgradablePackagesLoader.Remove(package);
PEInterface.UpgradablePackagesLoader.IgnoredPackages[package.Id] = package;
}
};

Expand Down Expand Up @@ -529,6 +530,7 @@ private void MenuIgnorePackage_Invoked(object sender, RoutedEventArgs e)

_ = package.AddToIgnoredUpdatesAsync();
PEInterface.UpgradablePackagesLoader.Remove(package);
PEInterface.UpgradablePackagesLoader.IgnoredPackages[package.Id] = package;
}

private void MenuSkipVersion_Invoked(object sender, RoutedEventArgs e)
Expand All @@ -541,6 +543,7 @@ private void MenuSkipVersion_Invoked(object sender, RoutedEventArgs e)

_ = package.AddToIgnoredUpdatesAsync(package.NewVersion);
PEInterface.UpgradablePackagesLoader.Remove(package);
PEInterface.UpgradablePackagesLoader.IgnoredPackages[package.Id] = package;
}

public void UpdatePackageForId(string id)
Expand Down

0 comments on commit 29241a5

Please sign in to comment.