From 0f2cb35fc781f8e64d24dd74ebe590695613b418 Mon Sep 17 00:00:00 2001 From: djbadders <34887832+djbadders@users.noreply.github.com> Date: Wed, 19 Aug 2020 19:10:49 +0100 Subject: [PATCH] Fixed issue settings not refreshing until restart --- Core/Main/PTMagicConfiguration.cs | 28 +++++++++++++++--------- Monitor/Pages/SettingsAnalyzer.cshtml.cs | 3 ++- Monitor/Pages/SettingsGeneral.cshtml.cs | 8 +++++-- Monitor/Pages/SetupPassword.cshtml.cs | 2 +- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/Core/Main/PTMagicConfiguration.cs b/Core/Main/PTMagicConfiguration.cs index 2d9c3dd..7d29d14 100644 --- a/Core/Main/PTMagicConfiguration.cs +++ b/Core/Main/PTMagicConfiguration.cs @@ -15,15 +15,23 @@ namespace Core.Main private GeneralSettings _generalSettings = null; private AnalyzerSettings _analyzerSettings = null; private SecureSettings _secureSettings = null; + private string _basePath; public PTMagicConfiguration() { - LoadSettings(Directory.GetCurrentDirectory()); + _basePath = Directory.GetCurrentDirectory(); + LoadSettings(_basePath); } public PTMagicConfiguration(string basePath) { - LoadSettings(basePath); + _basePath = basePath; + LoadSettings(_basePath); + } + + public void RefreshSettings() + { + LoadSettings(_basePath); } private void LoadSettings(string basePath) @@ -100,17 +108,17 @@ namespace Core.Main } } - public void WriteGeneralSettings(string basePath) + public void WriteGeneralSettings() { GeneralSettingsWrapper gsWrapper = new GeneralSettingsWrapper(); gsWrapper.GeneralSettings = this.GeneralSettings; - FileHelper.CreateBackup(basePath + "settings.general.json", basePath, "settings.general.json.backup"); + FileHelper.CreateBackup(_basePath + "settings.general.json", _basePath, "settings.general.json.backup"); - FileHelper.WriteTextToFile(basePath, "settings.general.json", JsonConvert.SerializeObject(gsWrapper, Formatting.Indented)); + FileHelper.WriteTextToFile(_basePath, "settings.general.json", JsonConvert.SerializeObject(gsWrapper, Formatting.Indented)); } - public void WriteAnalyzerSettings(string basePath) + public void WriteAnalyzerSettings() { AnalyzerSettingsWrapper asWrapper = new AnalyzerSettingsWrapper(); asWrapper.AnalyzerSettings = this.AnalyzerSettings; @@ -119,12 +127,12 @@ namespace Core.Main settings.NullValueHandling = NullValueHandling.Ignore; settings.DefaultValueHandling = DefaultValueHandling.Ignore; - FileHelper.CreateBackup(basePath + "settings.analyzer.json", basePath, "settings.analyzer.json.backup"); + FileHelper.CreateBackup(_basePath + "settings.analyzer.json", _basePath, "settings.analyzer.json.backup"); - FileHelper.WriteTextToFile(basePath, "settings.analyzer.json", JsonConvert.SerializeObject(asWrapper, Formatting.Indented, settings)); + FileHelper.WriteTextToFile(_basePath, "settings.analyzer.json", JsonConvert.SerializeObject(asWrapper, Formatting.Indented, settings)); } - public void WriteSecureSettings(string password, string basePath) + public void WriteSecureSettings(string password) { string passwordEncrypted = EncryptionHelper.Encrypt(password); @@ -133,7 +141,7 @@ namespace Core.Main SecureSettingsWrapper ssWrapper = new SecureSettingsWrapper(); ssWrapper.SecureSettings = this.SecureSettings; - FileHelper.WriteTextToFile(basePath, "settings.secure.json", JsonConvert.SerializeObject(ssWrapper, Formatting.Indented)); + FileHelper.WriteTextToFile(_basePath, "settings.secure.json", JsonConvert.SerializeObject(ssWrapper, Formatting.Indented)); } } } diff --git a/Monitor/Pages/SettingsAnalyzer.cshtml.cs b/Monitor/Pages/SettingsAnalyzer.cshtml.cs index 64bd74a..a6b1a4b 100644 --- a/Monitor/Pages/SettingsAnalyzer.cshtml.cs +++ b/Monitor/Pages/SettingsAnalyzer.cshtml.cs @@ -42,7 +42,8 @@ namespace Monitor.Pages SaveGlobalSettings(formKeys); SaveSingleMarketSettings(formKeys); - PTMagicConfiguration.WriteAnalyzerSettings(PTMagicBasePath); + PTMagicConfiguration.WriteAnalyzerSettings(); + PTMagicConfiguration.RefreshSettings(); NotifyHeadline = "Settings saved!"; NotifyMessage = "Settings saved successfully to settings.analyzer.json."; diff --git a/Monitor/Pages/SettingsGeneral.cshtml.cs b/Monitor/Pages/SettingsGeneral.cshtml.cs index ff1df72..7cf9d5c 100644 --- a/Monitor/Pages/SettingsGeneral.cshtml.cs +++ b/Monitor/Pages/SettingsGeneral.cshtml.cs @@ -65,6 +65,7 @@ namespace Monitor.Pages { base.Init(); + // Read the new settings PTMagicConfiguration.GeneralSettings.Application.IsEnabled = HttpContext.Request.Form["Application_IsEnabled"].Equals("on"); PTMagicConfiguration.GeneralSettings.Application.TestMode = HttpContext.Request.Form["Application_TestMode"].Equals("on"); PTMagicConfiguration.GeneralSettings.Application.StartBalance = SystemHelper.TextToDouble(HttpContext.Request.Form["Application_StartBalance"], PTMagicConfiguration.GeneralSettings.Application.StartBalance, "en-US"); @@ -79,7 +80,7 @@ namespace Monitor.Pages PTMagicConfiguration.GeneralSettings.Application.InstanceName = HttpContext.Request.Form["Application_InstanceName"]; PTMagicConfiguration.GeneralSettings.Application.CoinMarketCapAPIKey = HttpContext.Request.Form["Application_CoinMarketCapAPIKey"]; PTMagicConfiguration.GeneralSettings.Application.FreeCurrencyConverterAPIKey = HttpContext.Request.Form["Application_FreeCurrencyConverterAPIKey"]; - // + PTMagicConfiguration.GeneralSettings.Monitor.IsPasswordProtected = HttpContext.Request.Form["Monitor_IsPasswordProtected"].Equals("on"); PTMagicConfiguration.GeneralSettings.Monitor.OpenBrowserOnStart = HttpContext.Request.Form["Monitor_OpenBrowserOnStart"].Equals("on"); PTMagicConfiguration.GeneralSettings.Monitor.DefaultDCAMode = HttpContext.Request.Form["Monitor_AnalyzerChart"]; @@ -105,8 +106,11 @@ namespace Monitor.Pages PTMagicConfiguration.GeneralSettings.Telegram.ChatId = SystemHelper.TextToInteger64(HttpContext.Request.Form["Telegram_ChatId"], PTMagicConfiguration.GeneralSettings.Telegram.ChatId); PTMagicConfiguration.GeneralSettings.Telegram.SilentMode = HttpContext.Request.Form["Telegram_SilentMode"].Equals("on"); - PTMagicConfiguration.WriteGeneralSettings(PTMagicBasePath); + // Save and reload the settings + PTMagicConfiguration.WriteGeneralSettings(); + PTMagicConfiguration.RefreshSettings(); + // Notify NotifyHeadline = "Settings saved!"; NotifyMessage = "Settings saved successfully to settings.general.json."; NotifyType = "success"; diff --git a/Monitor/Pages/SetupPassword.cshtml.cs b/Monitor/Pages/SetupPassword.cshtml.cs index 0a0910c..eb53c5f 100644 --- a/Monitor/Pages/SetupPassword.cshtml.cs +++ b/Monitor/Pages/SetupPassword.cshtml.cs @@ -26,7 +26,7 @@ namespace Monitor.Pages if (ModelState.IsValid) { base.PreInit(); - PTMagicConfiguration.WriteSecureSettings(password, PTMagicBasePath); + PTMagicConfiguration.WriteSecureSettings(password); Response.Redirect(PTMagicConfiguration.GeneralSettings.Monitor.RootUrl + "Login"); }