@@ -22,6 +22,7 @@ import 'package:matrix/src/models/timeline_chunk.dart';
2222import 'package:matrix/src/utils/cached_stream_controller.dart' ;
2323import 'package:matrix/src/utils/client_init_exception.dart' ;
2424import 'package:matrix/src/utils/multilock.dart' ;
25+ import 'package:matrix/src/utils/on_tofu_event.dart' ;
2526import 'package:matrix/src/utils/request_and_cache.dart' ;
2627import 'package:matrix/src/utils/run_benchmarked.dart' ;
2728import 'package:matrix/src/utils/run_in_root.dart' ;
@@ -192,6 +193,7 @@ class Client extends MatrixApi {
192193 this .customImageResizer,
193194 this .shareKeysWith = ShareKeysWith .crossVerifiedIfEnabled,
194195 this .enableDehydratedDevices = false ,
196+ this .onTofuEvent = sendTofuEvent,
195197 this .receiptsPublicByDefault = true ,
196198
197199 /// Implement your https://spec.matrix.org/v1.9/client-server-api/#soft-logout
@@ -376,6 +378,8 @@ class Client extends MatrixApi {
376378
377379 bool enableDehydratedDevices = false ;
378380
381+ void Function (Room room, Set <String > userIds)? onTofuEvent;
382+
379383 final String dehydratedDeviceDisplayName;
380384
381385 /// Whether read receipts are sent as public receipts by default or just as private receipts.
@@ -3530,11 +3534,18 @@ class Client extends MatrixApi {
35303534 final oldKeys =
35313535 Map <String , CrossSigningKey >.from (userKeys.crossSigningKeys);
35323536 userKeys.crossSigningKeys = {};
3537+
3538+ final entry = CrossSigningKey .fromMatrixCrossSigningKey (
3539+ crossSigningKeyListEntry.value,
3540+ this ,
3541+ );
3542+
35333543 // add the types we aren't handling atm back
35343544 for (final oldEntry in oldKeys.entries) {
35353545 if (! oldEntry.value.usage.contains (keyType)) {
35363546 userKeys.crossSigningKeys[oldEntry.key] = oldEntry.value;
35373547 } else {
3548+ entry.lastSeenPublicKey = oldEntry.value.lastSeenPublicKey;
35383549 // There is a previous cross-signing key with this usage, that we no
35393550 // longer need/use. Clear it from the database.
35403551 dbActions.add (
@@ -3543,10 +3554,6 @@ class Client extends MatrixApi {
35433554 );
35443555 }
35453556 }
3546- final entry = CrossSigningKey .fromMatrixCrossSigningKey (
3547- crossSigningKeyListEntry.value,
3548- this ,
3549- );
35503557 final publicKey = entry.publicKey;
35513558 if (entry.isValid && publicKey != null ) {
35523559 final oldKey = oldKeys[publicKey];
@@ -3571,6 +3578,7 @@ class Client extends MatrixApi {
35713578 json.encode (entry.toJson ()),
35723579 entry.directVerified,
35733580 entry.blocked,
3581+ entry.lastSeenPublicKey,
35743582 ),
35753583 );
35763584 }
@@ -4129,6 +4137,7 @@ class Client extends MatrixApi {
41294137 jsonEncode (crossSigningKey.toJson ()),
41304138 crossSigningKey.directVerified,
41314139 crossSigningKey.blocked,
4140+ crossSigningKey.lastSeenPublicKey,
41324141 );
41334142 }
41344143 }
0 commit comments