@page "/watermarks"
@using ErsatzTV.Application.Watermarks
@implements IDisposable
@inject IDialogService Dialog
@inject IMediator Mediator
@inject NavigationManager NavigationManager
Add Watermark
Watermarks
Name
Image
Mode
Location
@context.Name
@if (!string.IsNullOrWhiteSpace(context.Image?.Path))
{
}
else if (context.ImageSource == ChannelWatermarkImageSource.ChannelLogo)
{
[channel logo]
}
@context.Mode
@context.Location
@code {
private CancellationTokenSource _cts;
private List _watermarks = [];
public void Dispose()
{
_cts?.Cancel();
_cts?.Dispose();
}
protected override async Task OnParametersSetAsync()
{
_cts?.Cancel();
_cts?.Dispose();
_cts = new CancellationTokenSource();
var token = _cts.Token;
try
{
_watermarks = await Mediator.Send(new GetAllWatermarks(), token);
}
catch (OperationCanceledException)
{
// do nothing
}
}
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 = await Dialog.ShowAsync("Delete Watermark", parameters, options);
DialogResult result = await dialog.Result;
if (result is { Canceled: false })
{
await Mediator.Send(new DeleteWatermark(watermark.Id), _cts.Token);
_watermarks = await Mediator.Send(new GetAllWatermarks(), _cts.Token);
}
}
private async Task CopyWatermarkAsync(WatermarkViewModel watermark)
{
var parameters = new DialogParameters { { "WatermarkId", watermark.Id } };
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
IDialogReference dialog = await Dialog.ShowAsync("Copy Watermark", parameters, options);
DialogResult dialogResult = await dialog.Result;
if (dialogResult is { Canceled: false, Data: WatermarkViewModel data })
{
NavigationManager.NavigateTo($"/watermarks/{data.Id}");
}
}
}