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