From 47c9fcb88353483f6e6def77005a631f5017e1a3 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Thu, 27 Feb 2025 22:56:02 -0700 Subject: [PATCH] Improve LibrarySizeChanged performance --- Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs | 4 ---- Source/LibationAvalonia/ViewModels/MainVM.cs | 5 ++++- Source/LibationAvalonia/Views/MainWindow.axaml.cs | 8 +++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs b/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs index 658ef683..7b598c5c 100644 --- a/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs +++ b/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs @@ -4,7 +4,6 @@ using DataLayer; using LibationFileManager; using ReactiveUI; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace LibationAvalonia.ViewModels @@ -44,9 +43,6 @@ namespace LibationAvalonia.ViewModels private void Configure_BackupCounts() { - LibraryCommands.LibrarySizeChanged += async (object _, List libraryBooks) - => await SetBackupCountsAsync(libraryBooks); - //Pass null to the setup count to get the whole library. LibraryCommands.BookUserDefinedItemCommitted += async (_, _) => await SetBackupCountsAsync(null); diff --git a/Source/LibationAvalonia/ViewModels/MainVM.cs b/Source/LibationAvalonia/ViewModels/MainVM.cs index 027f13d9..35089bb0 100644 --- a/Source/LibationAvalonia/ViewModels/MainVM.cs +++ b/Source/LibationAvalonia/ViewModels/MainVM.cs @@ -4,6 +4,7 @@ using LibationAvalonia.Views; using LibationFileManager; using ReactiveUI; using System.Collections.Generic; +using System.Threading.Tasks; namespace LibationAvalonia.ViewModels { @@ -38,7 +39,9 @@ namespace LibationAvalonia.ViewModels private async void LibraryCommands_LibrarySizeChanged(object sender, List fullLibrary) { - await ProductsDisplay.UpdateGridAsync(fullLibrary); + await Task.WhenAll( + SetBackupCountsAsync(fullLibrary), + ProductsDisplay.UpdateGridAsync(fullLibrary)); } private static string menufyText(string header) => Configuration.IsMacOs ? header : $"_{header}"; diff --git a/Source/LibationAvalonia/Views/MainWindow.axaml.cs b/Source/LibationAvalonia/Views/MainWindow.axaml.cs index f9687d2a..005f3654 100644 --- a/Source/LibationAvalonia/Views/MainWindow.axaml.cs +++ b/Source/LibationAvalonia/Views/MainWindow.axaml.cs @@ -8,6 +8,7 @@ using ReactiveUI; using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; namespace LibationAvalonia.Views { @@ -60,13 +61,14 @@ namespace LibationAvalonia.Views filterSearchTb.Focus(); } - public async System.Threading.Tasks.Task OnLibraryLoadedAsync(List initialLibrary) + public async Task OnLibraryLoadedAsync(List initialLibrary) { if (QuickFilters.UseDefault) await ViewModel.PerformFilter(QuickFilters.Filters.FirstOrDefault()); - await ViewModel.SetBackupCountsAsync(initialLibrary); - await ViewModel.ProductsDisplay.BindToGridAsync(initialLibrary); + await Task.WhenAll( + ViewModel.SetBackupCountsAsync(initialLibrary), + ViewModel.ProductsDisplay.BindToGridAsync(initialLibrary)); } public void ProductsDisplay_LiberateClicked(object _, LibraryBook libraryBook) => ViewModel.LiberateClicked(libraryBook);