feat: add ActivePluginsChanged event to DPI (closes #1192)

This commit is contained in:
goat 2023-05-21 18:53:47 +02:00
parent fa73ccd3ee
commit 839519b2bb
No known key found for this signature in database
GPG key ID: 49E2AA8C6A76498B
4 changed files with 59 additions and 2 deletions

View file

@ -1063,8 +1063,9 @@ Thanks and have fun!";
/// </summary>
/// <param name="ignoreDisabled">Ignore disabled plugins.</param>
/// <param name="dryRun">Perform a dry run, don't install anything.</param>
/// <param name="autoUpdate">If this action was performed as part of an auto-update.</param>
/// <returns>Success or failure and a list of updated plugin metadata.</returns>
public async Task<List<PluginUpdateStatus>> UpdatePluginsAsync(bool ignoreDisabled, bool dryRun)
public async Task<List<PluginUpdateStatus>> UpdatePluginsAsync(bool ignoreDisabled, bool dryRun, bool autoUpdate = false)
{
Log.Information("Starting plugin update");
@ -1089,6 +1090,9 @@ Thanks and have fun!";
}
this.NotifyInstalledPluginsChanged();
this.NotifyPluginsForStateChange(
autoUpdate ? PluginListInvalidationKind.AutoUpdate : PluginListInvalidationKind.Update,
updatedList.Select(x => x.InternalName));
Log.Information("Plugin update OK.");
@ -1391,6 +1395,20 @@ Thanks and have fun!";
this.OnInstalledPluginsChanged?.InvokeSafely();
}
private void NotifyPluginsForStateChange(PluginListInvalidationKind kind, IEnumerable<string> affectedInternalNames)
{
foreach (var installedPlugin in this.InstalledPlugins)
{
if (!installedPlugin.IsLoaded || installedPlugin.DalamudInterface == null)
continue;
installedPlugin.DalamudInterface.NotifyActivePluginsChanged(
kind,
// ReSharper disable once PossibleMultipleEnumeration
affectedInternalNames.Contains(installedPlugin.Manifest.InternalName));
}
}
private static class Locs
{
public static string DalamudPluginUpdateSuccessful(string name, Version version) => Loc.Localize("DalamudPluginUpdateSuccessful", " 》 {0} updated to v{1}.").Format(name, version);