53 lines
1.3 KiB
C#
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();
|
|
}
|
|
}
|