Initial project snapshot
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
using System.Text.Json;
|
||||
using RemoteAccessPlatform.Windows.Contracts;
|
||||
using RemoteAccessPlatform.Windows.Models;
|
||||
|
||||
namespace RemoteAccessPlatform.Windows.Settings;
|
||||
|
||||
public sealed class JsonLocalSettingsStore : ILocalSettingsStore
|
||||
{
|
||||
private static readonly JsonSerializerOptions SerializerOptions = new(JsonSerializerDefaults.Web)
|
||||
{
|
||||
WriteIndented = true
|
||||
};
|
||||
|
||||
public async Task<LocalClientSettings> LoadAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
if (!File.Exists(StoragePathResolver.SettingsFilePath))
|
||||
{
|
||||
return new LocalClientSettings();
|
||||
}
|
||||
|
||||
await using FileStream stream = File.OpenRead(StoragePathResolver.SettingsFilePath);
|
||||
LocalClientSettings? settings = await JsonSerializer.DeserializeAsync<LocalClientSettings>(stream, SerializerOptions, cancellationToken);
|
||||
return settings ?? new LocalClientSettings();
|
||||
}
|
||||
|
||||
public async Task SaveAsync(LocalClientSettings settings, CancellationToken cancellationToken)
|
||||
{
|
||||
StoragePathResolver.EnsureRoot();
|
||||
await using FileStream stream = File.Create(StoragePathResolver.SettingsFilePath);
|
||||
await JsonSerializer.SerializeAsync(stream, settings, SerializerOptions, cancellationToken);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user