compareOldestFirst static method

int compareOldestFirst(
  1. Message a,
  2. Message b
)

最旧在前(UI 列表:旧→新) seq<=0 排在已同步消息之后(底部),避免打字机结束后气泡「消失」

Implementation

static int compareOldestFirst(Message a, Message b) {
  final aSynced = a.seq > 0;
  final bSynced = b.seq > 0;
  if (aSynced != bSynced) return aSynced ? -1 : 1;
  if (aSynced) {
    final bySeq = a.seq.compareTo(b.seq);
    if (bySeq != 0) return bySeq;
  }
  final byTime = a.sendTime.compareTo(b.sendTime);
  if (byTime != 0) return byTime;
  return a.msgId.compareTo(b.msgId);
}