run method

  1. @override
FilterUseCaseResult<T> run()
override

Implementation

@override
FilterUseCaseResult<T> run() {
  final enabledFilters = filters.where((e) => e.isEnabled);

  if (data.isNotEmpty && enabledFilters.isNotEmpty) {
    bool composedPredicate(T item) =>
        enabledFilters.every((e) => e.predicate(item));

    final filteredData = data.where((item) {
      return composedPredicate(item);
    });

    return FilterUseCaseResult(
      originalData: data,
      filteredData: filteredData,
      appliedFilters: enabledFilters,
    );
  }

  return FilterUseCaseResult(
    originalData: data,
    filteredData: data,
    appliedFilters: const [],
  );
}