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