fluffychat/lib/utils/matrix_sdk_extensions.dart/client_presence_extension.dart
2022-01-31 16:33:42 +01:00

30 lines
880 B
Dart

import 'package:matrix/matrix.dart';
extension ClientPresenceExtension on Client {
List<Presence> get contactList {
final directChatsMxid = rooms
.where((r) => r.isDirectChat)
.map((r) => r.directChatMatrixID)
.toSet();
final contactList = directChatsMxid
.map(
(mxid) =>
presences[mxid] ??
Presence.fromJson(
{
'sender': mxid,
'type': 'm.presence',
'content': {'presence': 'offline'},
},
),
)
.toList();
contactList.sort((a, b) => a.senderId.compareTo(b.senderId));
contactList.sort((a, b) => (a.presence.lastActiveAgo?.toDouble() ??
double.infinity)
.compareTo((b.presence.lastActiveAgo?.toDouble() ?? double.infinity)));
return contactList;
}
}