directChatMatrixID property
String?
directChatMatrixID
If this room is a direct chat, this is the matrix ID of the user. Returns null otherwise.
Implementation
String? get directChatMatrixID {
// Calculating the directChatMatrixId can be expensive. We cache it and
// validate the cache instead every time.
final cache = _cachedDirectChatMatrixId;
if (cache != null) {
final roomIds = client.directChats[cache];
if (roomIds is List && roomIds.contains(id)) {
return cache;
}
}
if (membership == Membership.invite) {
final userID = client.userID;
if (userID == null) return null;
final invitation = getState(EventTypes.RoomMember, userID);
if (invitation != null && invitation.content['is_direct'] == true) {
return _cachedDirectChatMatrixId = invitation.senderId;
}
}
final mxId = client.directChats.entries
.firstWhereOrNull((MapEntry<String, dynamic> e) {
final roomIds = e.value;
return roomIds is List<dynamic> && roomIds.contains(id);
})?.key;
if (mxId?.isValidMatrixId == true) return _cachedDirectChatMatrixId = mxId;
return _cachedDirectChatMatrixId = null;
}