added chat report functionality and some other random stuff

This commit is contained in:
2025-11-30 19:59:37 +09:00
parent cab13874d8
commit 91393bf4a1
10 changed files with 417 additions and 53 deletions

View File

@@ -1,6 +1,7 @@
using Dalamud.Plugin;
using LightlessSync.Services.Mediator;
using Microsoft.Extensions.Logging;
using System.Linq;
namespace LightlessSync.Interop.Ipc.Framework;
@@ -107,7 +108,9 @@ public abstract class IpcServiceBase : DisposableMediatorSubscriberBase, IIpcSer
try
{
var plugin = PluginInterface.InstalledPlugins
.FirstOrDefault(p => string.Equals(p.InternalName, Descriptor.InternalName, StringComparison.OrdinalIgnoreCase));
.Where(p => string.Equals(p.InternalName, Descriptor.InternalName, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(p => p.IsLoaded)
.FirstOrDefault();
if (plugin == null)
{
@@ -119,7 +122,7 @@ public abstract class IpcServiceBase : DisposableMediatorSubscriberBase, IIpcSer
return IpcConnectionState.VersionMismatch;
}
if (!IsPluginEnabled())
if (!IsPluginEnabled(plugin))
{
return IpcConnectionState.PluginDisabled;
}
@@ -138,8 +141,8 @@ public abstract class IpcServiceBase : DisposableMediatorSubscriberBase, IIpcSer
}
}
protected virtual bool IsPluginEnabled()
=> true;
protected virtual bool IsPluginEnabled(IExposedPlugin plugin)
=> plugin.IsLoaded;
protected virtual bool IsPluginReady()
=> true;

View File

@@ -122,7 +122,7 @@ public sealed class IpcCallerPenumbra : IpcServiceBase
}
}
protected override bool IsPluginEnabled()
protected override bool IsPluginEnabled(IExposedPlugin plugin)
{
try
{

View File

@@ -51,9 +51,14 @@ public sealed class PenumbraRedraw : PenumbraBase
return;
}
var redrawSemaphore = _redrawManager.RedrawSemaphore;
var semaphoreAcquired = false;
try
{
await _redrawManager.RedrawSemaphore.WaitAsync(token).ConfigureAwait(false);
await redrawSemaphore.WaitAsync(token).ConfigureAwait(false);
semaphoreAcquired = true;
await _redrawManager.PenumbraRedrawInternalAsync(logger, handler, applicationId, chara =>
{
logger.LogDebug("[{ApplicationId}] Calling on IPC: PenumbraRedraw", applicationId);
@@ -62,7 +67,10 @@ public sealed class PenumbraRedraw : PenumbraBase
}
finally
{
_redrawManager.RedrawSemaphore.Release();
if (semaphoreAcquired)
{
redrawSemaphore.Release();
}
}
}