Added app configuration
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using Microsoft.Extensions.Configuration.Json;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
|
||||
namespace TheXamlGuy.TaskbarGroup.Core
|
||||
{
|
||||
public class WritableJsonConfigurationProvider : JsonConfigurationProvider
|
||||
{
|
||||
private readonly WritableJsonConfigurationFile writableJsonConfigurationFile;
|
||||
|
||||
public WritableJsonConfigurationProvider(JsonConfigurationSource source) : base(source)
|
||||
{
|
||||
writableJsonConfigurationFile = new WritableJsonConfigurationFile();
|
||||
}
|
||||
|
||||
public override void Load(Stream stream)
|
||||
{
|
||||
Data = writableJsonConfigurationFile.Parse(stream);
|
||||
}
|
||||
|
||||
public override void Set(string key, string value)
|
||||
{
|
||||
var file = Source.FileProvider?.GetFileInfo(Source.Path ?? string.Empty);
|
||||
static Stream OpenRead(IFileInfo fileInfo)
|
||||
{
|
||||
if (fileInfo.PhysicalPath is not null)
|
||||
{
|
||||
return new FileStream(fileInfo.PhysicalPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
|
||||
}
|
||||
|
||||
return fileInfo.CreateReadStream();
|
||||
}
|
||||
|
||||
using Stream stream = OpenRead(file);
|
||||
writableJsonConfigurationFile.Write(key, value, stream);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user