@page "/settings/xmltv" @using ErsatzTV.Application.Configuration @implements IDisposable @inject IMediator Mediator @inject ISnackbar Snackbar @inject ILogger Logger Save Settings
XMLTV
Days To Build
XMLTV Time Zone
Local UTC
XMLTV Block Behavior
Split Time Evenly Use Actual Times
@code { private CancellationTokenSource _cts; private XmltvSettingsViewModel _xmltvSettings = new(); public void Dispose() { _cts?.Cancel(); _cts?.Dispose(); } protected override async Task OnParametersSetAsync() { _cts?.Cancel(); _cts?.Dispose(); _cts = new CancellationTokenSource(); var token = _cts.Token; try { _xmltvSettings = await Mediator.Send(new GetXmltvSettings(), token); } catch (OperationCanceledException) { // do nothing } } private static string ValidateXmltvDaysToBuild(int daysToBuild) => daysToBuild <= 0 ? "XMLTV days to build must be greater than zero" : null; private async Task SaveXmltvSettings() { Either result = await Mediator.Send(new UpdateXmltvSettings(_xmltvSettings), _cts.Token); result.Match( Left: error => { Snackbar.Add(error.Value, Severity.Error); Logger.LogError("Unexpected error saving xmltv settings: {Error}", error.Value); }, Right: _ => Snackbar.Add("Successfully saved xmltv settings", Severity.Success)); } }