@using ErsatzTV.Application.Watermarks @using ErsatzTV.Application.Watermarks.Commands @inject IMediator _mediator @inject ISnackbar _snackbar @inject ILogger _logger Enter a name for the new Watermark Cancel Copy Watermark @code { [CascadingParameter] MudDialogInstance MudDialog { get; set; } [Parameter] public int WatermarkId { get; set; } private record DummyModel; private readonly DummyModel _dummyModel = new(); private string _newWatermarkName; private bool CanSubmit() => !string.IsNullOrWhiteSpace(_newWatermarkName); private async Task Submit() { if (!CanSubmit()) { return; } Either maybeResult = await _mediator.Send(new CopyWatermark(WatermarkId, _newWatermarkName)); maybeResult.Match( watermark => { MudDialog.Close(DialogResult.Ok(watermark)); }, error => { _snackbar.Add(error.Value, Severity.Error); _logger.LogError("Error copying Watermark: {Error}", error.Value); MudDialog.Close(DialogResult.Cancel()); }); } private void Cancel(MouseEventArgs e) => MudDialog.Cancel(); }