import 'package:matrix/matrix.dart'; extension ClientPresenceExtension on Client { List get contactList { final directChatsMxid = rooms .where((r) => r.isDirectChat) .map((r) => r.directChatMatrixID) .toSet(); final contactList = directChatsMxid .map( (mxid) => presences[mxid] ?? CachedPresence( PresenceType.offline, 0, null, false, mxid ?? '', ), ) .toList(); contactList.sort((a, b) => a.userid.compareTo(b.userid)); contactList.sort((a, b) => ((a.lastActiveTimestamp ?? DateTime.fromMillisecondsSinceEpoch(0)) .compareTo( b.lastActiveTimestamp ?? DateTime.fromMillisecondsSinceEpoch(0)))); return contactList; } }