From b1faabb07b15fb63a23a35e51ef54c00a9d006ee Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 8 Jun 2025 12:14:23 +0800 Subject: [PATCH] :sparkles: Improved typing indicator --- DysonNetwork.Sphere/Account/AccountService.cs | 6 ++++-- .../Connection/Handlers/MessageTypingHandler.cs | 13 ++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/DysonNetwork.Sphere/Account/AccountService.cs b/DysonNetwork.Sphere/Account/AccountService.cs index 769d6f7..3d25bda 100644 --- a/DysonNetwork.Sphere/Account/AccountService.cs +++ b/DysonNetwork.Sphere/Account/AccountService.cs @@ -360,8 +360,10 @@ public class AccountService( await nty.UnsubscribePushNotifications(session.Challenge.DeviceId); // The current session should be included in the sessions' list - db.AuthSessions.RemoveRange(sessions); - await db.SaveChangesAsync(); + await db.AuthSessions + .Include(s => s.Challenge) + .Where(s => s.Challenge.DeviceId == session.Challenge.DeviceId) + .ExecuteDeleteAsync(); foreach (var item in sessions) await cache.RemoveAsync($"{DysonTokenAuthHandler.AuthCachePrefix}{item.Id}"); diff --git a/DysonNetwork.Sphere/Connection/Handlers/MessageTypingHandler.cs b/DysonNetwork.Sphere/Connection/Handlers/MessageTypingHandler.cs index 723eac7..57964aa 100644 --- a/DysonNetwork.Sphere/Connection/Handlers/MessageTypingHandler.cs +++ b/DysonNetwork.Sphere/Connection/Handlers/MessageTypingHandler.cs @@ -49,9 +49,20 @@ public class MessageTypingHandler(ChatRoomService crs) : IWebSocketPacketHandler return; } + var responsePacket = new WebSocketPacket + { + Type = "messages.typing", + Data = new Dictionary() + { + ["room_id"] = sender.ChatRoomId, + ["sender_id"] = sender.Id, + ["sender"] = sender + } + }; + // Broadcast read statuses var otherMembers = (await crs.ListRoomMembers(request.ChatRoomId)).Select(m => m.AccountId).ToList(); foreach (var member in otherMembers) - srv.SendPacketToAccount(member, packet); + srv.SendPacketToAccount(member, responsePacket); } } \ No newline at end of file