1
0

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);
}
}