using FieldLogger.Models;
namespace FieldLogger.Services;
/// Persisted app settings: paired device identities, active job, map key.
public sealed class SettingsService
{
private const string LocatorIdKey = "device.locator.id";
private const string LocatorNameKey = "device.locator.name";
private const string RtkIdKey = "device.rtk.id";
private const string RtkNameKey = "device.rtk.name";
private const string ActiveJobKey = "job.active.id";
private const string MapsApiKeyKey = "maps.apikey";
public Guid? GetSavedDeviceId(DeviceKind kind)
{
var raw = Preferences.Default.Get(IdKey(kind), string.Empty);
return Guid.TryParse(raw, out var id) ? id : null;
}
public string? GetSavedDeviceName(DeviceKind kind)
{
var name = Preferences.Default.Get(NameKey(kind), string.Empty);
return string.IsNullOrEmpty(name) ? null : name;
}
public void SaveDevice(DeviceKind kind, Guid id, string name)
{
Preferences.Default.Set(IdKey(kind), id.ToString());
Preferences.Default.Set(NameKey(kind), name);
}
public void ClearDevice(DeviceKind kind)
{
Preferences.Default.Remove(IdKey(kind));
Preferences.Default.Remove(NameKey(kind));
}
public int? ActiveJobId
{
get
{
var id = Preferences.Default.Get(ActiveJobKey, 0);
return id > 0 ? id : null;
}
set => Preferences.Default.Set(ActiveJobKey, value ?? 0);
}
/// Google Maps JavaScript API key used by the Windows WebView map.
public string GoogleMapsApiKey
{
get => Preferences.Default.Get(MapsApiKeyKey, string.Empty);
set => Preferences.Default.Set(MapsApiKeyKey, value);
}
private static string IdKey(DeviceKind kind) => kind == DeviceKind.Locator ? LocatorIdKey : RtkIdKey;
private static string NameKey(DeviceKind kind) => kind == DeviceKind.Locator ? LocatorNameKey : RtkNameKey;
}