@using Microsoft.Extensions.Logging @namespace LANCommander.UI.Components @inject ILogger Logger
@code { [Parameter] public EventCallback OnSendMessage { get; set; } TextArea _textArea; ChatMessage _message = new(); bool _sendingMessage; string _errorMessage = String.Empty; FormValidateStatus _validateStatus => _hasError ? FormValidateStatus.Error : FormValidateStatus.Default; bool _hasError => !String.IsNullOrWhiteSpace(_errorMessage); async Task SendMessage(PressEnterEventArgs args) { if (!args.ShiftKey) { args.PreventLineBreak(); _sendingMessage = true; try { if (OnSendMessage.HasDelegate) await OnSendMessage.InvokeAsync(_message.Content); _message.Content = String.Empty; } catch (Exception ex) { _errorMessage = "Could not send message"; Logger.LogError(ex, "Failure sending message"); } _sendingMessage = false; await Task.Yield(); await InvokeAsync(StateHasChanged); } } }