1
0
Files
Toak/Configuration/ConfigManager.cs

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);
}
}