pinned function

A comparator which prioritizes participants who are pinned.

Implementation

int pinned(CallParticipantState a, CallParticipantState b) {
  if (a.pin != null && b.pin != null) {
    if (!a.pin!.isLocalPin && b.pin!.isLocalPin) return -1;
    if (a.pin!.isLocalPin && !b.pin!.isLocalPin) return 1;
    if (a.pin!.pinnedAt.isAfter(b.pin!.pinnedAt)) return -1;
    if (a.pin!.pinnedAt.isBefore(b.pin!.pinnedAt)) return 1;
  }

  if (a.pin != null && b.pin == null) return -1;
  if (a.pin == null && b.pin != null) return 1;

  return 0;
}