@using Microsoft.Extensions.Logging @namespace LANCommander.UI.Components @inject ILogger Logger @code { [Parameter] public EventCallback OnSendMessage { get; set; } TextArea _textArea; string _contents; 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(_contents); _contents = String.Empty; } catch (Exception ex) { _errorMessage = "Could not send message"; Logger.LogError(ex, "Failure sending message"); } _sendingMessage = false; await Task.Yield(); await InvokeAsync(StateHasChanged); } } }