Files
SharpIDE/src/SharpIDE.Godot/Features/IdeSettings/AppStateLoader.cs
Matt Parker 4651c8012c add appstate
2025-10-01 19:47:47 +10:00

39 lines
1.2 KiB
C#

using System.Text.Json;
using Ardalis.GuardClauses;
namespace SharpIDE.Godot.Features.IdeSettings;
public static class AppStateLoader
{
private static string GetConfigFilePath()
{
var folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var configFolder = Path.Combine(folder, "SharpIDE");
Directory.CreateDirectory(configFolder);
var configFilePath = Path.Combine(configFolder, "sharpIde.json");
return configFilePath;
}
public static AppState LoadAppStateFromConfigFile()
{
var configFilePath = GetConfigFilePath();
if (File.Exists(configFilePath) is false)
{
File.WriteAllText(configFilePath, "{}");
}
using var stream = File.OpenRead(configFilePath);
var deserializedAppState = JsonSerializer.Deserialize<AppState>(stream);
Guard.Against.Null(deserializedAppState, nameof(deserializedAppState));
return deserializedAppState;
}
public static void SaveAppStateToConfigFile(AppState appState)
{
var configFilePath = GetConfigFilePath();
using var stream = File.Create(configFilePath);
JsonSerializer.Serialize(stream, appState);
stream.Flush();
}
}