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