42 lines
1.0 KiB
C#
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);
|
|
}
|
|
}
|