Refactor using c# 12 features

This commit is contained in:
Tyrrrz
2023-12-10 22:32:45 +02:00
parent 174b92cbb0
commit 619fe9ccf7
30 changed files with 155 additions and 290 deletions

View File

@@ -8,7 +8,8 @@ using Microsoft.Win32;
namespace DiscordChatExporter.Gui.Services;
public partial class SettingsService : SettingsBase
public partial class SettingsService()
: SettingsBase(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Settings.dat"))
{
public bool IsUkraineSupportMessageEnabled { get; set; } = true;
@@ -44,9 +45,6 @@ public partial class SettingsService : SettingsBase
public string? LastAssetsDirPath { get; set; }
public SettingsService()
: base(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Settings.dat")) { }
public override void Save()
{
// Clear the token if it's not supposed to be persisted

View File

@@ -6,27 +6,20 @@ using Onova.Services;
namespace DiscordChatExporter.Gui.Services;
public class UpdateService : IDisposable
public class UpdateService(SettingsService settingsService) : IDisposable
{
private readonly IUpdateManager _updateManager = new UpdateManager(
new GithubPackageResolver("Tyrrrz", "DiscordChatExporter", "DiscordChatExporter.zip"),
new ZipPackageExtractor()
);
private readonly SettingsService _settingsService;
private Version? _updateVersion;
private bool _updatePrepared;
private bool _updaterLaunched;
public UpdateService(SettingsService settingsService)
{
_settingsService = settingsService;
}
public async ValueTask<Version?> CheckForUpdatesAsync()
{
if (!_settingsService.IsAutoUpdateEnabled)
if (!settingsService.IsAutoUpdateEnabled)
return null;
var check = await _updateManager.CheckForUpdatesAsync();
@@ -35,7 +28,7 @@ public class UpdateService : IDisposable
public async ValueTask PrepareUpdateAsync(Version version)
{
if (!_settingsService.IsAutoUpdateEnabled)
if (!settingsService.IsAutoUpdateEnabled)
return;
try
@@ -55,7 +48,7 @@ public class UpdateService : IDisposable
public void FinalizeUpdate(bool needRestart)
{
if (!_settingsService.IsAutoUpdateEnabled)
if (!settingsService.IsAutoUpdateEnabled)
return;
if (_updateVersion is null || !_updatePrepared || _updaterLaunched)

View File

@@ -8,26 +8,24 @@ using DiscordChatExporter.Gui.ViewModels.Framework;
namespace DiscordChatExporter.Gui.ViewModels.Dialogs;
public class SettingsViewModel : DialogScreen
public class SettingsViewModel(SettingsService settingsService) : DialogScreen
{
private readonly SettingsService _settingsService;
public bool IsAutoUpdateEnabled
{
get => _settingsService.IsAutoUpdateEnabled;
set => _settingsService.IsAutoUpdateEnabled = value;
get => settingsService.IsAutoUpdateEnabled;
set => settingsService.IsAutoUpdateEnabled = value;
}
public bool IsDarkModeEnabled
{
get => _settingsService.IsDarkModeEnabled;
set => _settingsService.IsDarkModeEnabled = value;
get => settingsService.IsDarkModeEnabled;
set => settingsService.IsDarkModeEnabled = value;
}
public bool IsTokenPersisted
{
get => _settingsService.IsTokenPersisted;
set => _settingsService.IsTokenPersisted = value;
get => settingsService.IsTokenPersisted;
set => settingsService.IsTokenPersisted = value;
}
public IReadOnlyList<ThreadInclusionMode> AvailableThreadInclusions { get; } =
@@ -35,8 +33,8 @@ public class SettingsViewModel : DialogScreen
public ThreadInclusionMode ThreadInclusionMode
{
get => _settingsService.ThreadInclusionMode;
set => _settingsService.ThreadInclusionMode = value;
get => settingsService.ThreadInclusionMode;
set => settingsService.ThreadInclusionMode = value;
}
public IReadOnlyList<string> AvailableLocales { get; } = new[]
@@ -77,21 +75,19 @@ public class SettingsViewModel : DialogScreen
public string Locale
{
get => _settingsService.Locale;
set => _settingsService.Locale = value;
get => settingsService.Locale;
set => settingsService.Locale = value;
}
public bool IsUtcNormalizationEnabled
{
get => _settingsService.IsUtcNormalizationEnabled;
set => _settingsService.IsUtcNormalizationEnabled = value;
get => settingsService.IsUtcNormalizationEnabled;
set => settingsService.IsUtcNormalizationEnabled = value;
}
public int ParallelLimit
{
get => _settingsService.ParallelLimit;
set => _settingsService.ParallelLimit = Math.Clamp(value, 1, 10);
get => settingsService.ParallelLimit;
set => settingsService.ParallelLimit = Math.Clamp(value, 1, 10);
}
public SettingsViewModel(SettingsService settingsService) => _settingsService = settingsService;
}

View File

@@ -8,19 +8,13 @@ using Stylet;
namespace DiscordChatExporter.Gui.ViewModels.Framework;
public class DialogManager : IDisposable
public class DialogManager(IViewManager viewManager) : IDisposable
{
private readonly IViewManager _viewManager;
private readonly SemaphoreSlim _dialogLock = new(1, 1);
public DialogManager(IViewManager viewManager)
{
_viewManager = viewManager;
}
public async ValueTask<T?> ShowDialogAsync<T>(DialogScreen<T> dialogScreen)
{
var view = _viewManager.CreateAndBindViewForModelIfNecessary(dialogScreen);
var view = viewManager.CreateAndBindViewForModelIfNecessary(dialogScreen);
void OnDialogOpened(object? openSender, DialogOpenedEventArgs openArgs)
{