@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(); } }