2023-03-22 11:46:11 -06:00

50 lines
1.2 KiB
C#

using System;
using System.IO;
using System.Linq;
using Dinah.Core;
using FileManager;
namespace LibationFileManager
{
public partial class Configuration : PropertyChangeFilter
{
public bool LibationSettingsAreValid => SettingsFileIsValid(SettingsFilePath);
public static bool SettingsFileIsValid(string settingsFile)
{
if (!Directory.Exists(Path.GetDirectoryName(settingsFile)) || !File.Exists(settingsFile))
return false;
var pDic = new PersistentDictionary(settingsFile, isReadOnly: false);
var booksDir = pDic.GetString(nameof(Books));
if (booksDir is null) return false;
if (!Directory.Exists(booksDir))
{
//"Books" is not null, so setup has already been run.
//Since Books can't be found, try to create it in Libation settings folder
booksDir = Path.Combine(Path.GetDirectoryName(settingsFile), nameof(Books));
try
{
Directory.CreateDirectory(booksDir);
pDic.SetString(nameof(Books), booksDir);
return booksDir is not null && Directory.Exists(booksDir);
}
catch { return false; }
}
return true;
}
#region singleton stuff
public static Configuration Instance { get; } = new Configuration();
private Configuration() { }
#endregion
}
}