isRead method
- ChatItem item,
- UserId? me, [
- List<ChatMember> members = const []
Indicates whether the provided ChatItem was read by some User other
than me.
If members are provided, then accounts its ChatMember.joinedAt for a
more precise read indication.
Implementation
bool isRead(
  ChatItem item,
  UserId? me, [
  List<ChatMember> members = const [],
]) {
  if (item.id.isLocal) {
    return false;
  }
  if (members.isNotEmpty) {
    if (members.length <= 1) {
      return true;
    }
    final Iterable<ChatMember> membersWithoutMe = members.where(
      (e) => e.user.id != me,
    );
    if (membersWithoutMe.isNotEmpty) {
      final PreciseDateTime firstJoinedAt = membersWithoutMe
          .fold<PreciseDateTime>(
            membersWithoutMe.first.joinedAt,
            (at, member) =>
                member.joinedAt.isBefore(at) ? member.joinedAt : at,
          );
      if (item.at.isBefore(firstJoinedAt)) {
        return true;
      }
    }
  }
  return lastReads.any((e) => !e.at.isBefore(item.at) && e.memberId != me);
}