Fix PluginWatcher properly this time maybe
This commit is contained in:
@@ -48,7 +48,7 @@ public sealed class IpcCallerGlamourer : DisposableMediatorSubscriberBase, IIpcC
|
|||||||
_mareMediator = mareMediator;
|
_mareMediator = mareMediator;
|
||||||
_redrawManager = redrawManager;
|
_redrawManager = redrawManager;
|
||||||
|
|
||||||
var plugin = pi.InstalledPlugins.FirstOrDefault(p => p.InternalName.Equals("Glamourer", StringComparison.Ordinal));
|
var plugin = PluginWatcherService.GetInitialPluginState(pi, "Glamourer");
|
||||||
|
|
||||||
_pluginLoaded = plugin?.IsLoaded ?? false;
|
_pluginLoaded = plugin?.IsLoaded ?? false;
|
||||||
_pluginVersion = plugin?.Version ?? new(0, 0, 0, 0);
|
_pluginVersion = plugin?.Version ?? new(0, 0, 0, 0);
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa
|
|||||||
|
|
||||||
_penumbraGameObjectResourcePathResolved = GameObjectResourcePathResolved.Subscriber(pi, ResourceLoaded);
|
_penumbraGameObjectResourcePathResolved = GameObjectResourcePathResolved.Subscriber(pi, ResourceLoaded);
|
||||||
|
|
||||||
var plugin = pi.InstalledPlugins.FirstOrDefault(p => p.InternalName.Equals("Penumbra", StringComparison.Ordinal));
|
var plugin = PluginWatcherService.GetInitialPluginState(pi, "Penumbra");
|
||||||
|
|
||||||
_pluginLoaded = plugin?.IsLoaded ?? false;
|
_pluginLoaded = plugin?.IsLoaded ?? false;
|
||||||
_pluginVersion = plugin?.Version ?? new(0, 0, 0, 0);
|
_pluginVersion = plugin?.Version ?? new(0, 0, 0, 0);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
|
|||||||
_activeGameObjectHandlers.Remove(msg.GameObjectHandler);
|
_activeGameObjectHandlers.Remove(msg.GameObjectHandler);
|
||||||
});
|
});
|
||||||
|
|
||||||
_marePluginEnabled = pi.InstalledPlugins.Any(p => p.InternalName.Equals("MareSynchronos", StringComparison.Ordinal) && p.IsLoaded);
|
_marePluginEnabled = PluginWatcherService.GetInitialPluginState(pi, "MareSynchronos")?.IsLoaded ?? false;
|
||||||
Mediator.SubscribeKeyed<PluginChangeMessage>(this, "MareSynchronos", p => {
|
Mediator.SubscribeKeyed<PluginChangeMessage>(this, "MareSynchronos", p => {
|
||||||
_marePluginEnabled = p.IsLoaded;
|
_marePluginEnabled = p.IsLoaded;
|
||||||
HandleMareImpersonation();
|
HandleMareImpersonation();
|
||||||
|
|||||||
@@ -182,9 +182,7 @@ public sealed class NoSnapService : IHostedService, IMediatorSubscriber
|
|||||||
|
|
||||||
foreach (var pluginName in _listOfPlugins.Keys)
|
foreach (var pluginName in _listOfPlugins.Keys)
|
||||||
{
|
{
|
||||||
var plugin = _pluginInterface.InstalledPlugins.FirstOrDefault(p => p.InternalName.Equals(pluginName, StringComparison.Ordinal));
|
_listOfPlugins[pluginName] = PluginWatcherService.GetInitialPluginState(_pluginInterface, pluginName)?.IsLoaded ?? false;
|
||||||
if (plugin?.IsLoaded ?? false)
|
|
||||||
_listOfPlugins[pluginName] = true;
|
|
||||||
Mediator.SubscribeKeyed<PluginChangeMessage>(this, pluginName, (msg) =>
|
Mediator.SubscribeKeyed<PluginChangeMessage>(this, pluginName, (msg) =>
|
||||||
{
|
{
|
||||||
_listOfPlugins[pluginName] = msg.IsLoaded;
|
_listOfPlugins[pluginName] = msg.IsLoaded;
|
||||||
|
|||||||
@@ -88,6 +88,25 @@ public class PluginWatcherService : MediatorSubscriberBase
|
|||||||
Update(publish: false);
|
Update(publish: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PluginChangeMessage? GetInitialPluginState(IDalamudPluginInterface pi, string internalName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var plugin = pi.InstalledPlugins.Where(p => p.InternalName.Equals(internalName, StringComparison.Ordinal))
|
||||||
|
.OrderBy(p => (!p.IsLoaded, p.Version))
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (plugin == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return new PluginChangeMessage(plugin.InternalName, plugin.Version, plugin.IsLoaded);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Update(bool publish = true)
|
private void Update(bool publish = true)
|
||||||
{
|
{
|
||||||
if (!ExposedPluginsEqual(_pluginInterface.InstalledPlugins, _prevInstalledPluginState))
|
if (!ExposedPluginsEqual(_pluginInterface.InstalledPlugins, _prevInstalledPluginState))
|
||||||
|
|||||||
Reference in New Issue
Block a user