From 94c93687c344c820f79a507e0af37b3f22380afd Mon Sep 17 00:00:00 2001 From: Drombeys Date: Wed, 1 May 2024 10:52:24 +0300 Subject: [PATCH] Add launcher settings migrator --- .../Manager/UserManager.cs | 14 ++++++++++++++ .../Storage/DirectoryStorage.cs | 3 ++- .../Storage/PathStorage.cs | 7 ++++++- src/ImeSense.Launchers.Belarus/App.axaml.cs | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/ImeSense.Launchers.Belarus.Core/Manager/UserManager.cs b/src/ImeSense.Launchers.Belarus.Core/Manager/UserManager.cs index 7540c51..157cc05 100644 --- a/src/ImeSense.Launchers.Belarus.Core/Manager/UserManager.cs +++ b/src/ImeSense.Launchers.Belarus.Core/Manager/UserManager.cs @@ -21,6 +21,20 @@ public class UserManager(ILogger? logger, public UserSettings? UserSettings { get; private set; } + public static void MigratorSettings() + { + // Проверяем существование текущих настроек + if (File.Exists(PathStorage.LauncherSetting)) { + return; + } + + // Проверяем настройки версии 2.0 / 2.1 + if (File.Exists(PathStorage.V2LauncherSetting)) { + File.Move(PathStorage.V2LauncherSetting, PathStorage.LauncherSetting); + return; + } + } + public async Task LoadAsync(CancellationToken cancellationToken = default) { if (!File.Exists(PathStorage.LauncherSetting)) { diff --git a/src/ImeSense.Launchers.Belarus.Core/Storage/DirectoryStorage.cs b/src/ImeSense.Launchers.Belarus.Core/Storage/DirectoryStorage.cs index f79f1e8..c106224 100644 --- a/src/ImeSense.Launchers.Belarus.Core/Storage/DirectoryStorage.cs +++ b/src/ImeSense.Launchers.Belarus.Core/Storage/DirectoryStorage.cs @@ -6,7 +6,8 @@ public static class DirectoryStorage public static string Binaries => Path.Combine(Base, "binaries"); public static string Resources => Path.Combine(Base, "resources"); public static string Patches => Path.Combine(Base, "patches"); - public static string AppData => Path.Combine(Base, "_user_"); + public static string LegacyUserData => Path.Combine(Base, "_user_"); + public static string AppData => Path.Combine(Base, "appdata"); public static string LaucherData => Path.Combine(AppData, "laucher"); public static string LauncherLogs => Path.Combine(LaucherData, "logs"); public static string LauncherCache => Path.Combine(LaucherData, "cache"); diff --git a/src/ImeSense.Launchers.Belarus.Core/Storage/PathStorage.cs b/src/ImeSense.Launchers.Belarus.Core/Storage/PathStorage.cs index dcbefc8..12d9149 100644 --- a/src/ImeSense.Launchers.Belarus.Core/Storage/PathStorage.cs +++ b/src/ImeSense.Launchers.Belarus.Core/Storage/PathStorage.cs @@ -2,7 +2,12 @@ namespace ImeSense.Launchers.Belarus.Core.Storage; public static class PathStorage { - public static string LauncherSetting => Path.Combine(DirectoryStorage.AppData, FileNameStorage.LauncherSetting); + // Актуально для версии 1.0 / 1.1 + public static string LegacyLauncherSettings => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), FileNameStorage.LauncherSetting); + // Актуально для версии 2.0 / 2.1 + public static string V2LauncherSetting => Path.Combine(DirectoryStorage.LegacyUserData, FileNameStorage.LauncherSetting); + // Актуально для версии 3.0 и новее + public static string LauncherSetting => Path.Combine(DirectoryStorage.LaucherData, FileNameStorage.LauncherSetting); public static string CurrentRelease => Path.Combine(DirectoryStorage.LauncherCache, FileNameStorage.CurrentRelease); public static string GameUser => Path.Combine(DirectoryStorage.AppData, FileNameStorage.GameSetting); public static string NewsCache => Path.Combine(DirectoryStorage.LauncherCache, FileNameStorage.NewsContent); diff --git a/src/ImeSense.Launchers.Belarus/App.axaml.cs b/src/ImeSense.Launchers.Belarus/App.axaml.cs index 079d190..066a92f 100644 --- a/src/ImeSense.Launchers.Belarus/App.axaml.cs +++ b/src/ImeSense.Launchers.Belarus/App.axaml.cs @@ -66,6 +66,7 @@ public override async void OnFrameworkInitializationCompleted() if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { var initializerManager = _serviceProvider.GetRequiredService(); var userManager = _serviceProvider.GetRequiredService(); + //UserManager.MigratorSettings(); var splashScreenManager = _serviceProvider.GetRequiredService(); splashScreenManager.MaxProgress = 4;