Skip to content

Commit fa49d37

Browse files
committed
Consolidate filter logic into single method
1 parent f8144a2 commit fa49d37

File tree

1 file changed

+23
-44
lines changed

1 file changed

+23
-44
lines changed

Rubberduck.Core/UI/Inspections/InspectionResultsViewModel.cs

Lines changed: 23 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -234,23 +234,14 @@ public bool GroupByLocation
234234
}
235235
}
236236

237-
private List<CodeInspectionSeverity> _filterCriteria = new List<CodeInspectionSeverity>();
237+
private readonly List<CodeInspectionSeverity> _filterCriteria = new List<CodeInspectionSeverity>();
238238

239239
public bool FilterInspectionsByHint
240240
{
241241
get => _filterCriteria.Contains(CodeInspectionSeverity.Hint);
242242
set
243243
{
244-
if (FilterInspectionsByHint == value) { return; }
245-
246-
if (value)
247-
{
248-
_filterCriteria.Add(CodeInspectionSeverity.Hint);
249-
}
250-
else
251-
{
252-
_filterCriteria.Remove(CodeInspectionSeverity.Hint);
253-
}
244+
UpdateFilterCriteria(value, CodeInspectionSeverity.Hint);
254245

255246
FilterResults(_filterCriteria);
256247
OnPropertyChanged();
@@ -262,16 +253,7 @@ public bool FilterInspectionsBySuggestion
262253
get => _filterCriteria.Contains(CodeInspectionSeverity.Suggestion);
263254
set
264255
{
265-
if (FilterInspectionsBySuggestion == value) { return; }
266-
267-
if (value)
268-
{
269-
_filterCriteria.Add(CodeInspectionSeverity.Suggestion);
270-
}
271-
else
272-
{
273-
_filterCriteria.Remove(CodeInspectionSeverity.Suggestion);
274-
}
256+
UpdateFilterCriteria(value, CodeInspectionSeverity.Suggestion);
275257

276258
FilterResults(_filterCriteria);
277259
OnPropertyChanged();
@@ -283,16 +265,7 @@ public bool FilterInspectionsByWarning
283265
get => _filterCriteria.Contains(CodeInspectionSeverity.Warning);
284266
set
285267
{
286-
if (FilterInspectionsByWarning == value) { return; }
287-
288-
if (value)
289-
{
290-
_filterCriteria.Add(CodeInspectionSeverity.Warning);
291-
}
292-
else
293-
{
294-
_filterCriteria.Remove(CodeInspectionSeverity.Warning);
295-
}
268+
UpdateFilterCriteria(value, CodeInspectionSeverity.Warning);
296269

297270
FilterResults(_filterCriteria);
298271
OnPropertyChanged();
@@ -304,29 +277,35 @@ public bool FilterInspectionsByError
304277
get => _filterCriteria.Contains(CodeInspectionSeverity.Error);
305278
set
306279
{
307-
if (FilterInspectionsByError == value) { return; }
308-
309-
if (value)
310-
{
311-
_filterCriteria.Add(CodeInspectionSeverity.Error);
312-
}
313-
else
314-
{
315-
_filterCriteria.Remove(CodeInspectionSeverity.Error);
316-
}
280+
UpdateFilterCriteria(value, CodeInspectionSeverity.Error);
317281

318282
FilterResults(_filterCriteria);
319283
OnPropertyChanged();
320284
}
321285
}
322286

287+
private void UpdateFilterCriteria(bool isCriteria ,CodeInspectionSeverity criteria)
288+
{
289+
if (_filterCriteria.Contains(criteria) == isCriteria) { return; }
290+
291+
if (isCriteria)
292+
{
293+
_filterCriteria.Add(criteria);
294+
}
295+
else
296+
{
297+
_filterCriteria.Remove(criteria);
298+
}
299+
}
300+
323301
public void FilterResults(IEnumerable<CodeInspectionSeverity> inspections)
324302
{
325303
if (_filterCriteria.Any())
326304
{
327-
Results = new ObservableCollection<IInspectionResult>(
328-
_resultsAll.Where(o => _filterCriteria.Contains(o.Inspection.Severity))
329-
.ToList());
305+
Results = new ObservableCollection<IInspectionResult>(_resultsAll
306+
.GroupBy(result => result.Inspection.Severity)
307+
.Where(group => _filterCriteria.Contains(group.Key))
308+
.SelectMany(x => x));
330309
}
331310
else
332311
{

0 commit comments

Comments
 (0)