From 8be1e4b8efd531fae2ac41bfdae7aec25f2e5e0e Mon Sep 17 00:00:00 2001 From: goat Date: Mon, 9 Oct 2023 22:06:35 +0200 Subject: [PATCH] fix: ignore the default profile when installing a plugin --- Dalamud/Plugin/Internal/PluginManager.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index ac808df89..51e994c69 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -784,6 +784,19 @@ internal partial class PluginManager : IDisposable, IServiceType public async Task InstallPluginAsync(RemotePluginManifest repoManifest, bool useTesting, PluginLoadReason reason, Guid? inheritedWorkingPluginId = null) { Log.Debug($"Installing plugin {repoManifest.Name} (testing={useTesting})"); + + // If this plugin is in the default profile for whatever reason, delete the state + // If it was in multiple profiles and is still, the user uninstalled it and chose to keep it in there, + // or the user removed the plugin manually in which case we don't care + var defaultProfile = this.profileManager.DefaultProfile; + using (defaultProfile.GetSyncScope()) + { + if (defaultProfile.WantsPlugin(repoManifest.InternalName).HasValue) + { + // We don't need to apply, it doesn't matter + await defaultProfile.RemoveAsync(repoManifest.InternalName, false); + } + } // Ensure that we have a testing opt-in for this plugin if we are installing a testing version if (useTesting && this.configuration.PluginTestingOptIns!.All(x => x.InternalName != repoManifest.InternalName))