Improve LibrarySizeChanged performance

This commit is contained in:
Michael Bucari-Tovo 2025-02-27 22:56:02 -07:00
parent 5f5c9f65ed
commit 47c9fcb883
3 changed files with 9 additions and 8 deletions

View File

@ -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<LibraryBook> libraryBooks)
=> await SetBackupCountsAsync(libraryBooks);
//Pass null to the setup count to get the whole library.
LibraryCommands.BookUserDefinedItemCommitted += async (_, _)
=> await SetBackupCountsAsync(null);

View File

@ -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<LibraryBook> fullLibrary)
{
await ProductsDisplay.UpdateGridAsync(fullLibrary);
await Task.WhenAll(
SetBackupCountsAsync(fullLibrary),
ProductsDisplay.UpdateGridAsync(fullLibrary));
}
private static string menufyText(string header) => Configuration.IsMacOs ? header : $"_{header}";

View File

@ -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<LibraryBook> initialLibrary)
public async Task OnLibraryLoadedAsync(List<LibraryBook> 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);