Files
Olive/Olive/Helpers/SettingsManager.cs
T
2026-07-30 18:39:38 +02:00

53 lines
1.3 KiB
C#

using Microsoft.CommandPalette.Extensions.Toolkit;
namespace Olive.Helpers;
internal sealed partial class SettingsManager : JsonSettingsManager
{
private const string Namespace = "Olive";
private readonly TextSetting _klipyApiKey = new(
Namespaced(nameof(KlipyApiKey)),
"Klipy API key",
"Private key used to call the Klipy API. It stays stored locally in Olive settings.",
string.Empty)
{
Placeholder = "Paste your Klipy API key here",
};
private static string Namespaced(string propertyName) => $"{Namespace}.{propertyName}";
public string KlipyApiKey
{
get
{
LoadSettings();
return _klipyApiKey.Value ?? string.Empty;
}
}
public bool HasKlipyApiKey => !string.IsNullOrWhiteSpace(KlipyApiKey);
public string SettingsPath => FilePath;
internal static string SettingsJsonPath()
{
var directory = Utilities.BaseSettingsPath("Olive");
Directory.CreateDirectory(directory);
return Path.Combine(directory, "settings.json");
}
public SettingsManager()
{
FilePath = SettingsJsonPath();
Settings.Add(_klipyApiKey);
// Load settings from file upon initialization
LoadSettings();
Settings.SettingsChanged += (_, _) => SaveSettings();
}
}