diff --git a/Source/LibationAvalonia/App.axaml.cs b/Source/LibationAvalonia/App.axaml.cs index db969cf4..8eedfbb4 100644 --- a/Source/LibationAvalonia/App.axaml.cs +++ b/Source/LibationAvalonia/App.axaml.cs @@ -58,9 +58,11 @@ public class App : Application { string defaultLibationFilesDir = Configuration.DefaultLibationFilesDirectory; - // check for existing settings in default location + // check for existing settings in default location. + // First check if file exists so that, if it doesn't, we don't + // overwrite user's LibationFiles setting in appsettings.json string defaultSettingsFile = Path.Combine(defaultLibationFilesDir, "Settings.json"); - if (Configuration.SettingsFileIsValid(defaultSettingsFile)) + if (File.Exists(defaultSettingsFile) && Configuration.SettingsFileIsValid(defaultSettingsFile)) Configuration.SetLibationFiles(defaultLibationFilesDir); if (config.LibationSettingsAreValid) @@ -103,7 +105,6 @@ public class App : Application { if (setupDialog.IsNewUser) { - Configuration.SetLibationFiles(Configuration.DefaultLibationFilesDirectory); setupDialog.Config.Books = Configuration.DefaultBooksDirectory; if (setupDialog.Config.LibationSettingsAreValid) diff --git a/Source/LibationFileManager/Configuration.KnownDirectories.cs b/Source/LibationFileManager/Configuration.KnownDirectories.cs index e0871f86..9a052d20 100644 --- a/Source/LibationFileManager/Configuration.KnownDirectories.cs +++ b/Source/LibationFileManager/Configuration.KnownDirectories.cs @@ -19,9 +19,13 @@ namespace LibationFileManager public static string UserProfile => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Libation")); public static string LocalAppData => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Libation")); public static string DefaultLibationFilesDirectory => !IsWindows ? LocalAppData : UserProfile; - public static string DefaultBooksDirectory => Path.Combine(!IsWindows ? MyMusic : UserProfile, nameof(Books)); + public static string DefaultBooksDirectory + => !IsWindows ? Path.Combine(MyMusic, nameof(Books)) + : LibationSettingsDirectory is null ? Path.Combine(UserProfile, nameof(Books)) + : Path.Combine(LibationSettingsDirectory, nameof(Books)); - public enum KnownDirectories + + public enum KnownDirectories { None = 0, diff --git a/Source/LibationWinForms/Program.cs b/Source/LibationWinForms/Program.cs index 61eb28f0..12c49b6f 100644 --- a/Source/LibationWinForms/Program.cs +++ b/Source/LibationWinForms/Program.cs @@ -126,8 +126,10 @@ namespace LibationWinForms var defaultLibationFilesDir = Configuration.DefaultLibationFilesDirectory; // check for existing settings in default location + // First check if file exists so that, if it doesn't, we don't + // overwrite user's LibationFiles setting in appsettings.json var defaultSettingsFile = Path.Combine(defaultLibationFilesDir, "Settings.json"); - if (Configuration.SettingsFileIsValid(defaultSettingsFile)) + if (File.Exists(defaultSettingsFile) && Configuration.SettingsFileIsValid(defaultSettingsFile)) Configuration.SetLibationFiles(defaultLibationFilesDir); if (config.LibationSettingsAreValid) @@ -149,7 +151,6 @@ namespace LibationWinForms if (setupDialog.IsNewUser) { - Configuration.SetLibationFiles(defaultLibationFilesDir); config.Books = Configuration.DefaultBooksDirectory; } else if (setupDialog.IsReturningUser)