From 0e327611daf87f70b11202c36856dde17cb03a05 Mon Sep 17 00:00:00 2001 From: cake Date: Fri, 26 Dec 2025 20:37:24 +0100 Subject: [PATCH] Added chat notifcation pair request send --- LightlessSync/Plugin.cs | 6 +++- LightlessSync/Services/ContextMenuService.cs | 31 ++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/LightlessSync/Plugin.cs b/LightlessSync/Plugin.cs index a6e33ac..7ad969d 100644 --- a/LightlessSync/Plugin.cs +++ b/LightlessSync/Plugin.cs @@ -40,6 +40,7 @@ using System.Reflection; using OtterTex; using LightlessSync.Services.LightFinder; using LightlessSync.Services.PairProcessing; +using LightlessSync.UI.Models; namespace LightlessSync; @@ -299,7 +300,10 @@ public sealed class Plugin : IDalamudPlugin sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService(), - sp.GetRequiredService())); + sp.GetRequiredService(), + chatGui, + sp.GetRequiredService()) + ); // IPC callers / manager services.AddSingleton(sp => new IpcCallerPenumbra( diff --git a/LightlessSync/Services/ContextMenuService.cs b/LightlessSync/Services/ContextMenuService.cs index 762654b..4103a36 100644 --- a/LightlessSync/Services/ContextMenuService.cs +++ b/LightlessSync/Services/ContextMenuService.cs @@ -4,21 +4,22 @@ using Dalamud.Plugin; using Dalamud.Plugin.Services; using LightlessSync.LightlessConfiguration; using LightlessSync.LightlessConfiguration.Models; +using LightlessSync.Services.LightFinder; using LightlessSync.Services.Mediator; +using LightlessSync.UI; +using LightlessSync.UI.Services; using LightlessSync.Utils; using LightlessSync.WebAPI; using Lumina.Excel.Sheets; -using LightlessSync.UI.Services; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using LightlessSync.UI; -using LightlessSync.Services.LightFinder; namespace LightlessSync.Services; internal class ContextMenuService : IHostedService { private readonly IContextMenu _contextMenu; + private readonly IChatGui _chatGui; private readonly IDalamudPluginInterface _pluginInterface; private readonly IDataManager _gameData; private readonly ILogger _logger; @@ -29,6 +30,7 @@ internal class ContextMenuService : IHostedService private readonly ApiController _apiController; private readonly IObjectTable _objectTable; private readonly LightlessConfigService _configService; + private readonly NotificationService _lightlessNotification; private readonly LightFinderScannerService _broadcastScannerService; private readonly LightFinderService _broadcastService; private readonly LightlessProfileManager _lightlessProfileManager; @@ -43,7 +45,7 @@ internal class ContextMenuService : IHostedService ILogger logger, DalamudUtilService dalamudUtil, ApiController apiController, - IObjectTable objectTable, + IObjectTable objectTable, LightlessConfigService configService, PairRequestService pairRequestService, PairUiService pairUiService, @@ -51,7 +53,9 @@ internal class ContextMenuService : IHostedService LightFinderScannerService broadcastScannerService, LightFinderService broadcastService, LightlessProfileManager lightlessProfileManager, - LightlessMediator mediator) + LightlessMediator mediator, + IChatGui chatGui, + NotificationService lightlessNotification) { _contextMenu = contextMenu; _pluginInterface = pluginInterface; @@ -68,6 +72,8 @@ internal class ContextMenuService : IHostedService _broadcastService = broadcastService; _lightlessProfileManager = lightlessProfileManager; _mediator = mediator; + _chatGui = chatGui; + _lightlessNotification = lightlessNotification; } public Task StartAsync(CancellationToken cancellationToken) @@ -198,6 +204,18 @@ internal class ContextMenuService : IHostedService .Where(p => p.IsVisible && p.PlayerCharacterId != uint.MaxValue) .Select(p => (ulong)p.PlayerCharacterId)]; + private void NotifyInChat(string message, NotificationType type = NotificationType.Info) + { + if (!_configService.Current.UseLightlessNotifications || (_configService.Current.LightlessPairRequestNotification == NotificationLocation.Chat || _configService.Current.LightlessPairRequestNotification == NotificationLocation.ChatAndLightlessUi)) + { + var chatMsg = $"[Lightless] {message}"; + if (type == NotificationType.Error) + _chatGui.PrintError(chatMsg); + else + _chatGui.Print(chatMsg); + } + } + private async Task HandleSelection(IMenuArgs args) { if (args.Target is not MenuTargetDefault target) @@ -226,6 +244,9 @@ internal class ContextMenuService : IHostedService { _pairRequestService.RemoveRequest(receiverCid); } + + // Notify in chat when NotificationService is disabled + NotifyInChat($"Pair request sent to {target.TargetName}@{world.Name}.", NotificationType.Info); } catch (Exception ex) { -- 2.49.1