DiffReviewBlocks constructor

DiffReviewBlocks(
  1. DiffReviewModel model
)

Builds an ordering for the model's current layout and threads.

Implementation

DiffReviewBlocks(DiffReviewModel model) : layout = model.diff.layout {
  final placements = model.threadPlacements.indexed.toList()
    ..sort((a, b) {
      final rowA = a.$2.afterRow == null
          ? layout.lines.length
          : a.$2.afterRow!;
      final rowB = b.$2.afterRow == null
          ? layout.lines.length
          : b.$2.afterRow!;
      final byRow = rowA.compareTo(rowB);
      return byRow != 0 ? byRow : a.$1.compareTo(b.$1);
    });
  for (final (order, (_, placement)) in placements.indexed) {
    final beforeRow = placement.afterRow == null
        ? layout.lines.length
        : placement.afterRow! + 1;
    _beforeRows.add(beforeRow);
    _threadPositions.add(beforeRow + order);
    _threads.add(DiffReviewThreadBlock._(placement));
    _threadById[placement.thread.id] = order;
  }
}