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