diff --git a/LANCommander.SDK/Rpc/Interfaces/Server/IRpcHub.Chat.cs b/LANCommander.SDK/Rpc/Interfaces/Server/IRpcHub.Chat.cs index c5606e10..c32872bc 100644 --- a/LANCommander.SDK/Rpc/Interfaces/Server/IRpcHub.Chat.cs +++ b/LANCommander.SDK/Rpc/Interfaces/Server/IRpcHub.Chat.cs @@ -15,4 +15,5 @@ public partial interface IRpcHub Task Chat_GetMessagesAsync(Guid threadId); Task Chat_StartTyping(Guid threadId); Task Chat_StopTyping(Guid threadId); + Task> Chat_GetUsersAsync(); } \ No newline at end of file diff --git a/LANCommander.SDK/Services/RpcClient.cs b/LANCommander.SDK/Services/RpcClient.cs index 670059c6..fed68b4c 100644 --- a/LANCommander.SDK/Services/RpcClient.cs +++ b/LANCommander.SDK/Services/RpcClient.cs @@ -51,6 +51,9 @@ public class RpcChatClient(IRpcSubscriber subscriber) public async Task StopTypingAsync(Guid threadId) => await RpcClient.Hub.Chat_StopTyping(threadId); + + public async Task> GetUsersAsync() + => await RpcClient.Hub.Chat_GetUsersAsync(); } public class RpcServerClient(IRpcSubscriber subscriber) diff --git a/LANCommander.Server.Services/ChatService.cs b/LANCommander.Server.Services/ChatService.cs index d7be0942..a4c03564 100644 --- a/LANCommander.Server.Services/ChatService.cs +++ b/LANCommander.Server.Services/ChatService.cs @@ -126,5 +126,21 @@ namespace LANCommander.Server.Services return threads; } + + + /// + /// Gets a list of users stripped down to only IDs and usernames + /// + public async Task> GetUsersAsync() + { + var users = await userService.AsNoTracking().GetAsync(); + + return users.Select(u => new User + { + Id = u.Id, + UserName = u.UserName, + Alias = u.Alias, + }).ToList(); + } } } diff --git a/LANCommander.Server/Hubs/Chat.cs b/LANCommander.Server/Hubs/Chat.cs index a3697b94..0da7341e 100644 --- a/LANCommander.Server/Hubs/Chat.cs +++ b/LANCommander.Server/Hubs/Chat.cs @@ -99,4 +99,11 @@ public partial class RpcHub await Clients.Users(participants).Chat_StopTyping(threadId, Context.UserIdentifier); } + + public async Task> Chat_GetUsersAsync() + { + var users = await chatService.GetUsersAsync(); + + return mapper.Map>(users); + } } \ No newline at end of file diff --git a/LANCommander.UI/Components/DataList/DataListInputPosition.cs b/LANCommander.UI/Components/DataList/DataListInputPosition.cs new file mode 100644 index 00000000..1704e316 --- /dev/null +++ b/LANCommander.UI/Components/DataList/DataListInputPosition.cs @@ -0,0 +1,6 @@ +namespace LANCommander.UI.Components.DataList; + +public class DataListInputPosition +{ + +} \ No newline at end of file