This commit is contained in:
2022-06-05 13:21:46 +03:00
parent 690b7fe5f1
commit 4fbea983da
9 changed files with 97 additions and 124 deletions

View File

@@ -1,86 +1,76 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using PluginManager.Others;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace PluginManager
{
internal class AppConfig
{
public Dictionary<string, string> ApplicationVariables { get; set; }
public List<string> ProtectedKeyWords { get; set; }
}
public static class Config
{
private static readonly Dictionary<string, string> ApplicationVariables = new();
private static readonly List<string> ConstantTokens = new() { "token" };
private static AppConfig appConfig = null;
public static void AppendToDictionary(Dictionary<string, string> dictionary)
public static bool AddValueToVariables(string key, string value, bool isReadOnly)
{
foreach (var kvp in dictionary) ApplicationVariables.TryAdd(kvp.Key, kvp.Value);
}
public static bool AddValueToVariables(string key, string value, bool constant)
{
bool req = AddValueToVariables(key, value);
if (constant) ConstantTokens.Add(key);
return req;
}
public static bool AddValueToVariables(string key, string value)
{
if (ApplicationVariables.ContainsKey(key))
{
return false;
}
ApplicationVariables.Add(key, value);
if (appConfig.ApplicationVariables.ContainsKey(key)) return false;
appConfig.ApplicationVariables.Add(key, value);
if (isReadOnly) appConfig.ProtectedKeyWords.Add(key);
SaveConfig();
return true;
}
public static string? GetValue(string key)
{
if (!ApplicationVariables.ContainsKey(key))
{
if (key != "token") Console.WriteLine("The key is not present in the dictionary");
return null;
}
return ApplicationVariables[key];
if (!appConfig.ApplicationVariables.ContainsKey(key)) return null;
return appConfig.ApplicationVariables[key];
}
public static bool SetValue(string key, string value)
{
if (!ApplicationVariables.ContainsKey(key)) return false;
if (ConstantTokens.Contains(key)) return false;
ApplicationVariables[key] = value;
if (!appConfig.ApplicationVariables.ContainsKey(key)) return false;
if (appConfig.ProtectedKeyWords.Contains(key)) return false;
appConfig.ApplicationVariables[key] = value;
SaveConfig();
return true;
}
public static bool RemoveKey(string key)
{
if (ConstantTokens.Contains(key)) return false;
ApplicationVariables.Remove(key);
appConfig.ApplicationVariables.Remove(key);
appConfig.ProtectedKeyWords.Remove(key);
return true;
}
public static async void SaveDictionary()
public static async void SaveConfig()
{
string path = Functions.dataFolder + "var.dat";
await Functions.SaveToJsonFile(path, ApplicationVariables);
await Functions.SaveToJsonFile<AppConfig>(path, appConfig);
}
public static async void LoadDictionary()
public static async Task LoadConfig()
{
string path = Functions.dataFolder + "var.dat";
var d = await Functions.ConvertFromJson<Dictionary<string, string>>(path);
ApplicationVariables.Clear();
AppendToDictionary(d);
if (File.Exists(path))
{
appConfig = await Functions.ConvertFromJson<AppConfig>(path);
Functions.WriteLogFile($"Loaded {appConfig.ApplicationVariables.Keys.Count} application variables.\nLoaded {appConfig.ProtectedKeyWords.Count} readonly variables.");
//Console.WriteLine($"Loaded {appConfig.ApplicationVariables.Count} application variables !");
}
else
appConfig = new() { ApplicationVariables = new Dictionary<string, string>(), ProtectedKeyWords = new List<string>() };
}
public static string GetKey(string value) => ApplicationVariables.Keys.FirstOrDefault(x => ApplicationVariables[x] == value);
public static bool ContainsValue(string value) => ApplicationVariables.ContainsValue(value);
public static bool ContainsKey(string key) => ApplicationVariables.ContainsKey(key);
public static string? GetKey(string value) => appConfig.ApplicationVariables.Keys.FirstOrDefault(x => appConfig.ApplicationVariables[x] == value);
public static bool ContainsValue(string value) => appConfig.ApplicationVariables.ContainsValue(value);
public static bool ContainsKey(string key) => appConfig.ApplicationVariables.ContainsKey(key);
public static Dictionary<string, string> GetAllVariables() => new Dictionary<string, string>(appConfig.ApplicationVariables);
}
}