using System.Text.Json; using ClaudeDo.Data; namespace ClaudeDo.Ui; public sealed class AppSettings { public string DbPath { get; set; } = "~/.todo-app/todo.db"; public string SignalRUrl { get; set; } = "http://127.0.0.1:47821/hub"; public string Language { get; set; } = ""; private static readonly string ConfigPath = Paths.Expand("~/.todo-app/ui.config.json"); public static AppSettings Load() { try { if (File.Exists(ConfigPath)) { var json = File.ReadAllText(ConfigPath); return JsonSerializer.Deserialize(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }) ?? new(); } } catch { // Fall through to defaults } return new(); } public void Save() { var dir = Path.GetDirectoryName(ConfigPath); if (!string.IsNullOrEmpty(dir)) Directory.CreateDirectory(dir); var json = JsonSerializer.Serialize(this, new JsonSerializerOptions { WriteIndented = true }); File.WriteAllText(ConfigPath, json); } }