feat: Prevent sending messages if other party has no encryption keys
parent
8cb06d602b
commit
aa010767de
@ -0,0 +1,21 @@
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
extension OtherPartyCanReceiveExtension on Room {
|
||||
bool get otherPartyCanReceiveMessages {
|
||||
if (!encrypted) return true;
|
||||
final users = getParticipants()
|
||||
.map((u) => u.id)
|
||||
.where((userId) => userId != client.userID)
|
||||
.toSet();
|
||||
if (users.isEmpty) return true;
|
||||
|
||||
for (final userId in users) {
|
||||
if (client.userDeviceKeys[userId]?.deviceKeys.values.isNotEmpty == true) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
class OtherPartyCanNotReceiveMessages implements Exception {}
|
||||
Loading…
Reference in New Issue