This commit is contained in:
Loretta 2025-11-12 17:19:45 +01:00
parent bb3cc3c37c
commit 545b543abe
1 changed files with 11 additions and 6 deletions

View File

@ -16,7 +16,7 @@ namespace AyCode.Services.Server.SignalRs
//public class TrackingItemInt<TDataItem>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) : TrackingItem<TDataItem, int>(trackingState, currentValue, originalValue)
// where TDataItem : class, IId<int> {}
public abstract class TrackingItem<TDataItem, TId>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId<TId> where TId : struct
public class TrackingItem<TDataItem, TId>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId<TId> where TId : struct
{
public TrackingState TrackingState { get; internal set; } = trackingState;
public TDataItem CurrentValue { get; internal set; } = currentValue;
@ -68,7 +68,7 @@ namespace AyCode.Services.Server.SignalRs
//protected abstract int FindIndex(TDataItem newValue);
//public abstract bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem);
private bool HasIdValue(TDataItem dataItem) => _equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
private bool HasIdValue(TDataItem dataItem) => !_equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
public int FindIndex(TDataItem newValue) => _trackingItems.FindIndex(x => _equalityComparer.Equals(x.CurrentValue.Id, newValue.Id));
public bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem)
{
@ -100,7 +100,7 @@ namespace AyCode.Services.Server.SignalRs
originalValue = TrackingItemHelpers.JsonClone(originalValue);
//trackingItem = new TrackingItem<TDataItem>(trackingState, newValue, originalValue);
trackingItem = (TrackingItem<TDataItem, TId>)Activator.CreateInstance(typeof(TrackingItem<TDataItem, TId>), trackingState, newValue, originalValue)!;
trackingItem = new TrackingItem<TDataItem, TId>(trackingState, newValue, originalValue);
_trackingItems.Add(trackingItem);
return trackingItem;
@ -168,7 +168,7 @@ namespace AyCode.Services.Server.SignalRs
private readonly EqualityComparer<TId> _equalityComparer = EqualityComparer<TId>.Default;
protected TIList InnerList = Activator.CreateInstance<TIList>();// []; //TODO: Dictionary??? - J.
protected readonly ChangeTracking<TDataItem, TId> TrackingItems = Activator.CreateInstance<ChangeTracking<TDataItem, TId>>();
protected readonly ChangeTracking<TDataItem, TId> TrackingItems = new();
public object[]? ContextIds;
public string? FilterText { get; set; }
@ -184,7 +184,7 @@ namespace AyCode.Services.Server.SignalRs
//protected abstract int FindIndexInnerList(TId id);
//protected abstract TDataItem? FirstOrDefaultInnerList(TId id);
protected bool HasIdValue(TDataItem dataItem) => _equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
protected bool HasIdValue(TDataItem dataItem) => !_equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
protected bool IdEquals(TId id1, TId id2) => _equalityComparer.Equals(id1, id2);
protected int FindIndexInnerList(TId id) => InnerList.FindIndex(x => IdEquals(x.Id, id));
protected TDataItem? FirstOrDefaultInnerList(TId id) => InnerList.FirstOrDefault(x => IdEquals(x.Id, id));
@ -290,7 +290,12 @@ namespace AyCode.Services.Server.SignalRs
}
else if (clearChangeTracking) TrackingItems.Clear();
if (refreshDataFromDbAsync) LoadDataSourceAsync(false).Forget();
//TODO: Átgondolni, OnDataSourceLoaded meghívódik mielőtt az adatok betöltődnének a .Forget() miatt! - J.
if (refreshDataFromDbAsync)
{
LoadDataSourceAsync(false).Forget();
return;
}
}
finally
{