@page "/media/sources/plex/{Id:int}/paths" @using ErsatzTV.Application.MediaSources @using ErsatzTV.Application.Plex @inject IMediator Mediator @code { [Parameter] public int Id { get; set; } private async Task> GetMediaSourceById(int id, CancellationToken cancellationToken) => await Mediator.Send(new GetPlexMediaSourceById(Id), cancellationToken) .MapT(vm => new RemoteMediaSourceViewModel(vm.Id, vm.Name, vm.Address)); private async Task> GetPathReplacementsBySourceId(int mediaSourceId, CancellationToken cancellationToken) => await Mediator.Send(new GetPlexPathReplacementsBySourceId(Id), cancellationToken) .Map(list => list.Map(ProjectToEditViewModel).ToList()); private RemoteMediaSourcePathReplacementEditViewModel ProjectToEditViewModel(PlexPathReplacementViewModel item) => new() { Id = item.Id, RemotePath = item.PlexPath, LocalPath = item.LocalPath }; private IRequest> GetUpdatePathReplacementsRequest(List pathReplacements) { var items = pathReplacements .Map(item => new PlexPathReplacementItem(item.Id, item.RemotePath, item.LocalPath)) .ToList(); return new UpdatePlexPathReplacements(Id, items); } }