diff --git a/lib/encryption/cross_signing.dart b/lib/encryption/cross_signing.dart index f725fff2..5f8b04c5 100644 --- a/lib/encryption/cross_signing.dart +++ b/lib/encryption/cross_signing.dart @@ -181,23 +181,24 @@ class CrossSigning { } if (signedKeys.isNotEmpty) { // post our new keys! - final payload = >>{}; + final payload = >>{}; for (final key in signedKeys) { - if (key.identifier == null || - key.signatures == null || - key.signatures?.isEmpty != false) { + final signatures = key.signatures; + final identifier = key.identifier; + if (identifier == null || signatures == null || signatures.isEmpty) { continue; } if (!payload.containsKey(key.userId)) { - payload[key.userId] = >{}; + payload[key.userId] = >{}; } if (payload[key.userId]?[key.identifier]?['signatures'] != null) { // we need to merge signature objects - payload[key.userId]![key.identifier]!['signatures'] - .addAll(key.signatures); + payload[key.userId]![key.identifier]! + .tryGetMap>('signatures')! + .addAll(signatures); } else { // we can just add signatures - payload[key.userId]![key.identifier!] = key.toJson(); + payload[key.userId]![identifier] = key.toJson(); } }