@page "/media/sources/emby/edit" @using ErsatzTV.Core.Emby @using ErsatzTV.Application.Emby @implements IDisposable @inject IMediator _mediator @inject NavigationManager _navigationManager @inject ISnackbar _snackbar @inject ILogger _logger @code { private readonly CancellationTokenSource _cts = new(); public void Dispose() { _cts.Cancel(); _cts.Dispose(); } private async Task LoadSecrets(RemoteMediaSourceEditViewModel viewModel) { EmbySecrets secrets = await _mediator.Send(new GetEmbySecrets(), _cts.Token); viewModel.Address = secrets.Address; viewModel.ApiKey = secrets.ApiKey; return Unit.Default; } private async Task> SaveSecrets(RemoteMediaSourceEditViewModel viewModel) { var secrets = new EmbySecrets { Address = viewModel.Address, ApiKey = viewModel.ApiKey }; return await _mediator.Send(new SaveEmbySecrets(secrets), _cts.Token); } }