public static void Load() { try { if (File.Exists(SettingsPath)) { var text = File.ReadAllText(SettingsPath); Current = JsonConvert.DeserializeObject <ComboMeterConfig>(text); if (Current.ComboGrades == null || Current.ComboGrades.Count == 0) { Current.ComboGrades = ComboMeterConfig.DefaultGrades; } } else { Current = new ComboMeterConfig(); } File.WriteAllText(SettingsPath, JsonConvert.SerializeObject(Current, new JsonSerializerSettings { Formatting = Formatting.Indented, // hack to don't show ServerLogging unless specified NullValueHandling = NullValueHandling.Ignore, Converters = new JsonConverter[] { new StringEnumConverter() } })); Apply(Current); } catch (Exception ex) { Current = new ComboMeterConfig(); Apply(Current); Debugger.Error($"Error on loading config. Using default one. {ex}"); // don't write default config to not override user changes in json and don't crash app if saving is failing } Apply(Current); }
private static void Apply(ComboMeterConfig current) { ConfigUpdated?.Invoke(current); }