diff --git a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs index 51a09a0c..2083768c 100644 --- a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs +++ b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs @@ -77,7 +77,7 @@ namespace LibationAvalonia.ViewModels //Run query on new list FilteredInGridEntries = QueryResults(SOURCE, FilterString); - await Dispatcher.UIThread.InvokeAsync(GridEntries.Refresh); + await refreshGrid(); } catch (Exception ex) @@ -86,6 +86,14 @@ namespace LibationAvalonia.ViewModels } } + private async Task refreshGrid() + { + if (GridEntries.IsEditingItem) + await Dispatcher.UIThread.InvokeAsync(GridEntries.CommitEdit); + + await Dispatcher.UIThread.InvokeAsync(GridEntries.Refresh); + } + private static List CreateGridEntries(IEnumerable dbBooks) { var geList = dbBooks @@ -118,10 +126,11 @@ namespace LibationAvalonia.ViewModels return bookList; } - public void ToggleSeriesExpanded(SeriesEntry seriesEntry) + public async Task ToggleSeriesExpanded(SeriesEntry seriesEntry) { seriesEntry.Liberate.Expanded = !seriesEntry.Liberate.Expanded; - GridEntries.Refresh(); + + await refreshGrid(); } #endregion @@ -140,7 +149,7 @@ namespace LibationAvalonia.ViewModels FilteredInGridEntries = QueryResults(SOURCE, searchString); - await Dispatcher.UIThread.InvokeAsync(GridEntries.Refresh); + await refreshGrid(); } private bool CollectionFilter(object item) @@ -176,11 +185,7 @@ namespace LibationAvalonia.ViewModels if (filterResults is not null && FilteredInGridEntries.Intersect(filterResults).Count() != FilteredInGridEntries.Count) { FilteredInGridEntries = filterResults; - - if (GridEntries.IsEditingItem) - await Dispatcher.UIThread.InvokeAsync(GridEntries.CommitEdit); - - await Dispatcher.UIThread.InvokeAsync(GridEntries.Refresh); + await refreshGrid(); } } diff --git a/Source/LibationAvalonia/Views/MainWindow.Export.cs b/Source/LibationAvalonia/Views/MainWindow.Export.cs index 338c6e3d..4864fa3e 100644 --- a/Source/LibationAvalonia/Views/MainWindow.Export.cs +++ b/Source/LibationAvalonia/Views/MainWindow.Export.cs @@ -1,4 +1,5 @@ using ApplicationServices; +using Avalonia.Controls; using Avalonia.Platform.Storage; using LibationFileManager; using System; @@ -6,6 +7,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_Export() { } diff --git a/Source/LibationAvalonia/Views/MainWindow.Filter.cs b/Source/LibationAvalonia/Views/MainWindow.Filter.cs index 4df730d0..e550abf2 100644 --- a/Source/LibationAvalonia/Views/MainWindow.Filter.cs +++ b/Source/LibationAvalonia/Views/MainWindow.Filter.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { protected void Configure_Filter() { } diff --git a/Source/LibationAvalonia/Views/MainWindow.Liberate.cs b/Source/LibationAvalonia/Views/MainWindow.Liberate.cs index c79ba1e9..6aab470f 100644 --- a/Source/LibationAvalonia/Views/MainWindow.Liberate.cs +++ b/Source/LibationAvalonia/Views/MainWindow.Liberate.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_Liberate() { } diff --git a/Source/LibationAvalonia/Views/MainWindow.QuickFilters.cs b/Source/LibationAvalonia/Views/MainWindow.QuickFilters.cs index da00ed0e..a3f6563f 100644 --- a/Source/LibationAvalonia/Views/MainWindow.QuickFilters.cs +++ b/Source/LibationAvalonia/Views/MainWindow.QuickFilters.cs @@ -5,6 +5,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_QuickFilters() diff --git a/Source/LibationAvalonia/Views/MainWindow.RemoveBooks.cs b/Source/LibationAvalonia/Views/MainWindow.RemoveBooks.cs index 0a357caf..85e3b135 100644 --- a/Source/LibationAvalonia/Views/MainWindow.RemoveBooks.cs +++ b/Source/LibationAvalonia/Views/MainWindow.RemoveBooks.cs @@ -4,6 +4,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_RemoveBooks() diff --git a/Source/LibationAvalonia/Views/MainWindow.ScanAuto.cs b/Source/LibationAvalonia/Views/MainWindow.ScanAuto.cs index 7348a033..422872e4 100644 --- a/Source/LibationAvalonia/Views/MainWindow.ScanAuto.cs +++ b/Source/LibationAvalonia/Views/MainWindow.ScanAuto.cs @@ -9,6 +9,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private InterruptableTimer autoScanTimer; diff --git a/Source/LibationAvalonia/Views/MainWindow.ScanManual.cs b/Source/LibationAvalonia/Views/MainWindow.ScanManual.cs index 72b9ce29..acd9602e 100644 --- a/Source/LibationAvalonia/Views/MainWindow.ScanManual.cs +++ b/Source/LibationAvalonia/Views/MainWindow.ScanManual.cs @@ -1,5 +1,6 @@ using ApplicationServices; using AudibleUtilities; +using Avalonia.Controls; using LibationFileManager; using System; using System.Collections.Generic; @@ -8,6 +9,7 @@ using System.Threading.Tasks; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_ScanManual() diff --git a/Source/LibationAvalonia/Views/MainWindow.ScanNotification.cs b/Source/LibationAvalonia/Views/MainWindow.ScanNotification.cs index 77933ab5..08f39e8d 100644 --- a/Source/LibationAvalonia/Views/MainWindow.ScanNotification.cs +++ b/Source/LibationAvalonia/Views/MainWindow.ScanNotification.cs @@ -4,6 +4,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_ScanNotification() diff --git a/Source/LibationAvalonia/Views/MainWindow.Settings.cs b/Source/LibationAvalonia/Views/MainWindow.Settings.cs index 027e56bf..296def23 100644 --- a/Source/LibationAvalonia/Views/MainWindow.Settings.cs +++ b/Source/LibationAvalonia/Views/MainWindow.Settings.cs @@ -3,6 +3,7 @@ using System.Linq; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_Settings() { } diff --git a/Source/LibationAvalonia/Views/MainWindow.VisibleBooks.cs b/Source/LibationAvalonia/Views/MainWindow.VisibleBooks.cs index c979845c..d3a2402f 100644 --- a/Source/LibationAvalonia/Views/MainWindow.VisibleBooks.cs +++ b/Source/LibationAvalonia/Views/MainWindow.VisibleBooks.cs @@ -1,12 +1,15 @@ using ApplicationServices; using Avalonia.Threading; using DataLayer; +using Dinah.Core; +using LibationFileManager; using System; using System.Linq; using System.Threading.Tasks; namespace LibationAvalonia.Views { + //DONE public partial class MainWindow { private void Configure_VisibleBooks() diff --git a/Source/LibationFileManager/Configuration.PersistentSettings.cs b/Source/LibationFileManager/Configuration.PersistentSettings.cs index b8e3c4ee..0482a96a 100644 --- a/Source/LibationFileManager/Configuration.PersistentSettings.cs +++ b/Source/LibationFileManager/Configuration.PersistentSettings.cs @@ -84,7 +84,12 @@ namespace LibationFileManager // temp/working dir(s) should be outside of dropbox [Description("Temporary location of files while they're in process of being downloaded and decrypted.\r\nWhen decryption is complete, the final file will be in Books location\r\nRecommend not using a folder which is backed up real time. Eg: Dropbox, iCloud, Google Drive")] - public string InProgress { get => GetString(defaultValue: WinTemp); set => SetString(value); } + public string InProgress { get + { + var tempDir = GetString(); + return string.IsNullOrWhiteSpace(tempDir) ? WinTemp : tempDir; + } + set => SetString(value); } [Description("Allow Libation to fix up audiobook metadata")] public bool AllowLibationFixup { get => GetNonString(defaultValue: true); set => SetNonString(value); }