diff --git a/Core/Models/TagDatabase/TagDatabase.SettingsHandler.cs b/Core/Models/TagDatabase/TagDatabase.SettingsHandler.cs index e496058..6fc8c17 100644 --- a/Core/Models/TagDatabase/TagDatabase.SettingsHandler.cs +++ b/Core/Models/TagDatabase/TagDatabase.SettingsHandler.cs @@ -5,6 +5,13 @@ namespace TagHierarchyManager.Models; public partial class TagDatabase { + public async Task SetDefaultTagBindingsAsync(List value) + { + this.DefaultTagBindings = value; + this.CheckInitialisation(); + await this.Settings.UpdateSettingAsync(SettingsHandler.DefaultTagBindingKey, string.Join(';', value)).ConfigureAwait(false); + } + /// /// A class for handling settings for a at a lower level. /// diff --git a/Core/Models/TagDatabase/TagDatabase.cs b/Core/Models/TagDatabase/TagDatabase.cs index fb17d3e..c08d573 100644 --- a/Core/Models/TagDatabase/TagDatabase.cs +++ b/Core/Models/TagDatabase/TagDatabase.cs @@ -43,19 +43,9 @@ public partial class TagDatabase /// /// Gets or sets a List(string) of tag binding(s) that will be added to a tag by default. Defaults to genre - /// (e.g. Festival Progressive House ::genre). + /// (e.g. Festival Progressive House::genre). /// - public List DefaultTagBindings - { - get => this.defaultBindings; - set - { - if (this.defaultBindings == value) return; - this.defaultBindings = value; - if (this.Initialised) - _ = this.Settings.UpdateSettingAsync(SettingsHandler.DefaultTagBindingKey, string.Join(';', value)); - } - } + public List DefaultTagBindings { get; set; } /// /// Gets the location of the .thdb file associated with the , inferred from the current diff --git a/UI/TagDatabaseService.cs b/UI/TagDatabaseService.cs index cc8fac2..885f953 100644 --- a/UI/TagDatabaseService.cs +++ b/UI/TagDatabaseService.cs @@ -173,8 +173,12 @@ public class TagDatabaseService : ObservableObject : this.Database.Search(searchQuery, mode); } - public void SetDefaultTagBindings(string input) + public async Task SetDefaultTagBindingsAsync(string input) { + if (this.Database is null) return; + var valueList = input.Split(";", + StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList(); + await this.Database.SetDefaultTagBindingsAsync(valueList); this.Database?.DefaultTagBindings = input.Split(";", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList(); this.NotifyDatabasePropertiesChanged(); diff --git a/UI/ViewModels/DatabaseSettingsViewModel.cs b/UI/ViewModels/DatabaseSettingsViewModel.cs index 892dce6..ec5853d 100644 --- a/UI/ViewModels/DatabaseSettingsViewModel.cs +++ b/UI/ViewModels/DatabaseSettingsViewModel.cs @@ -40,9 +40,9 @@ public partial class DatabaseSettingsViewModel : ViewModelBase public event Action? RequestClose; [RelayCommand] - private void SaveSettings() + private async Task SaveSettingsAsync() { - this._mainWindow.TagDatabaseService.SetDefaultTagBindings(this.DefaultTagBindings); + await this._mainWindow.TagDatabaseService.SetDefaultTagBindingsAsync(this.DefaultTagBindings); this.RequestClose?.Invoke(); } } \ No newline at end of file