@page "/"
@using LiveChat.Models;
@using Microsoft.AspNetCore.SignalR.Client
@inject Blazored.LocalStorage.ILocalStorageService localStorage
@inject NavigationManager Navigation
@implements IAsyncDisposable
LiveChat app
Skriv inn romkode
Få tak i koden av eieren av rommet eller noen som er i det.
Lag et rom
Snakk med venner osv.
@if (msgs != null)
{
@foreach (var message in msgs)
{
@message
}
}
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();
}
}
}