Browse Source

fix ui crashes (#1382)

* fix ffmpeg editor crash

* fix watermark editor

* fix multi collection editor

* fix filler preset editor crash
pull/1383/head
Jason Dove 2 years ago committed by GitHub
parent
commit
b84bb6b437
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 54
      ErsatzTV/Pages/FFmpegEditor.razor
  2. 15
      ErsatzTV/Pages/FillerPresetEditor.razor
  3. 10
      ErsatzTV/Pages/MultiCollectionEditor.razor
  4. 3
      ErsatzTV/Pages/WatermarkEditor.razor

54
ErsatzTV/Pages/FFmpegEditor.razor

@ -11,8 +11,11 @@ @@ -11,8 +11,11 @@
@inject ISnackbar _snackbar
@inject IMediator _mediator
@inject IMemoryCache _memoryCache
@inject PersistentComponentState ApplicationState
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pt-8">
@if (_editContext is not null)
{
<EditForm EditContext="_editContext" OnSubmit="@HandleSubmitAsync">
<FluentValidationValidator/>
<MudCard>
@ -139,6 +142,7 @@ @@ -139,6 +142,7 @@
</MudCardActions>
</MudCard>
</EditForm>
}
</MudContainer>
@code {
@ -151,25 +155,55 @@ @@ -151,25 +155,55 @@
private EditContext _editContext;
private ValidationMessageStore _messageStore;
private List<ResolutionViewModel> _resolutions;
private List<string> _vaapiDevices;
private List<ResolutionViewModel> _resolutions = new();
private List<string> _vaapiDevices = new();
private PersistingComponentStateSubscription _persistingSubscription;
public void Dispose()
{
_persistingSubscription.Dispose();
_cts.Cancel();
_cts.Dispose();
}
protected override Task OnInitializedAsync()
{
_persistingSubscription = ApplicationState.RegisterOnPersisting(PersistData);
return base.OnInitializedAsync();
}
protected override async Task OnParametersSetAsync()
{
if (!ApplicationState.TryTakeFromJson("_resolutions", out List<ResolutionViewModel> restoredResolutions))
{
_resolutions = await _mediator.Send(new GetAllResolutions(), _cts.Token);
}
else
{
_resolutions = restoredResolutions;
}
if (IsEdit)
{
Option<FFmpegProfileViewModel> profile = await _mediator.Send(new GetFFmpegProfileById(Id), _cts.Token);
profile.Match(
ffmpegProfileViewModel => _model = new FFmpegProfileEditViewModel(ffmpegProfileViewModel),
() => _navigationManager.NavigateTo("404"));
if (!ApplicationState.TryTakeFromJson("_model", out FFmpegProfileEditViewModel restoredProfile))
{
Option<FFmpegProfileViewModel> maybeProfile = await _mediator.Send(new GetFFmpegProfileById(Id), _cts.Token);
foreach (FFmpegProfileViewModel profile in maybeProfile)
{
_model = new FFmpegProfileEditViewModel(profile);
}
if (maybeProfile.IsNone)
{
_navigationManager.NavigateTo("404");
}
}
else
{
_model = restoredProfile;
}
}
else
{
@ -187,6 +221,14 @@ @@ -187,6 +221,14 @@
_vaapiDevices = vaapiDevices.OrderBy(s => s).ToList();
}
private Task PersistData()
{
ApplicationState.PersistAsJson("_model", _model);
ApplicationState.PersistAsJson("_resolutions", _resolutions);
return Task.CompletedTask;
}
private bool IsEdit => Id != 0;
private async Task HandleSubmitAsync()

15
ErsatzTV/Pages/FillerPresetEditor.razor

@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
<div style="max-width: 400px;">
<MudText Typo="Typo.h4" Class="mb-4">@(IsEdit ? "Edit Filler Preset" : "Add Filler Preset")</MudText>
@if (_editContext is not null)
{
<EditForm EditContext="_editContext" OnSubmit="@HandleSubmitAsync">
<FluentValidationValidator/>
<MudCard>
@ -129,6 +131,7 @@ @@ -129,6 +131,7 @@
</MudCardActions>
</MudCard>
</EditForm>
}
</div>
</MudContainer>
@ -142,12 +145,12 @@ @@ -142,12 +145,12 @@
private EditContext _editContext;
private ValidationMessageStore _messageStore;
private List<MediaCollectionViewModel> _mediaCollections;
private List<MultiCollectionViewModel> _multiCollections;
private List<SmartCollectionViewModel> _smartCollections;
private List<NamedMediaItemViewModel> _televisionShows;
private List<NamedMediaItemViewModel> _televisionSeasons;
private List<NamedMediaItemViewModel> _artists;
private List<MediaCollectionViewModel> _mediaCollections = new();
private List<MultiCollectionViewModel> _multiCollections = new();
private List<SmartCollectionViewModel> _smartCollections = new();
private List<NamedMediaItemViewModel> _televisionShows = new();
private List<NamedMediaItemViewModel> _televisionSeasons = new();
private List<NamedMediaItemViewModel> _artists = new();
public void Dispose()
{

10
ErsatzTV/Pages/MultiCollectionEditor.razor

@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
<div style="max-width: 400px;">
<MudText Typo="Typo.h4" Class="mb-4">@(IsEdit ? "Edit Multi Collection" : "Add Multi Collection")</MudText>
@if (_editContext is not null)
{
<EditForm EditContext="_editContext" OnSubmit="@HandleSubmitAsync">
<FluentValidationValidator/>
<MudCard>
@ -58,6 +60,7 @@ @@ -58,6 +60,7 @@
</MudCardActions>
</MudCard>
</EditForm>
}
</div>
<MudTable Hover="true" Items="_model.Items.OrderBy(i => i.Collection.Name, StringComparer.CurrentCultureIgnoreCase)" Dense="true" Class="mt-6">
@ -108,11 +111,12 @@ @@ -108,11 +111,12 @@
[Parameter]
public int Id { get; set; }
private readonly MultiCollectionEditViewModel _model = new();
private readonly MultiCollectionEditViewModel _model =
new() { Items = new List<MultiCollectionItemEditViewModel>() };
private EditContext _editContext;
private ValidationMessageStore _messageStore;
private List<MediaCollectionViewModel> _collections;
private List<SmartCollectionViewModel> _smartCollections;
private List<MediaCollectionViewModel> _collections = new();
private List<SmartCollectionViewModel> _smartCollections = new();
private MediaCollectionViewModel _selectedCollection;
private SmartCollectionViewModel _selectedSmartCollection;
private MudSelect<MediaCollectionViewModel> _collectionSelect;

3
ErsatzTV/Pages/WatermarkEditor.razor

@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
<MudContainer MaxWidth="MaxWidth.ExtraLarge" Class="pt-8">
<div style="max-width: 400px;">
@if (_editContext is not null)
{
<EditForm EditContext="_editContext" OnSubmit="@HandleSubmitAsync">
<FluentValidationValidator/>
<MudCard>
@ -146,6 +148,7 @@ @@ -146,6 +148,7 @@
</MudCardActions>
</MudCard>
</EditForm>
}
</div>
</MudContainer>

Loading…
Cancel
Save