Files
HawkeyeVision/VisionBuilder.UI.Blazor/Components/ErrorPreview.razor.cs
EugeneTes 83597b8763 web UI
2026-03-19 09:03:41 +01:00

60 lines
1.5 KiB
C#

using System.Collections.ObjectModel;
using System.Collections.Specialized;
using Microsoft.AspNetCore.Components;
using VisionBuilder.UI.Common.ViewModel;
using VisionBuilder.UI.Common.ViewModel.Classes;
namespace VisionBuilder.UI.Blazor.Components;
public partial class ErrorPreview : ComponentBase, IDisposable
{
[Parameter] public ErrorsVM? ViewModel { get; set; }
private List<ErrorData> _errors = new();
private ErrorsVM? _subscribedVm;
protected override void OnParametersSet()
{
if (_subscribedVm != ViewModel)
{
Unsubscribe();
Subscribe();
}
}
private void Subscribe()
{
_subscribedVm = ViewModel;
if (ViewModel != null)
{
ViewModel.Errors.CollectionChanged += OnCollectionChanged;
_errors = new List<ErrorData>(ViewModel.Errors);
}
}
private void Unsubscribe()
{
if (_subscribedVm != null)
_subscribedVm.Errors.CollectionChanged -= OnCollectionChanged;
_subscribedVm = null;
}
private async void OnCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
{
if (ViewModel != null)
_errors = new List<ErrorData>(ViewModel.Errors);
await InvokeAsync(StateHasChanged);
}
private async Task OnErrorClicked(ErrorData errorData)
{
if (ViewModel != null)
await ViewModel.ShowImage(errorData);
}
public void Dispose()
{
Unsubscribe();
}
}