sortForDispatch static method

List<Issue> sortForDispatch(
  1. List<Issue> issues
)

Sorts issues in dispatch order: priority asc, oldest createdAt, then identifier as a stable tie-breaker.

Visible for testing.

Implementation

static List<Issue> sortForDispatch(List<Issue> issues) {
  final copy = List<Issue>.from(issues);
  copy.sort((a, b) {
    final pa = a.priority ?? 1 << 30;
    final pb = b.priority ?? 1 << 30;
    if (pa != pb) return pa.compareTo(pb);
    final ca = a.createdAt;
    final cb = b.createdAt;
    if (ca != null && cb != null) {
      final cmp = ca.compareTo(cb);
      if (cmp != 0) return cmp;
    } else if (ca != null) {
      return -1;
    } else if (cb != null) {
      return 1;
    }
    return a.identifier.compareTo(b.identifier);
  });
  return copy;
}