1
0
Files
Toak/Configuration/ConfigManager.cs

42 lines
1.0 KiB
C#

using System.Text.Json;
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 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);
}
}