big refactoring. get rid of static properties and coupled architecture. prepare system for integration tests

This commit is contained in:
Oleksandr Bezdieniezhnykh
2025-11-17 13:14:05 +02:00
parent 22529c26ec
commit e7ea5a8ded
38 changed files with 808 additions and 157 deletions
+7 -3
View File
@@ -7,10 +7,12 @@ using Azaion.Common.Extensions;
namespace Azaion.Common.DTO;
public class AnnotationThumbnail(Annotation annotation, bool isValidator) : INotifyPropertyChanged
public class AnnotationThumbnail(Annotation annotation, bool isValidator, string imagePath, string thumbPath) : INotifyPropertyChanged
{
public Annotation Annotation { get; set; } = annotation;
public bool IsValidator { get; set; } = isValidator;
private readonly string _imagePath = imagePath;
private readonly string _thumbPath = thumbPath;
private BitmapImage? _thumbnail;
public BitmapImage? Thumbnail
@@ -18,7 +20,9 @@ public class AnnotationThumbnail(Annotation annotation, bool isValidator) : INot
get
{
if (_thumbnail == null)
Task.Run(async () => Thumbnail = await Annotation.ThumbPath.OpenImage());
{
Task.Run(async () => Thumbnail = await _thumbPath.OpenImage());
}
return _thumbnail;
}
private set
@@ -28,7 +32,7 @@ public class AnnotationThumbnail(Annotation annotation, bool isValidator) : INot
}
}
public string ImageName => Path.GetFileName(Annotation.ImagePath);
public string ImageName => Path.GetFileName(_imagePath);
public string CreatedDate => $"{Annotation.CreatedDate:dd.MM.yyyy HH:mm:ss}";
public string CreatedEmail => Annotation.CreatedEmail;
public bool IsSeed => IsValidator &&
+12 -16
View File
@@ -1,6 +1,7 @@
using System.IO;
using System.Text;
using Azaion.Common.Extensions;
using Azaion.Common.Services;
using Newtonsoft.Json;
namespace Azaion.Common.DTO.Config;
@@ -40,7 +41,16 @@ public interface IConfigUpdater
public class ConfigUpdater : IConfigUpdater
{
private static readonly Guid SaveConfigTaskId = Guid.NewGuid();
private readonly IConfigurationStore _configStore;
public ConfigUpdater(IConfigurationStore configStore)
{
_configStore = configStore;
}
public ConfigUpdater() : this(new FileConfigurationStore(Constants.CONFIG_PATH, new PhysicalFileSystem()))
{
}
public void CheckConfig()
{
@@ -55,20 +65,6 @@ public class ConfigUpdater : IConfigUpdater
public void Save(AppConfig config)
{
ThrottleExt.Throttle(async () =>
{
var publicConfig = new
{
config.LoaderClientConfig,
config.InferenceClientConfig,
config.GpsDeniedClientConfig,
config.DirectoriesConfig,
config.UIConfig,
config.CameraConfig
};
await File.WriteAllTextAsync(Constants.CONFIG_PATH, JsonConvert.SerializeObject(publicConfig, Formatting.Indented), Encoding.UTF8);
}, SaveConfigTaskId, TimeSpan.FromSeconds(5));
_ = _configStore.SaveAsync(config);
}
}