From 55280df299952f065473b5730acb450e8b6570f6 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:00:16 +0800 Subject: [PATCH] Update Load configuration --- Netch/Utils/Configuration.cs | 50 ++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/Netch/Utils/Configuration.cs b/Netch/Utils/Configuration.cs index db6dd101..85b5e5c2 100644 --- a/Netch/Utils/Configuration.cs +++ b/Netch/Utils/Configuration.cs @@ -33,43 +33,37 @@ namespace Netch.Utils { if (File.Exists(SETTINGS_JSON)) { - Global.Settings = ParseSetting(File.ReadAllText(SETTINGS_JSON)); + try + { + using var fileStream = File.OpenRead(SETTINGS_JSON); + var settings = JsonSerializer.DeserializeAsync(fileStream, JsonSerializerOptions).Result!; + + CheckSetting(settings); + + Global.Settings = settings; + } + catch (Exception e) + { + Logging.Error(e.ToString()); + Utils.Open(Logging.LogFile); + Environment.Exit(-1); + Global.Settings = null!; + } } else { - // 弹出提示 - i18N.Load("System"); - - // 创建 data 文件夹并保存默认设置 + // 保存默认设置 Save(); } } - public static Setting ParseSetting(string text) + private static void CheckSetting(Setting settings) { - try - { - var settings = JsonSerializer.Deserialize(text, JsonSerializerOptions)!; + settings.Profiles.RemoveAll(p => p.ServerRemark == string.Empty || p.ModeRemark == string.Empty); - #region Check Profile - - settings.Profiles.RemoveAll(p => p.ServerRemark == string.Empty || p.ModeRemark == string.Empty); - - if (settings.Profiles.Any(p => settings.Profiles.Any(p1 => p1 != p && p1.Index == p.Index))) - for (var i = 0; i < settings.Profiles.Count; i++) - settings.Profiles[i].Index = i; - - #endregion - - return settings; - } - catch (Exception e) - { - Logging.Error(e.ToString()); - Utils.Open(Logging.LogFile); - Environment.Exit(-1); - return null!; - } + if (settings.Profiles.Any(p => settings.Profiles.Any(p1 => p1 != p && p1.Index == p.Index))) + for (var i = 0; i < settings.Profiles.Count; i++) + settings.Profiles[i].Index = i; } ///