Prechádzať zdrojové kódy

avalonia: Added CoreRepository.FilterChanged, to force refreshing if the selected filter has changed

Kenric Nugteren 2 týždňov pred
rodič
commit
ef618587d0
1 zmenil súbory, kde vykonal 10 pridanie a 0 odobranie
  1. 10 0
      InABox.Avalonia/DataModels/CoreRepository.cs

+ 10 - 0
InABox.Avalonia/DataModels/CoreRepository.cs

@@ -189,11 +189,19 @@ namespace InABox.Avalonia
         
         public bool FiltersVisible => AvailableFilters.Any();
 
+        private bool FilterChanged = false;
+
         public string? SelectedFilterName => AvailableFilters.FirstOrDefault(x => x.Selected)?.Name;
         
         public void SelectFilter(String? name)
         {
+            var currentSelected = AvailableFilters.FirstOrDefault(x => x.Selected);
             var definition = AvailableFilters.FirstOrDefault(x => String.Equals(x.Name, name));
+            if(definition is null && name is null)
+            {
+                definition = AvailableFilters.FirstOrDefault(x => x.Name == "All");
+            }
+            FilterChanged = FilterChanged || currentSelected != definition;
             foreach (var availableFilter in AvailableFilters)
                 availableFilter.Selected = definition == availableFilter;
             OnPropertyChanged(nameof(AvailableFilters));
@@ -230,6 +238,7 @@ namespace InABox.Avalonia
         
         private void DoRefresh(bool force)
         {
+            force = force || FilterChanged;
             // force = force || Host.Status == ConnectionStatus.Connected;
 
             var selectedIDs = SelectedItems.Select(x => x.ID).ToHashSet();
@@ -516,6 +525,7 @@ namespace InABox.Avalonia
                 AfterLoad(_query);
                 Search();
                 LastUpdated = DateTime.Now;
+                FilterChanged = false;
             }
             catch (Exception e)
             {