@using Microsoft.AspNetCore.SignalR.Client
@using spanreed.Shared
@inject NavigationManager NavigationManager
@implements IDisposable
@inject HttpClient Http
@code {
private string NewRoom;
private string NewRoomBox;
private bool collapseNavMenu = true;
private string NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
private HubConnection hubConnection;
private List rooms = new List();
protected override async Task OnInitializedAsync() {
hubConnection = new HubConnectionBuilder().WithUrl(NavigationManager.ToAbsoluteUri("/addroom")).Build();
hubConnection.On("NewRoom", name => {
rooms.Add(name);
rooms.Sort();
StateHasChanged();
});
var existing_rooms = await Http.GetFromJsonAsync("Room");
if (existing_rooms != null) {
foreach (var room in existing_rooms)
{
rooms.Add(room);
rooms.Sort();
}
}
await hubConnection.StartAsync();
var roomName = NavigationManager.Uri.Split("/").LastOrDefault();
if (roomName.Length > 0) {
await hubConnection.SendAsync("AddRoom", NavigationManager.Uri.Split("/").LastOrDefault());
}
}
async Task EnterBar(KeyboardEventArgs e) {
if (e.Key.Equals("Enter")) {
Console.WriteLine(NewRoom);
await hubConnection.SendAsync("AddRoom", NewRoom);
NavigationManager.NavigateTo(NewRoom);
NewRoom = "";
NewRoomBox = "";
} else if (e.Key.Length == 1) {
NewRoom = NewRoom + e.Key;
}
}
public bool IsConnected =>
hubConnection.State == HubConnectionState.Connected;
public void Dispose() {
_ = hubConnection.DisposeAsync();
}
}