diff --git a/AyCode.Services.Server/SignalRs/AcSignalRDataSource.cs b/AyCode.Services.Server/SignalRs/AcSignalRDataSource.cs index 03235a8..da56bf3 100644 --- a/AyCode.Services.Server/SignalRs/AcSignalRDataSource.cs +++ b/AyCode.Services.Server/SignalRs/AcSignalRDataSource.cs @@ -16,7 +16,7 @@ namespace AyCode.Services.Server.SignalRs //public class TrackingItemInt(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) : TrackingItem(trackingState, currentValue, originalValue) // where TDataItem : class, IId {} - public abstract class TrackingItem(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId where TId : struct + public class TrackingItem(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId 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? 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? trackingItem) { @@ -100,7 +100,7 @@ namespace AyCode.Services.Server.SignalRs originalValue = TrackingItemHelpers.JsonClone(originalValue); //trackingItem = new TrackingItem(trackingState, newValue, originalValue); - trackingItem = (TrackingItem)Activator.CreateInstance(typeof(TrackingItem), trackingState, newValue, originalValue)!; + trackingItem = new TrackingItem(trackingState, newValue, originalValue); _trackingItems.Add(trackingItem); return trackingItem; @@ -168,7 +168,7 @@ namespace AyCode.Services.Server.SignalRs private readonly EqualityComparer _equalityComparer = EqualityComparer.Default; protected TIList InnerList = Activator.CreateInstance();// []; //TODO: Dictionary??? - J. - protected readonly ChangeTracking TrackingItems = Activator.CreateInstance>(); + protected readonly ChangeTracking 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 {