103 lines
2.8 KiB
Plaintext
103 lines
2.8 KiB
Plaintext
@page "/chat"
|
|
@using TIAMWebApp.Shared.Application.Services
|
|
@inject SignalRService SignalRService
|
|
|
|
<h3>Chat</h3>
|
|
<div class="container mt-5">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3>Chat</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<ul class="list-unstyled">
|
|
@foreach (var message in messages)
|
|
{
|
|
<li class="mb-2">
|
|
<div class="alert alert-secondary" role="alert">
|
|
@message
|
|
</div>
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
<div class="card-footer">
|
|
<div class="input-group">
|
|
<input @bind="newMessage" @bind:event="oninput" class="form-control" placeholder="Enter your message" />
|
|
<button @onclick="SendMessage" class="btn btn-primary">Send</button>
|
|
<button @onclick="MuteChat" class="btn btn-danger ms-2">Mute Chat</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<NavLink href="create-payment">
|
|
Create Payment
|
|
</NavLink>
|
|
|
|
@code {
|
|
private string userName;
|
|
private string newMessage;
|
|
private List<string> messages = new List<string>();
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
userName = Guid.NewGuid().ToString();
|
|
|
|
SignalRService.OnMessageReceived += (user, message) =>
|
|
{
|
|
messages.Add($"{user}: {message}");
|
|
InvokeAsync(StateHasChanged);
|
|
};
|
|
|
|
SignalRService.OnUserMuted += (user) =>
|
|
{
|
|
messages.Add($"{user} has been muted.");
|
|
InvokeAsync(StateHasChanged);
|
|
};
|
|
|
|
SignalRService.OnUserLoggedIn += (user) =>
|
|
{
|
|
messages.Add($"{user} has logged in.");
|
|
InvokeAsync(StateHasChanged);
|
|
};
|
|
|
|
SignalRService.OnUserLoggedOut += (user) =>
|
|
{
|
|
messages.Add($"{user} has logged out.");
|
|
InvokeAsync(StateHasChanged);
|
|
};
|
|
|
|
await SignalRService.StartConnection(userName);
|
|
}
|
|
|
|
private async Task SendMessage()
|
|
{
|
|
await SignalRService.SendMessage(userName, newMessage);
|
|
newMessage = string.Empty;
|
|
}
|
|
|
|
private async Task MuteChat()
|
|
{
|
|
await SignalRService.MuteChat(userName);
|
|
}
|
|
|
|
private async Task LoggedInToChat()
|
|
{
|
|
await SignalRService.LoggedInToChat(userName);
|
|
}
|
|
|
|
private async Task LoggedOutFromChat()
|
|
{
|
|
await SignalRService.LoggedOutFromChat(userName);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
SignalRService.OnMessageReceived -= (user, message) => { };
|
|
SignalRService.OnUserMuted -= (user) => { };
|
|
SignalRService.OnUserLoggedIn -= (user) => { };
|
|
LoggedOutFromChat();
|
|
SignalRService.OnUserLoggedOut -= (user) => { };
|
|
}
|
|
}
|