@page "/watermarks" @using ErsatzTV.Application.Watermarks @implements IDisposable @inject IDialogService _dialog @inject IMediator _mediator @inject ILogger _logger @inject ISnackbar _snackbar @inject NavigationManager _navigationManager Watermarks Name Image Mode Location @context.Name @if (!string.IsNullOrWhiteSpace(context.Image)) { } else if (context.ImageSource == ChannelWatermarkImageSource.ChannelLogo) { [channel logo] } @context.Mode @context.Location
Add Watermark
@code { private readonly CancellationTokenSource _cts = new(); private List _watermarks; public void Dispose() { _cts.Cancel(); _cts.Dispose(); } protected override async Task OnParametersSetAsync() => await LoadWatermarksAsync(); private async Task LoadWatermarksAsync() => _watermarks = await _mediator.Send(new GetAllWatermarks(), _cts.Token); private async Task DeleteWatermarkAsync(WatermarkViewModel watermark) { var parameters = new DialogParameters { { "EntityType", "watermark" }, { "EntityName", watermark.Name } }; var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; IDialogReference dialog = _dialog.Show("Delete Watermark", parameters, options); DialogResult result = await dialog.Result; if (!result.Cancelled) { await _mediator.Send(new DeleteWatermark(watermark.Id), _cts.Token); await LoadWatermarksAsync(); } } private async Task CopyWatermarkAsync(WatermarkViewModel watermark) { var parameters = new DialogParameters { { "WatermarkId", watermark.Id } }; var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; IDialogReference dialog = _dialog.Show("Copy Watermark", parameters, options); DialogResult dialogResult = await dialog.Result; if (!dialogResult.Cancelled && dialogResult.Data is WatermarkViewModel data) { _navigationManager.NavigateTo($"/watermarks/{data.Id}"); } } }