From 762139d43d5bc7e739b0cf962760bded6a21ea26 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Thu, 11 Nov 2021 19:39:55 +0100 Subject: [PATCH] fix: Bootstrap loop --- lib/pages/chat_list/chat_list.dart | 14 ++------ .../settings_security_view.dart | 33 ++++++++++++++++--- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index c70f1356..4c1d7675 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -77,7 +77,6 @@ class ChatListController extends State { Matrix.of(context).client.rooms.where((r) => r.isSpace).toList(); final selectedRoomIds = {}; - Future crossSigningCachedFuture; bool crossSigningCached; bool hideChatBackupBanner = false; @@ -173,7 +172,9 @@ class ChatListController extends State { void checkBootstrap() async { if (!Matrix.of(context).client.encryptionEnabled) return; - final crossSigning = await crossSigningCachedFuture; + final crossSigning = + await Matrix.of(context).client.encryption?.crossSigning?.isCached() ?? + false; final needsBootstrap = Matrix.of(context).client.encryption?.crossSigning?.enabled == false || crossSigning == false; @@ -501,15 +502,6 @@ class ChatListController extends State { @override Widget build(BuildContext context) { Matrix.of(context).navigatorContext = context; - crossSigningCachedFuture ??= Matrix.of(context) - .client - .encryption - ?.crossSigning - ?.isCached() - ?.then((c) { - if (mounted) setState(() => crossSigningCached = c); - return c; - }); return ChatListView(this); } } diff --git a/lib/pages/settings_security/settings_security_view.dart b/lib/pages/settings_security/settings_security_view.dart index 48bc5ba4..3730a3ba 100644 --- a/lib/pages/settings_security/settings_security_view.dart +++ b/lib/pages/settings_security/settings_security_view.dart @@ -59,11 +59,34 @@ class SettingsSecurityView extends StatelessWidget { trailing: const Icon(Icons.vpn_key_outlined), ), ListTile( - title: Text(L10n.of(context).cachedKeys), - trailing: const Icon(Icons.wb_cloudy_outlined), - subtitle: Text( - '${Matrix.of(context).client.encryption.keyManager.enabled ? L10n.of(context).onlineKeyBackupEnabled : L10n.of(context).onlineKeyBackupDisabled}\n${Matrix.of(context).client.encryption.crossSigning.enabled ? L10n.of(context).crossSigningEnabled : L10n.of(context).crossSigningDisabled}'), - onTap: controller.bootstrapSettingsAction, + title: Text(L10n.of(context).crossSigningEnabled), + trailing: + Matrix.of(context).client.encryption.crossSigning.enabled + ? const Icon(Icons.check, color: Colors.green) + : const Icon(Icons.error, color: Colors.red), + ), + ListTile( + title: Text(L10n.of(context).onlineKeyBackupEnabled), + trailing: + Matrix.of(context).client.encryption.keyManager.enabled + ? const Icon(Icons.check, color: Colors.green) + : const Icon(Icons.error, color: Colors.red), + ), + ListTile( + title: const Text('Session verified'), + trailing: !Matrix.of(context).client.isUnknownSession + ? const Icon(Icons.check, color: Colors.green) + : const Icon(Icons.error, color: Colors.red), + ), + FutureBuilder( + future: + Matrix.of(context).client.encryption.keyManager.isCached(), + builder: (context, snapshot) => ListTile( + title: Text(L10n.of(context).keysCached), + trailing: snapshot.data == true + ? const Icon(Icons.check, color: Colors.green) + : const Icon(Icons.error, color: Colors.red), + ), ), }, ],