pair request cleanup with refactoring

This commit is contained in:
choco
2025-10-16 14:08:37 +02:00
parent 10336a829a
commit b9030549a7
4 changed files with 18 additions and 15 deletions

View File

@@ -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

View File

@@ -49,6 +49,7 @@ public class NotificationService : DisposableMediatorSubscriberBase, IHostedServ
{
Mediator.Subscribe<NotificationMessage>(this, HandleNotificationMessage);
Mediator.Subscribe<PairRequestsUpdatedMessage>(this, HandlePairRequestsUpdated);
Mediator.Subscribe<PairRequestReceivedMessage>(this, HandlePairRequestReceived);
Mediator.Subscribe<PerformanceNotificationMessage>(this, HandlePerformanceNotification);
Mediator.Subscribe<BroadcastExpiredMessage>(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)
);
}
}

View File

@@ -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;
}

View File

@@ -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;
}