diff --git a/Pal.Client/Configuration/ConfigurationData.cs b/Pal.Client/Configuration/ConfigurationData.cs index cdb341c..9fc3536 100644 --- a/Pal.Client/Configuration/ConfigurationData.cs +++ b/Pal.Client/Configuration/ConfigurationData.cs @@ -15,6 +15,8 @@ namespace Pal.Client.Configuration [Obsolete("for V1 import")] internal static readonly byte[] FixedV1Entropy = { 0x22, 0x4b, 0xe7, 0x21, 0x44, 0x83, 0x69, 0x55, 0x80, 0x38 }; + public const string ConfigFileName = "palace-pal.config.json"; + private static bool? _supportsDpapi = null; public static bool SupportsDpapi { diff --git a/Pal.Client/Configuration/ConfigurationManager.cs b/Pal.Client/Configuration/ConfigurationManager.cs index f8c584f..4b75aa8 100644 --- a/Pal.Client/Configuration/ConfigurationManager.cs +++ b/Pal.Client/Configuration/ConfigurationManager.cs @@ -23,17 +23,25 @@ namespace Pal.Client.Configuration public event EventHandler? Saved; - public ConfigurationManager(ILogger logger, DalamudPluginInterface pluginInterface, IServiceProvider serviceProvider) + public ConfigurationManager(ILogger logger, DalamudPluginInterface pluginInterface, + IServiceProvider serviceProvider) { _logger = logger; _pluginInterface = pluginInterface; _serviceProvider = serviceProvider; } - private string ConfigPath => Path.Join(_pluginInterface.GetPluginConfigDirectory(), "palace-pal.config.json"); + private string ConfigPath => + Path.Join(_pluginInterface.GetPluginConfigDirectory(), ConfigurationData.ConfigFileName); public IPalacePalConfiguration Load() { + if (!File.Exists(ConfigPath)) + { + _logger.LogInformation("No config file exists, creating one"); + Save(new ConfigurationV7(), false); + } + return JsonSerializer.Deserialize(File.ReadAllText(ConfigPath, Encoding.UTF8)) ?? new ConfigurationV7(); } @@ -61,7 +69,8 @@ namespace Pal.Client.Configuration ConfigurationV1 configurationV1 = NJson.JsonConvert.DeserializeObject( File.ReadAllText(_pluginInterface.ConfigFile.FullName)) ?? new ConfigurationV1(); - configurationV1.Migrate(_pluginInterface, _serviceProvider.GetRequiredService>()); + configurationV1.Migrate(_pluginInterface, + _serviceProvider.GetRequiredService>()); configurationV1.Save(_pluginInterface); var v7 = MigrateToV7(configurationV1); diff --git a/Pal.Client/DependencyContextInitializer.cs b/Pal.Client/DependencyContextInitializer.cs index 0723736..5af93c4 100644 --- a/Pal.Client/DependencyContextInitializer.cs +++ b/Pal.Client/DependencyContextInitializer.cs @@ -43,20 +43,21 @@ namespace Pal.Client _logger.LogInformation("Starting async init"); - await RemoveOldBackups(); - await CreateBackups(); + await CreateBackup(); cancellationToken.ThrowIfCancellationRequested(); await RunMigrations(cancellationToken); cancellationToken.ThrowIfCancellationRequested(); - await RunCleanup(); - cancellationToken.ThrowIfCancellationRequested(); - // v1 migration: config migration for import history, json migration for markers _serviceProvider.GetRequiredService().Migrate(); await _serviceProvider.GetRequiredService().MigrateAsync(cancellationToken); + cancellationToken.ThrowIfCancellationRequested(); + await RunCleanup(); + cancellationToken.ThrowIfCancellationRequested(); + + await RemoveOldBackups(); cancellationToken.ThrowIfCancellationRequested(); // windows that have logic to open on startup @@ -129,7 +130,7 @@ namespace Pal.Client } } - private async Task CreateBackups() + private async Task CreateBackup() { await using var scope = _serviceProvider.CreateAsyncScope();