@page "/media/filler/presets" @using ErsatzTV.Application.Configuration @using ErsatzTV.Application.Filler @using ErsatzTV.Core.Domain.Filler @implements IDisposable @inject IDialogService Dialog @inject IMediator Mediator Add Filler Preset
Filler Presets Name Filler Kind @context.Name @( context.FillerKind switch { FillerKind.PreRoll => "Pre-Roll", FillerKind.MidRoll => "Mid-Roll", FillerKind.PostRoll => "Post-Roll", FillerKind.Fallback => "Fallback", FillerKind.Tail => "Tail", _ => "None" } )
@code { private CancellationTokenSource _cts; private MudTable _fillerPresetsTable; private int _fillerPresetsRowsPerPage = 10; public void Dispose() { _cts?.Cancel(); _cts?.Dispose(); } protected override async Task OnParametersSetAsync() { _cts?.Cancel(); _cts?.Dispose(); _cts = new CancellationTokenSource(); var token = _cts.Token; try { _fillerPresetsRowsPerPage = await Mediator.Send(new GetConfigElementByKey(ConfigElementKey.FillerPresetsPageSize), token) .Map(maybeRows => maybeRows.Match(ce => int.TryParse(ce.Value, out int rows) ? rows : 10, () => 10)); } catch (OperationCanceledException) { // do nothing } } private async Task DeleteFillerPreset(FillerPresetViewModel fillerPreset) { var parameters = new DialogParameters { { "EntityType", "filler preset" }, { "EntityName", fillerPreset.Name } }; var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; IDialogReference dialog = await Dialog.ShowAsync("Delete Filler Preset", parameters, options); DialogResult result = await dialog.Result; if (result is { Canceled: false }) { await Mediator.Send(new DeleteFillerPreset(fillerPreset.Id), _cts.Token); if (_fillerPresetsTable != null) { await _fillerPresetsTable.ReloadServerData(); } } } private async Task> ServerReloadFillerPresets(TableState state, CancellationToken cancellationToken) { await Mediator.Send(new SaveConfigElementByKey(ConfigElementKey.FillerPresetsPageSize, state.PageSize.ToString()), cancellationToken); PagedFillerPresetsViewModel data = await Mediator.Send(new GetPagedFillerPresets(state.Page, state.PageSize), cancellationToken); return new TableData { TotalItems = data.TotalCount, Items = data.Page }; } }