From d3752caf1d560bf63500695561a9e65f4c9846d7 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 16 Aug 2025 23:38:47 +0800 Subject: [PATCH] :bug: Fixes and optimize deliver message --- .../Connection/WebSocketController.cs | 1 - DysonNetwork.Sphere/Chat/ChatService.cs | 39 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/DysonNetwork.Pusher/Connection/WebSocketController.cs b/DysonNetwork.Pusher/Connection/WebSocketController.cs index 0f0c0c5..59d4b39 100644 --- a/DysonNetwork.Pusher/Connection/WebSocketController.cs +++ b/DysonNetwork.Pusher/Connection/WebSocketController.cs @@ -7,7 +7,6 @@ using Swashbuckle.AspNetCore.Annotations; namespace DysonNetwork.Pusher.Connection; [ApiController] -[Route("/ws")] public class WebSocketController(WebSocketService ws, ILogger logger) : ControllerBase { [Route("/ws")] diff --git a/DysonNetwork.Sphere/Chat/ChatService.cs b/DysonNetwork.Sphere/Chat/ChatService.cs index a21d322..190406b 100644 --- a/DysonNetwork.Sphere/Chat/ChatService.cs +++ b/DysonNetwork.Sphere/Chat/ChatService.cs @@ -254,14 +254,36 @@ public partial class ChatService( notification.Body = "Call begun"; break; default: + var attachmentWord = message.Attachments.Count == 1 ? "attachment" : "attachments"; notification.Body = !string.IsNullOrEmpty(message.Content) ? message.Content[..Math.Min(message.Content.Length, 100)] - : $"<{message.Attachments.Count} attachments>"; + : $"<{message.Attachments.Count} {attachmentWord}>"; + break; + } + + switch (type) + { + case WebSocketPacketType.MessageUpdate: + notification.Body += " (edited)"; + break; + case WebSocketPacketType.MessageDelete: + notification.Body = "Deleted a message"; break; } var now = SystemClock.Instance.GetCurrentInstant(); + var request = new PushWebSocketPacketToUsersRequest + { + Packet = new WebSocketPacket + { + Type = type, + Data = GrpcTypeHelper.ConvertObjectToByteString(message), + }, + }; + request.UserIds.AddRange(members.Select(a => a.Account).Where(a => a is not null).Select(a => a!.Id.ToString())); + await scopedNty.PushWebSocketPacketToUsersAsync(request); + List accountsToNotify = []; foreach ( var member in members @@ -279,17 +301,6 @@ public partial class ChatService( accountsToNotify.Add(member.Account.ToProtoValue()); } - var request = new PushWebSocketPacketToUsersRequest - { - Packet = new WebSocketPacket - { - Type = type, - Data = GrpcTypeHelper.ConvertObjectToByteString(message), - }, - }; - request.UserIds.AddRange(accountsToNotify.Select(a => a.Id.ToString())); - await scopedNty.PushWebSocketPacketToUsersAsync(request); - accountsToNotify = accountsToNotify .Where(a => a.Id != sender.AccountId.ToString()).ToList(); @@ -389,15 +400,11 @@ public partial class ChatService( // Remove messages with no sender foreach (var key in messagesToRemove) - { messages.Remove(key); - } // Update remaining messages with their senders foreach (var message in messages) - { message.Value!.Sender = messageSenders.First(x => x.Id == message.Value.SenderId); - } return messages; }