LANCommander/LANCommander.UI/Components/Chat/Chat.razor

55 lines
1.3 KiB
Text
Raw Permalink Normal View History

@using LANCommander.SDK.Models
@using LANCommander.SDK.Services
@inject ChatClient ChatClient
@inject ModalService ModalService
2025-09-06 13:09:47 -05:00
@namespace LANCommander.UI.Components
2025-08-21 17:47:30 -05:00
<Button OnClick="StartThread">New Thread</Button>
2025-08-21 17:47:30 -05:00
2025-11-13 23:39:55 -06:00
<SplitPane>
<Pane>
<ChatList Threads="_threads" />
</Pane>
<Pane>
<ChatThread Id="_currentThreadId" />
</Pane>
</SplitPane>
2025-08-21 17:47:30 -05:00
@code {
IEnumerable<SDK.Models.ChatThread> _threads = [];
2025-08-21 17:47:30 -05:00
Guid _currentThreadId;
2025-08-21 17:47:30 -05:00
protected override async Task OnInitializedAsync()
{
_threads = await ChatClient.GetThreadsAsync();
2025-08-21 17:47:30 -05:00
}
async Task StartThread()
{
var users = await ChatClient.GetUsersAsync();
var modalOptions = new ModalOptions
{
Draggable = false,
Centered = true,
Title = "New Thread",
};
2025-11-13 18:18:03 -06:00
var modalRef = ModalService.CreateModal<ChatUsersDialog, IEnumerable<User>, IEnumerable<User>>(modalOptions, users);
modalRef.OnOk = async (users) =>
{
_currentThreadId = await ChatClient.StartThreadAsync(users.Select(u => u.Id.ToString()));
_threads = await ChatClient.GetThreadsAsync();
await InvokeAsync(StateHasChanged);
};
}
2025-08-21 17:47:30 -05:00
async Task OpenThread(Guid threadId)
2025-08-21 17:47:30 -05:00
{
_currentThreadId = threadId;
2025-08-21 17:47:30 -05:00
}
}