@page "/settings" @using ErsatzTV.Application.FFmpegProfiles @using ErsatzTV.Application.FFmpegProfiles.Commands @using ErsatzTV.Application.FFmpegProfiles.Queries @using ErsatzTV.Application.HDHR.Commands @using ErsatzTV.Application.HDHR.Queries @using ErsatzTV.Application.MediaItems.Queries @using System.Globalization @using Unit = LanguageExt.Unit @inject IMediator Mediator @inject ISnackbar Snackbar @inject ILogger Logger FFmpeg Settings @foreach (FFmpegProfileViewModel profile in _ffmpegProfiles) { @profile.Name } @foreach (CultureInfo culture in _availableCultures) { @culture.EnglishName } Save Settings HDHomeRun Settings Save Settings @code { private bool _success; private bool _hdhrSuccess; private List _ffmpegProfiles; private FFmpegSettingsViewModel _ffmpegSettings; private List _availableCultures; private int _tunerCount; protected override async Task OnParametersSetAsync() { await LoadFFmpegProfilesAsync(); _ffmpegSettings = await Mediator.Send(new GetFFmpegSettings()); _success = File.Exists(_ffmpegSettings.FFmpegPath) && File.Exists(_ffmpegSettings.FFprobePath); _availableCultures = await Mediator.Send(new GetAllLanguageCodes()); _tunerCount = await Mediator.Send(new GetHDHRTunerCount()); _hdhrSuccess = string.IsNullOrWhiteSpace(ValidateTunerCount(_tunerCount)); } private static string ValidatePathExists(string path) => !File.Exists(path) ? "Path does not exist" : null; private static string ValidateTunerCount(int tunerCount) => tunerCount <= 0 ? "Tuner count must be greater than zero" : null; private async Task LoadFFmpegProfilesAsync() => _ffmpegProfiles = await Mediator.Send(new GetAllFFmpegProfiles()); private async Task SaveFFmpegSettings() { Either result = await Mediator.Send(new UpdateFFmpegSettings(_ffmpegSettings)); result.Match( Left: error => { Snackbar.Add(error.Value, Severity.Error); Logger.LogError("Unexpected error saving FFmpeg settings: {Error}", error.Value); }, Right: _ => Snackbar.Add("Successfully saved FFmpeg settings", Severity.Success)); } private async Task SaveHDHRSettings() { Either result = await Mediator.Send(new UpdateHDHRTunerCount(_tunerCount)); result.Match( Left: error => { Snackbar.Add(error.Value, Severity.Error); Logger.LogError("Unexpected error saving HDHomeRun settings: {Error}", error.Value); }, Right: _ => Snackbar.Add("Successfully saved HDHomeRun settings", Severity.Success)); } }