diff --git a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs index 7908c7004..05fc643b5 100644 --- a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs +++ b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs @@ -679,7 +679,7 @@ namespace Dalamud.Interface.Internal.Windows this.DrawVisitRepoUrlButton(plugin.Manifest.RepoUrl); if (availablePluginUpdate != default) - this.DrawUpdateSinglePluginButton(plugin, availablePluginUpdate); + this.DrawUpdateSinglePluginButton(availablePluginUpdate); ImGui.SameLine(); ImGui.TextColored(ImGuiColors.DalamudGrey3, $" v{plugin.Manifest.AssemblyVersion}"); @@ -781,7 +781,7 @@ namespace Dalamud.Interface.Internal.Windows } } - private void DrawUpdateSinglePluginButton(LocalPlugin plugin, AvailablePluginUpdate update) + private void DrawUpdateSinglePluginButton(AvailablePluginUpdate update) { ImGui.SameLine(); @@ -800,7 +800,7 @@ namespace Dalamud.Interface.Internal.Windows if (!task.Result.WasUpdated) { - ShowErrorModal(errorMessage); + this.ShowErrorModal(errorMessage); } }); } diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index 83fd13c46..5f081fb6b 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -800,15 +800,24 @@ namespace Dalamud.Plugin.Internal { var updatablePlugins = new List(); + 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)