diff --git a/src/Plugin.Discord/DiscordPlugin.cs b/src/Plugin.Discord/DiscordPlugin.cs index 0dc4fb18..26f59402 100644 --- a/src/Plugin.Discord/DiscordPlugin.cs +++ b/src/Plugin.Discord/DiscordPlugin.cs @@ -38,6 +38,8 @@ namespace ServerManagerTool.Plugin.Discord public bool Enabled => true; + public string ConfigFile => Path.Combine(PluginHelper.PluginFolder, Config.Default.ConfigFile); + public string PluginCode => Config.Default.PluginCode; public string PluginName => Config.Default.PluginName; @@ -227,56 +229,50 @@ namespace ServerManagerTool.Plugin.Discord } } - private void LoadConfig() + internal void BackupConfig() { - try + if (!File.Exists(ConfigFile)) + return; + + var backupFile = Path.ChangeExtension(ConfigFile, "bak"); + File.Copy(ConfigFile, backupFile, true); + } + + internal void LoadConfig() + { + PluginConfig = null; + + if (File.Exists(ConfigFile)) { - PluginConfig = null; - - var configFile = Path.Combine(PluginHelper.PluginFolder, Config.Default.ConfigFile); - PluginConfig = JsonUtils.DeserializeFromFile(configFile); - - if ((PluginConfig?.ConfigProfiles?.Count ?? 0) == 0) - { - PluginConfig = new DiscordPluginConfig(); - - SaveConfig(); - } - - PluginConfig?.CommitChanges(); + PluginConfig = JsonUtils.DeserializeFromFile(ConfigFile); } - catch (Exception ex) + else { PluginConfig = new DiscordPluginConfig(); - Debug.WriteLine($"ERROR: {nameof(LoadConfig)}\r\n{ex.Message}"); + SaveConfig(); } + + if (PluginConfig is null) + { + throw new Exception("Profile config file could not be loaded."); + } + + PluginConfig.CommitChanges(); } public void OpenConfigForm(Window owner) { - var window = new ConfigWindow(this, this.PluginConfig); + var window = new ConfigWindow(this, PluginConfig); window.Owner = owner; + window.ShowDialog(); - var dialogResult = window.ShowDialog(); - if (dialogResult.HasValue && dialogResult.Value) - { - SaveConfig(); - LoadConfig(); - } + LoadConfig(); } - private void SaveConfig() + internal void SaveConfig() { - try - { - var configFile = Path.Combine(PluginHelper.PluginFolder, Config.Default.ConfigFile); - JsonUtils.SerializeToFile(PluginConfig, configFile); - PluginConfig?.CommitChanges(); - } - catch (Exception ex) - { - Debug.WriteLine($"ERROR: {nameof(SaveConfig)}\r\n{ex.Message}"); - } + JsonUtils.SerializeToFile(PluginConfig, ConfigFile); + PluginConfig.CommitChanges(); } } } diff --git a/src/Plugin.Discord/Models/DiscordPluginConfig.cs b/src/Plugin.Discord/Models/DiscordPluginConfig.cs index b0705f91..fbea383b 100644 --- a/src/Plugin.Discord/Models/DiscordPluginConfig.cs +++ b/src/Plugin.Discord/Models/DiscordPluginConfig.cs @@ -24,12 +24,9 @@ namespace ServerManagerTool.Plugin.Discord public ObservableList ConfigProfiles { get { return Get>(); } - set { Set(value); } + private set { Set(value); } } - public override bool HasAnyChanges - { - get => base.HasChanges || (ConfigProfiles?.HasAnyChanges ?? false); - } + public override bool HasAnyChanges => base.HasChanges || ConfigProfiles.HasAnyChanges; } } diff --git a/src/Plugin.Discord/VersionFeed.xml b/src/Plugin.Discord/VersionFeed.xml index dbe7f661..8677acf8 100644 --- a/src/Plugin.Discord/VersionFeed.xml +++ b/src/Plugin.Discord/VersionFeed.xml @@ -27,6 +27,11 @@
  • de-DE Translation file updated.
  • pt-BR Translation file updated.
  • + CHANGE +
    +
      +
    • Changed the plugin initialization so it throws an exception if unable to load config file, rather than creating a new config file.
    • +

    diff --git a/src/Plugin.Discord/VersionFeedBeta.xml b/src/Plugin.Discord/VersionFeedBeta.xml index 805d459c..b8c9ccbf 100644 --- a/src/Plugin.Discord/VersionFeedBeta.xml +++ b/src/Plugin.Discord/VersionFeedBeta.xml @@ -7,6 +7,29 @@ 2021-12-09T00:00:00Z + + urn:uuid:FD4F56C3-9E44-4422-A761-87E7F957454F + 1.0.19 (1.0.19.2) + 1.0.19.2 + + 2021-12-09T00:00:00Z + +
    +

    + CHANGE +
    +

      +
    • Changed the plugin initialization so it throws an exception if unable to load config file, rather than creating a new config file.
    • +
    +

    +
    +
    + + bletch + bletch1971@hotmail.com + +
    + urn:uuid:A9EC2F32-E026-485F-BD7B-C657DBA95B54 1.0.19 (1.0.19.1) diff --git a/src/Plugin.Discord/Windows/ConfigProfileWindow.xaml.cs b/src/Plugin.Discord/Windows/ConfigProfileWindow.xaml.cs index 0b8487b4..3f8fec2a 100644 --- a/src/Plugin.Discord/Windows/ConfigProfileWindow.xaml.cs +++ b/src/Plugin.Discord/Windows/ConfigProfileWindow.xaml.cs @@ -25,7 +25,7 @@ namespace ServerManagerTool.Plugin.Discord.Windows InitializeComponent(); WindowUtils.UpdateResourceDictionary(this, plugin.LanguageCode); - this.Plugin = plugin ?? new DiscordPlugin(); + this.Plugin = plugin; this.OriginalProfile = profile; this.Profile = profile.Clone(); this.Profile.CommitChanges(); @@ -77,7 +77,10 @@ namespace ServerManagerTool.Plugin.Discord.Windows if (this.Profile.HasAnyChanges) { if (MessageBox.Show(ResourceUtils.GetResourceString(this.Resources, "ConfigProfileWindow_CloseLabel"), ResourceUtils.GetResourceString(this.Resources, "ConfigProfileWindow_CloseTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes) + { e.Cancel = true; + return; + } } } diff --git a/src/Plugin.Discord/Windows/ConfigWindow.xaml.cs b/src/Plugin.Discord/Windows/ConfigWindow.xaml.cs index 532b89a2..7962b536 100644 --- a/src/Plugin.Discord/Windows/ConfigWindow.xaml.cs +++ b/src/Plugin.Discord/Windows/ConfigWindow.xaml.cs @@ -23,8 +23,8 @@ namespace ServerManagerTool.Plugin.Discord.Windows InitializeComponent(); WindowUtils.UpdateResourceDictionary(this, plugin.LanguageCode); - this.Plugin = plugin ?? new DiscordPlugin(); - this.PluginConfig = pluginConfig ?? new DiscordPluginConfig(); + this.Plugin = plugin; + this.PluginConfig = pluginConfig; if (plugin.BetaEnabled) Title = $"{Title} {ResourceUtils.GetResourceString(this.Resources, "Global_BetaModeLabel")}"; @@ -64,7 +64,10 @@ namespace ServerManagerTool.Plugin.Discord.Windows if (PluginConfig.HasAnyChanges) { if (MessageBox.Show(ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_CloseLabel"), ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_CloseTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes) + { e.Cancel = true; + return; + } } } @@ -91,8 +94,7 @@ namespace ServerManagerTool.Plugin.Discord.Windows try { var profile = new ConfigProfile(); - - if (EditProfile(profile)) + if (OpenConfigProfile(profile)) PluginConfig.ConfigProfiles.Add(profile); } catch (Exception ex) @@ -143,7 +145,7 @@ namespace ServerManagerTool.Plugin.Discord.Windows try { var profile = ((ConfigProfile)((Button)e.Source).DataContext); - EditProfile(profile); + OpenConfigProfile(profile); } catch (Exception ex) { @@ -173,32 +175,21 @@ namespace ServerManagerTool.Plugin.Discord.Windows { try { - BackupExistingConfig(); - SaveConfig(); + Plugin.BackupConfig(); } catch (Exception ex) { - Debug.WriteLine($"ERROR: {nameof(Save_Click)}\r\n{ex.Message}"); - MessageBox.Show(ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_SaveErrorLabel"), ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_SaveErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); + Debug.WriteLine($"ERROR: {nameof(Save_Click)} - Backup\r\n{ex.Message}"); } - } - - private void BackupExistingConfig() - { - var configFile = Path.Combine(PluginHelper.PluginFolder, Config.Default.ConfigFile); - if (!File.Exists(configFile)) - return; - - var backupFile = Path.ChangeExtension(configFile, "bak"); try { - File.Copy(configFile, backupFile, true); + Plugin.SaveConfig(); } - catch + catch (Exception ex) { - // do nothing, just exit if cannot backup existing config file - throw; + Debug.WriteLine($"ERROR: {nameof(Save_Click)} - Save\r\n{ex.Message}"); + MessageBox.Show(ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_SaveErrorLabel"), ResourceUtils.GetResourceString(this.Resources, "ConfigWindow_SaveErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); } } @@ -248,7 +239,7 @@ namespace ServerManagerTool.Plugin.Discord.Windows } } - private bool EditProfile(ConfigProfile profile) + private bool OpenConfigProfile(ConfigProfile profile) { if (profile == null) return false; @@ -262,13 +253,6 @@ namespace ServerManagerTool.Plugin.Discord.Windows return dialogResult.HasValue && dialogResult.Value; } - private void SaveConfig() - { - var configFile = Path.Combine(PluginHelper.PluginFolder, Config.Default.ConfigFile); - JsonUtils.SerializeToFile(PluginConfig, configFile); - PluginConfig?.CommitChanges(); - } - #region Drag and Drop private static readonly DependencyProperty DraggedItemProperty = DependencyProperty.Register(nameof(DraggedItem), typeof(ConfigProfile), typeof(ConfigWindow), new PropertyMetadata(null));