diff --git a/HellionChat/PluginHostFactory.cs b/HellionChat/PluginHostFactory.cs index fd57739..ebaf6e7 100644 --- a/HellionChat/PluginHostFactory.cs +++ b/HellionChat/PluginHostFactory.cs @@ -112,6 +112,10 @@ internal static class PluginHostFactory sp.GetRequiredService>(), sp.GetRequiredService() )); + services.AddSingleton(sp => new Services.TellRouterService( + sp.GetRequiredService(), + sp.GetRequiredService>() + )); services.AddSingleton(sp => new Integrations.FailedTellNotifier( sp.GetRequiredService>() )); diff --git a/HellionChat/Services/TellRouterService.cs b/HellionChat/Services/TellRouterService.cs new file mode 100644 index 0000000..38d71e0 --- /dev/null +++ b/HellionChat/Services/TellRouterService.cs @@ -0,0 +1,32 @@ +using Dalamud.Game.Chat; +using Dalamud.Plugin.Services; +using Microsoft.Extensions.Logging; + +namespace HellionChat.Services; + +// Skeleton for the upcoming auto-open routing layer. Subscribes to IChatGui +// up front so the DI graph and Plugin.cs registration stay frozen — when +// the routing logic lands, it drops into OnChatMessage without touching +// anything else. +internal sealed class TellRouterService : IDisposable +{ + private readonly IChatGui _chatGui; + private readonly ILogger _logger; + + public TellRouterService(IChatGui chatGui, ILogger logger) + { + _chatGui = chatGui; + _logger = logger; + _chatGui.ChatMessageUnhandled += OnChatMessage; + } + + public void Dispose() + { + _chatGui.ChatMessageUnhandled -= OnChatMessage; + } + + private void OnChatMessage(IChatMessage message) + { + // Intentional no-op until the routing implementation lands. + } +}