@page "/" @using LiveChat.Models; @using Microsoft.AspNetCore.SignalR.Client @inject Blazored.LocalStorage.ILocalStorageService localStorage @inject NavigationManager Navigation @implements IAsyncDisposable LiveChat app
@if (msgs != null) { } else {

Ingen meldinger tilgjengelig.

} @code { private HubConnection? hubConnection; private bool ModalIsVisible = true; private MessageModel messageModel = new MessageModel() { User = "", Message = "" }; private UserModel userModel = new UserModel() { User = "" }; private List msgs = new List(); protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(Navigation.ToAbsoluteUri("/chathub")) .Build(); using (var db = new ChattingContext()) { var messages = db.Messages.ToList(); foreach (var msg in messages) { var encodedMsg = $"{msg.User}: {msg.Message}"; msgs.Add(encodedMsg); } await InvokeAsync(StateHasChanged); } hubConnection.On("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; msgs.Add(encodedMsg); InvokeAsync(StateHasChanged); }); await hubConnection.StartAsync(); } private async Task SetUser() { ModalIsVisible = false; messageModel.User = userModel.User; await localStorage.SetItemAsync("user", userModel.User); } private async Task HandleSubmit() { var filter = new ProfanityFilter.ProfanityFilter(); // Kjempegøy filter.AddProfanity("faen"); filter.AddProfanity("jævla"); filter.AddProfanity("jævel"); filter.AddProfanity("homse"); filter.AddProfanity("homo"); filter.AddProfanity("neger"); filter.AddProfanity("transe"); filter.AddProfanity("dritt"); messageModel.User = filter.CensorString(messageModel.User); messageModel.Message = filter.CensorString(messageModel.Message); if (hubConnection is not null) { await hubConnection.SendAsync("SendMessage", messageModel.User, messageModel.Message); } } public bool IsConnected => hubConnection?.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection is not null) { await hubConnection.DisposeAsync(); } } }