fix(PluginManager): re-aggregate old and current manifests in DetectAvailablePluginUpdates() (closes #409)

This commit is contained in:
goat 2021-07-15 14:59:36 +02:00
parent bacf4d8400
commit efdadc6c35
No known key found for this signature in database
GPG key ID: F18F057873895461

View file

@ -800,15 +800,24 @@ namespace Dalamud.Plugin.Internal
{
var updatablePlugins = new List<AvailablePluginUpdate>();
if (!this.ReposReady)
throw new Exception("Plugin updates can only be detected when repos are available.");
// Collect all outdated and current plugin manifests
var remoteManifests =
this.Repos.SelectMany(x => x.PluginMaster).Where(x => x.DalamudApiLevel <= DalamudApiLevel).ToList();
for (var i = 0; i < this.installedPlugins.Count; i++)
{
var plugin = this.installedPlugins[i];
Log.Debug($"Checking plugin updates for {plugin.Manifest.InternalName}");
var installedVersion = plugin.IsTesting
? plugin.Manifest.TestingAssemblyVersion
: plugin.Manifest.AssemblyVersion;
var updates = this.availablePlugins
var updates = remoteManifests
.Where(remoteManifest => plugin.Manifest.InternalName == remoteManifest.InternalName)
.Select(remoteManifest =>
{
@ -818,6 +827,8 @@ namespace Dalamud.Plugin.Internal
: remoteManifest.AssemblyVersion;
var isUpdate = candidateVersion > installedVersion;
Log.Debug($" => {remoteManifest.InternalName} from {remoteManifest.SourceRepo.PluginMasterUrl} - candidate: {candidateVersion} installed: {installedVersion}");
return (isUpdate, useTesting, candidateVersion, remoteManifest);
})
.Where(tpl => tpl.isUpdate)