From b9030549a7dc31efd9b490bb9fd37b37ad830596 Mon Sep 17 00:00:00 2001 From: choco Date: Thu, 16 Oct 2025 14:08:37 +0200 Subject: [PATCH] pair request cleanup with refactoring --- LightlessSync/Services/Mediator/Messages.cs | 1 + LightlessSync/Services/NotificationService.cs | 19 ++++++++++++------- LightlessSync/Services/PairRequestService.cs | 4 ++++ .../ApiController.Functions.Callbacks.cs | 9 +-------- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/LightlessSync/Services/Mediator/Messages.cs b/LightlessSync/Services/Mediator/Messages.cs index 134b19c..21f1430 100644 --- a/LightlessSync/Services/Mediator/Messages.cs +++ b/LightlessSync/Services/Mediator/Messages.cs @@ -108,6 +108,7 @@ public record EnableBroadcastMessage(string HashedCid, bool Enabled) : MessageBa public record BroadcastStatusChangedMessage(bool Enabled, TimeSpan? Ttl) : MessageBase; public record SyncshellBroadcastsUpdatedMessage : MessageBase; public record PairRequestsUpdatedMessage : MessageBase; +public record PairRequestReceivedMessage(string SenderName, string SenderId) : MessageBase; public record BroadcastExpiredMessage : MessageBase; public record VisibilityChange : MessageBase; #pragma warning restore S2094 diff --git a/LightlessSync/Services/NotificationService.cs b/LightlessSync/Services/NotificationService.cs index 1dc65af..fe30da1 100644 --- a/LightlessSync/Services/NotificationService.cs +++ b/LightlessSync/Services/NotificationService.cs @@ -49,6 +49,7 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ { Mediator.Subscribe(this, HandleNotificationMessage); Mediator.Subscribe(this, HandlePairRequestsUpdated); + Mediator.Subscribe(this, HandlePairRequestReceived); Mediator.Subscribe(this, HandlePerformanceNotification); Mediator.Subscribe(this, HandleBroadcastExpired); return Task.CompletedTask; @@ -585,6 +586,16 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ _chatGui.Print(se.BuiltString); } + private void HandlePairRequestReceived(PairRequestReceivedMessage msg) + { + ShowPairRequestNotification( + msg.SenderName, + msg.SenderId, + () => _pairRequestService.AcceptPairRequest(msg.SenderId, msg.SenderName), + () => _pairRequestService.DeclinePairRequest(msg.SenderId) + ); + } + private void HandlePairRequestsUpdated(PairRequestsUpdatedMessage _) { var activeRequests = _pairRequestService.GetActiveRequests(); @@ -602,16 +613,10 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ _shownPairRequestNotifications.Remove(hashedCid); } - // Show/update notifications for all active requests + // Track active requests foreach (var request in activeRequests) { _shownPairRequestNotifications.Add(request.HashedCid); - ShowPairRequestNotification( - request.DisplayName, - request.HashedCid, - () => _pairRequestService.AcceptPairRequest(request.HashedCid, request.DisplayName), - () => _pairRequestService.DeclinePairRequest(request.HashedCid) - ); } } diff --git a/LightlessSync/Services/PairRequestService.cs b/LightlessSync/Services/PairRequestService.cs index 92294e2..6c18e1a 100644 --- a/LightlessSync/Services/PairRequestService.cs +++ b/LightlessSync/Services/PairRequestService.cs @@ -70,6 +70,10 @@ public sealed class PairRequestService : DisposableMediatorSubscriberBase : _dalamudUtil.RunOnFrameworkThread(() => ToDisplay(entry)).GetAwaiter().GetResult(); Mediator.Publish(new PairRequestsUpdatedMessage()); + + var senderName = string.IsNullOrEmpty(display.DisplayName) ? "Unknown User" : display.DisplayName; + Mediator.Publish(new PairRequestReceivedMessage(senderName, display.HashedCid)); + return display; } diff --git a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs index 090539b..c68d789 100644 --- a/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs +++ b/LightlessSync/WebAPI/SignalR/ApiController.Functions.Callbacks.cs @@ -110,14 +110,7 @@ public partial class ApiController if (dto == null) return Task.CompletedTask; - var request = _pairRequestService.RegisterIncomingRequest(dto.myHashedCid, dto.message ?? string.Empty); - var senderName = string.IsNullOrEmpty(request.DisplayName) ? "Unknown User" : request.DisplayName; - - _lightlessNotificationService.ShowPairRequestNotification( - senderName, - request.HashedCid, - onAccept: () => _pairRequestService.AcceptPairRequest(request.HashedCid, senderName), - onDecline: () => _pairRequestService.DeclinePairRequest(request.HashedCid)); + _pairRequestService.RegisterIncomingRequest(dto.myHashedCid, dto.message ?? string.Empty); return Task.CompletedTask; }