44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using System.IO;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Flawless.Client.Models;
|
|
using Newtonsoft.Json;
|
|
using Path = System.IO.Path;
|
|
|
|
namespace Flawless.Client.Service;
|
|
|
|
public class SettingService : BaseService<SettingService>
|
|
{
|
|
|
|
private readonly JsonSerializer _serializer = JsonSerializer.Create();
|
|
|
|
public static string SettingFilePath { get; } =
|
|
Path.Combine(AppDefaultValues.ProgramDataDirectory, "settings.json");
|
|
|
|
public AppSettingModel AppSetting { get; private set; } = new AppSettingModel();
|
|
|
|
public ValueTask ResetAsync()
|
|
{
|
|
AppSetting.RepositoryPath = AppDefaultValues.DefaultRepositoryDirectory;
|
|
AppSetting.RefreshWorkspaceOnOpen = true;
|
|
AppSetting.RefreshWorkspaceOnFilesystemChanges = true;
|
|
AppSetting.DiffTool = "";
|
|
AppSetting.FileManagerTool = "";
|
|
|
|
return WriteToDiskAsync();
|
|
}
|
|
|
|
public async ValueTask WriteToDiskAsync()
|
|
{
|
|
var stream = File.Exists(SettingFilePath) ? File.OpenWrite(SettingFilePath) : File.Create(SettingFilePath);
|
|
await using var fs = new StreamWriter(stream, Encoding.UTF8);
|
|
_serializer.Serialize(fs, AppSetting);
|
|
}
|
|
|
|
public async ValueTask ReadFromDiskAsync()
|
|
{
|
|
if (!File.Exists(SettingFilePath)) return;
|
|
using var fs = new StreamReader(File.OpenRead(SettingFilePath), Encoding.UTF8);
|
|
_serializer.Populate(fs, AppSetting);
|
|
}
|
|
} |