@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); }); } } }