48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
using Toak.Core;
|
|
using Toak.Serialization;
|
|
using Toak.Core.Interfaces;
|
|
|
|
namespace Toak.Configuration;
|
|
|
|
public class ConfigManager : IConfigProvider
|
|
{
|
|
private readonly string ConfigDir = Constants.Paths.ConfigDir;
|
|
private readonly string ConfigPath = Constants.Paths.ConfigFile;
|
|
|
|
public ConfigManager()
|
|
{
|
|
}
|
|
|
|
public ToakConfig LoadConfig()
|
|
{
|
|
if (!File.Exists(ConfigPath))
|
|
{
|
|
return new ToakConfig();
|
|
}
|
|
|
|
try
|
|
{
|
|
var json = File.ReadAllText(ConfigPath);
|
|
return JsonSerializer.Deserialize(json, AppJsonSerializerContext.Default.ToakConfig) ?? new ToakConfig();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return new ToakConfig();
|
|
}
|
|
}
|
|
|
|
public void SaveConfig(ToakConfig config)
|
|
{
|
|
if (!Directory.Exists(ConfigDir))
|
|
{
|
|
Directory.CreateDirectory(ConfigDir);
|
|
}
|
|
|
|
var json = JsonSerializer.Serialize(config, AppJsonSerializerContext.Default.ToakConfig);
|
|
File.WriteAllText(ConfigPath, json);
|
|
}
|
|
}
|