From d6728783a2ca777e082b1658ecf0236cdcd18a37 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 1 Aug 2021 16:05:32 +0200 Subject: [PATCH] fix: Wait for first sync on bootstrap --- lib/pages/chat_list.dart | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/pages/chat_list.dart b/lib/pages/chat_list.dart index 17d807ee..b57f8786 100644 --- a/lib/pages/chat_list.dart +++ b/lib/pages/chat_list.dart @@ -156,28 +156,29 @@ class ChatListController extends State { @override void initState() { _initReceiveSharingIntent(); - WidgetsBinding.instance.addPostFrameCallback((_) async { - if (!Matrix.of(context).client.encryptionEnabled) return; - await waitForFirstSync(); - if ((Matrix.of(context).client.database as FlutterMatrixHiveStore) - .get(SettingKeys.dontAskForBootstrapKey) == - true) { - return; - } - final crossSigning = await crossSigningCachedFuture; - final needsBootstrap = - Matrix.of(context).client.encryption?.crossSigning?.enabled == - false || - crossSigning == false; - final isUnknownSession = Matrix.of(context).client.isUnknownSession; - if (needsBootstrap || isUnknownSession) { - firstRunBootstrapAction(); - } - }); - + WidgetsBinding.instance.addPostFrameCallback( + (_) => waitForFirstSync().then((_) => checkBootstrap()), + ); super.initState(); } + void checkBootstrap() async { + if (!Matrix.of(context).client.encryptionEnabled) return; + if ((Matrix.of(context).client.database as FlutterMatrixHiveStore) + .get(SettingKeys.dontAskForBootstrapKey) == + true) { + return; + } + final crossSigning = await crossSigningCachedFuture; + final needsBootstrap = + Matrix.of(context).client.encryption?.crossSigning?.enabled == false || + crossSigning == false; + final isUnknownSession = Matrix.of(context).client.isUnknownSession; + if (needsBootstrap || isUnknownSession) { + firstRunBootstrapAction(); + } + } + @override void dispose() { _intentDataStreamSubscription?.cancel();