refactor: high-level loops

This commit is contained in:
Lukas Lihotzki 2021-04-19 18:22:50 +02:00
parent 71fdd28a8a
commit b4f755388a
6 changed files with 24 additions and 52 deletions

View File

@ -115,19 +115,11 @@ class CrossSigning {
]);
}
bool signable(List<SignableKey> keys) {
for (final key in keys) {
if (key is CrossSigningKey && key.usage.contains('master')) {
return true;
}
if (key.userId == client.userID &&
(key is DeviceKeys) &&
key.identifier != client.deviceID) {
return true;
}
}
return false;
}
bool signable(List<SignableKey> keys) => keys.any((key) =>
key is CrossSigningKey && key.usage.contains('master') ||
key is DeviceKeys &&
key.userId == client.userID &&
key.identifier != client.deviceID);
Future<void> sign(List<SignableKey> keys) async {
Uint8List selfSigningKey;

View File

@ -42,9 +42,7 @@ class KeyVerificationManager {
entriesToDispose.add(entry.key);
}
}
for (final k in entriesToDispose) {
_requests.remove(k);
}
entriesToDispose.forEach(_requests.remove);
}
void addRequest(KeyVerification request) {

View File

@ -74,18 +74,8 @@ enum KeyVerificationState {
enum KeyVerificationMethod { emoji, numbers }
List<String> _intersect(List<String> a, List<dynamic> b) {
if (b == null || a == null) {
return [];
}
final res = <String>[];
for (final v in a) {
if (b.contains(v)) {
res.add(v);
}
}
return res;
}
List<String> _intersect(List<String> a, List<dynamic> b) =>
(b == null || a == null) ? [] : a.where(b.contains).toList();
List<int> _bytesToInt(Uint8List bytes, int totalBits) {
final ret = <int>[];

View File

@ -249,13 +249,11 @@ class Client extends MatrixApi {
if (accountData['m.direct'] != null &&
accountData['m.direct'].content[userId] is List<dynamic> &&
accountData['m.direct'].content[userId].length > 0) {
final potentialRooms = <Room>{};
for (final roomId in accountData['m.direct'].content[userId]) {
final room = getRoomById(roomId);
if (room != null && room.membership == Membership.join) {
potentialRooms.add(room);
}
}
final potentialRooms = accountData['m.direct']
.content[userId]
.cast<String>()
.map(getRoomById)
.where((room) => room != null && room.membership == Membership.join);
if (potentialRooms.isNotEmpty) {
return potentialRooms
.fold(

View File

@ -295,14 +295,11 @@ class Event extends MatrixEvent {
/// Returns a list of [Receipt] instances for this event.
List<Receipt> get receipts {
if (!(room.roomAccountData.containsKey('m.receipt'))) return [];
final receiptsList = <Receipt>[];
for (final entry in room.roomAccountData['m.receipt'].content.entries) {
if (entry.value['event_id'] == eventId) {
receiptsList.add(Receipt(room.getUserByMXIDSync(entry.key),
DateTime.fromMillisecondsSinceEpoch(entry.value['ts'])));
}
}
return receiptsList;
return room.roomAccountData['m.receipt'].content.entries
.where((entry) => entry.value['event_id'] == eventId)
.map((entry) => Receipt(room.getUserByMXIDSync(entry.key),
DateTime.fromMillisecondsSinceEpoch(entry.value['ts'])))
.toList();
}
/// Removes this event if the status is < 1. This event will just be removed

View File

@ -285,9 +285,8 @@ class Room {
// perfect, it is only used for the room preview in the room list and sorting
// said room list, so it should be good enough.
var lastTime = DateTime.fromMillisecondsSinceEpoch(0);
final lastEvents = <Event>[
for (var type in client.roomPreviewLastEvents) getState(type)
]..removeWhere((e) => e == null);
final lastEvents =
client.roomPreviewLastEvents.map(getState).where((e) => e != null);
var lastEvent = lastEvents.isEmpty
? null
@ -375,12 +374,10 @@ class Room {
}
}
if (heroes.isNotEmpty) {
var displayname = '';
for (final hero in heroes) {
if (hero.isEmpty) continue;
displayname += getUserByMXIDSync(hero).calcDisplayname() + ', ';
}
return displayname.substring(0, displayname.length - 2);
return heroes
.where((hero) => hero.isNotEmpty)
.map((hero) => getUserByMXIDSync(hero).calcDisplayname())
.join(', ');
}
if (membership == Membership.invite &&
getState(EventTypes.RoomMember, client.userID) != null) {