diff --git a/qtc-net-server/Hubs/ChatHub.cs b/qtc-net-server/Hubs/ChatHub.cs index a9eb54b..a6a9d78 100644 --- a/qtc-net-server/Hubs/ChatHub.cs +++ b/qtc-net-server/Hubs/ChatHub.cs @@ -10,6 +10,8 @@ namespace qtc_api.Hubs private static List ConnectedUsers = new List(); private static List OnlineUsers = new List(); + private static Dictionary> GroupUsers = new(); + public ChatHub(IUserService userService, ILogger logger) { _userService = userService; @@ -64,7 +66,7 @@ namespace qtc_api.Hubs await _userService.UpdateStatus(statusDto); - await Clients.All.SendAsync("RefreshUserList"); + await Clients.All.SendAsync("RefreshUserLists"); } [HubMethodName("JoinLobby")] @@ -73,6 +75,11 @@ namespace qtc_api.Hubs await Groups.AddToGroupAsync(Context.ConnectionId, "LOBBY"); await Clients.Group("LOBBY").SendAsync("RoomMessage", $"[SERVER] User {user.Username} Has Joined The Lobby"); + + if (!GroupUsers.TryGetValue("LOBBY", out _)) { GroupUsers.Add("LOBBY", new List()); } + GroupUsers["LOBBY"].Add(user); + + await Clients.Groups("LOBBY").SendAsync("RoomUserList", GroupUsers["LOBBY"]); Log($"User {user.Username} Has Joined The Lobby"); } @@ -82,6 +89,10 @@ namespace qtc_api.Hubs await Groups.RemoveFromGroupAsync(Context.ConnectionId, "LOBBY"); await Clients.Group("LOBBY").SendAsync("RoomMessage", $"[SERVER] User {user.Username} Has Left The Lobby"); + + if (GroupUsers.TryGetValue("LOBBY", out _)) GroupUsers["LOBBY"].Remove(user); + + await Clients.Client("LOBBY").SendAsync("RoomUserList", GroupUsers["LOBBY"]); Log($"User {user.Username} Has Left The Lobby"); } @@ -91,6 +102,11 @@ namespace qtc_api.Hubs await Groups.AddToGroupAsync(Context.ConnectionId, room.Id); await Clients.Group(room.Id).SendAsync("RoomMessage", $"[SERVER] User {user.Username} Has Joined {room.Name}"); + + if (!GroupUsers.TryGetValue(room.Id, out _)) { GroupUsers.Add(room.Id, new List()); } + GroupUsers[room.Id].Add(user); + + await Clients.Group(room.Id).SendAsync("RoomUserList", GroupUsers[room.Id]); Log($"User {user.Username} Has Joined {room.Name}"); } @@ -100,6 +116,10 @@ namespace qtc_api.Hubs await Groups.RemoveFromGroupAsync(Context.ConnectionId, room.Id); await Clients.Group(room.Id).SendAsync("RoomMessage", $"[SERVER] User {user.Username} Has Left {room.Name}"); + + if (GroupUsers.TryGetValue(room.Id, out _)) GroupUsers[room.Id].Remove(GroupUsers[room.Id].FirstOrDefault(e => e.Id == user.Id)!); + + await Clients.Group(room.Id).SendAsync("RoomUserList", GroupUsers[room.Id]); Log($"User {user.Username} Has Left {room.Name}"); } diff --git a/qtc-net-server/Services/UserService/UserService.cs b/qtc-net-server/Services/UserService/UserService.cs index 51b23ef..fdcf64e 100644 --- a/qtc-net-server/Services/UserService/UserService.cs +++ b/qtc-net-server/Services/UserService/UserService.cs @@ -107,6 +107,7 @@ x.Bio = user.Bio; x.DateOfBirth = user.DateOfBirth; x.CurrencyAmount = user.CurrencyAmount; + x.Status = user.Status; userInfoList.Add(x); }