run method

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

Сортирует данные.

Если sort указан, то перезаписывает установленную сортировку и применяет к фильтрованным данным.

Если sort не указан и есть текущая установленная сортировка, то применяет текущую сортировку.

Если sort не указан и нет текущей установленной сортировки, то ничего не происходит.

Implementation

@override
SortUseCaseResult<T> run() {
  final targetSort = sort;

  if (data.isNotEmpty) {
    final sorted = List<T>.from(data);
    sorted.sort((a, b) =>
        targetSort.comparator(a, b) * targetSort.direction.compareValue);

    return SortUseCaseResult(
      originalData: data,
      sortedData: sorted,
      appliedSort: targetSort,
    );
  }

  return SortUseCaseResult(
    originalData: data,
    sortedData: data,
  );
}