@using Unit = LanguageExt.Unit @inject IMediator _mediator @inject NavigationManager _navigationManager @inject ISnackbar _snackbar @inject ILogger _logger @Name Media Source
Save Changes
@code { [Parameter] public string Name { get; set; } [Parameter] public Func> LoadSecrets { get; set; } [Parameter] public Func>> SaveSecrets { get; set; } private readonly RemoteMediaSourceEditViewModel _model = new(); private EditContext _editContext; private ValidationMessageStore _messageStore; protected override async Task OnParametersSetAsync() => await LoadSecrets(_model); protected override void OnInitialized() { _editContext = new EditContext(_model); _messageStore = new ValidationMessageStore(_editContext); } private async Task HandleSubmitAsync() { _messageStore.Clear(); if (_editContext.Validate()) { Either result = await SaveSecrets(_model); result.Match( _ => _navigationManager.NavigateTo($"/media/sources/{Name.ToLowerInvariant()}"), error => { _snackbar.Add(error.Value, Severity.Error); _logger.LogError("Error saving {MediaSource} secrets: {Error}", Name, error.Value); }); } } }