diff --git a/lib/encryption/key_manager.dart b/lib/encryption/key_manager.dart index 2aefd18d..435d1667 100644 --- a/lib/encryption/key_manager.dart +++ b/lib/encryption/key_manager.dart @@ -182,8 +182,6 @@ class KeyManager { if (uploaded) { await client.database ?.markInboundGroupSessionAsUploaded(roomId, sessionId); - } else { - _haveKeysToUpload = true; } }); final room = client.getRoomById(roomId); @@ -750,7 +748,6 @@ class KeyManager { } bool _isUploadingKeys = false; - bool _haveKeysToUpload = true; Future backgroundTasks() async { final database = client.database; @@ -760,12 +757,11 @@ class KeyManager { } _isUploadingKeys = true; try { - if (!_haveKeysToUpload || !(await isCached())) { + if (!(await isCached())) { return; // we can't backup anyways } final dbSessions = await database.getInboundGroupSessionsToUpload(); if (dbSessions.isEmpty) { - _haveKeysToUpload = false; return; // nothing to do } final privateKey = diff --git a/lib/encryption/utils/bootstrap.dart b/lib/encryption/utils/bootstrap.dart index dc728b63..184d14f1 100644 --- a/lib/encryption/utils/bootstrap.dart +++ b/lib/encryption/utils/bootstrap.dart @@ -584,6 +584,8 @@ class Bootstrap { Logs().v( 'And finally set all megolm keys as needing to be uploaded again...'); await client.database?.markInboundGroupSessionsAsNeedingUpload(); + Logs().v('And uploading keys...'); + await client.encryption?.keyManager.backgroundTasks(); } catch (e, s) { Logs().e('[Bootstrapping] Error setting up online key backup', e, s); state = BootstrapState.error;