50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text.Json;
|
|
|
|
namespace ClaudeCheckerWindows;
|
|
|
|
public class AppSettings
|
|
{
|
|
// Auth signal — non-empty means the user has completed sign-in at least once.
|
|
// The WebView2 user-data folder holds the live session; this is only for startup.
|
|
public string CookieStore { get; set; } = "";
|
|
|
|
// Accumulated sparkline data — built up over multiple refreshes.
|
|
public string BurnHistory { get; set; } = "";
|
|
|
|
// User preferences
|
|
public int RefreshInterval { get; set; } = 120;
|
|
public bool ShowInTaskbar { get; set; } = true;
|
|
public bool BetaChannel { get; set; } = false;
|
|
|
|
private static readonly string FilePath = Path.Combine(
|
|
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
|
"ClaudeChecker", "settings.json");
|
|
|
|
private static AppSettings? _instance;
|
|
public static AppSettings Default => _instance ??= Load();
|
|
|
|
private static AppSettings Load()
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(FilePath))
|
|
return JsonSerializer.Deserialize<AppSettings>(File.ReadAllText(FilePath)) ?? new();
|
|
}
|
|
catch { }
|
|
return new();
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
try
|
|
{
|
|
Directory.CreateDirectory(Path.GetDirectoryName(FilePath)!);
|
|
File.WriteAllText(FilePath, JsonSerializer.Serialize(this,
|
|
new JsonSerializerOptions { WriteIndented = true }));
|
|
}
|
|
catch { }
|
|
}
|
|
}
|