run method
Implementation
@override
FilterUseCaseResult<T> run() {
final enabledFilters = filters.where((e) => e.isEnabled);
if (data.isEmpty) {
return FilterUseCaseResult(
originalData: data,
filteredData: data,
appliedFilters: enabledFilters,
);
}
if (enabledFilters.isEmpty) {
return FilterUseCaseResult(
originalData: data,
filteredData: data,
appliedFilters: const [],
);
}
bool composedPredicate(T item) => enabledFilters.every((e) => e.predicate(item));
final filteredData = data.where(composedPredicate);
return FilterUseCaseResult(
originalData: data,
filteredData: filteredData,
appliedFilters: enabledFilters,
);
}