chore: Clean up bootstrap

This commit is contained in:
Krille Fear 2021-11-19 14:42:34 +01:00
parent 5c326521fd
commit 65bff2c194
4 changed files with 65 additions and 54 deletions

View File

@ -37,7 +37,7 @@ void main() async {
Zone.current.handleUncaughtError(details.exception, details.stack); Zone.current.handleUncaughtError(details.exception, details.stack);
final clients = await ClientManager.getClients(); final clients = await ClientManager.getClients();
Logs().level = kReleaseMode ? Level.debug : Level.verbose; Logs().level = kReleaseMode ? Level.warning : Level.verbose;
if (PlatformInfos.isMobile) { if (PlatformInfos.isMobile) {
BackgroundPush.clientOnly(clients.first); BackgroundPush.clientOnly(clients.first);

View File

@ -182,8 +182,8 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
TextField( TextField(
minLines: 4, minLines: 4,
maxLines: 4, maxLines: 4,
autofocus: true,
autocorrect: false, autocorrect: false,
readOnly: _recoveryKeyInputLoading,
autofillHints: _recoveryKeyInputLoading autofillHints: _recoveryKeyInputLoading
? null ? null
: [AutofillHints.password], : [AutofillHints.password],
@ -196,31 +196,39 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
ElevatedButton.icon( ElevatedButton.icon(
icon: const Icon(Icons.lock_open_outlined), icon: _recoveryKeyInputLoading
? const CircularProgressIndicator.adaptive()
: const Icon(Icons.lock_open_outlined),
label: Text(L10n.of(context).unlockChatBackup), label: Text(L10n.of(context).unlockChatBackup),
onPressed: () async { onPressed: _recoveryKeyInputLoading
setState(() { ? null
_recoveryKeyInputError = null; : () async {
_recoveryKeyInputLoading = true; setState(() {
}); _recoveryKeyInputError = null;
try { _recoveryKeyInputLoading = true;
final key = _recoveryKeyTextEditingController.text; });
await bootstrap.newSsssKey.unlock( try {
keyOrPassphrase: key, final key =
); _recoveryKeyTextEditingController.text;
await bootstrap.client.encryption.crossSigning await bootstrap.newSsssKey.unlock(
.selfSign( keyOrPassphrase: key,
keyOrPassphrase: key, );
); Logs().d('SSSS unlocked');
await bootstrap.openExistingSsss(); await bootstrap.client.encryption.crossSigning
} catch (e, s) { .selfSign(
Logs().w('Unable to unlock SSSS', e, s); keyOrPassphrase: key,
setState(() => _recoveryKeyInputError = );
L10n.of(context).oopsSomethingWentWrong); Logs().d('Successful elfsigned');
} finally { await bootstrap.openExistingSsss();
setState(() => _recoveryKeyInputLoading = false); } catch (e, s) {
} Logs().w('Unable to unlock SSSS', e, s);
}), setState(() => _recoveryKeyInputError =
L10n.of(context).oopsSomethingWentWrong);
} finally {
setState(
() => _recoveryKeyInputLoading = false);
}
}),
const SizedBox(height: 16), const SizedBox(height: 16),
Row(children: [ Row(children: [
const Expanded(child: Divider()), const Expanded(child: Divider()),
@ -239,18 +247,20 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
icon: icon:
const Icon(Icons.transfer_within_a_station_outlined), const Icon(Icons.transfer_within_a_station_outlined),
label: Text(L10n.of(context).transferFromAnotherDevice), label: Text(L10n.of(context).transferFromAnotherDevice),
onPressed: () async { onPressed: _recoveryKeyInputLoading
final req = await showFutureLoadingDialog( ? null
context: context, : () async {
future: () => widget final req = await showFutureLoadingDialog(
.client.userDeviceKeys[widget.client.userID] context: context,
.startVerification(), future: () => widget
); .client.userDeviceKeys[widget.client.userID]
if (req.error != null) return; .startVerification(),
await KeyVerificationDialog(request: req.result) );
.show(context); if (req.error != null) return;
Navigator.of(context, rootNavigator: false).pop(); await KeyVerificationDialog(request: req.result)
}, .show(context);
Navigator.of(context, rootNavigator: false).pop();
},
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
ElevatedButton.icon( ElevatedButton.icon(
@ -260,20 +270,22 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
), ),
icon: const Icon(Icons.delete_outlined), icon: const Icon(Icons.delete_outlined),
label: Text(L10n.of(context).securityKeyLost), label: Text(L10n.of(context).securityKeyLost),
onPressed: () async { onPressed: _recoveryKeyInputLoading
if (OkCancelResult.ok == ? null
await showOkCancelAlertDialog( : () async {
useRootNavigator: false, if (OkCancelResult.ok ==
context: context, await showOkCancelAlertDialog(
title: L10n.of(context).securityKeyLost, useRootNavigator: false,
message: L10n.of(context).wipeChatBackup, context: context,
okLabel: L10n.of(context).ok, title: L10n.of(context).securityKeyLost,
cancelLabel: L10n.of(context).cancel, message: L10n.of(context).wipeChatBackup,
isDestructiveAction: true, okLabel: L10n.of(context).ok,
)) { cancelLabel: L10n.of(context).cancel,
setState(() => _createBootstrap(true)); isDestructiveAction: true,
} )) {
}, setState(() => _createBootstrap(true));
}
},
) )
], ],
), ),

View File

@ -15,7 +15,6 @@ import 'matrix_sdk_extensions.dart/flutter_matrix_hive_database.dart';
abstract class ClientManager { abstract class ClientManager {
static const String clientNamespace = 'im.fluffychat.store.clients'; static const String clientNamespace = 'im.fluffychat.store.clients';
static Future<List<Client>> getClients() async { static Future<List<Client>> getClients() async {
Logs().level = Level.warning;
if (PlatformInfos.isLinux) { if (PlatformInfos.isLinux) {
Hive.init((await getApplicationSupportDirectory()).path); Hive.init((await getApplicationSupportDirectory()).path);
} else { } else {

View File

@ -775,7 +775,7 @@ packages:
description: description:
path: "." path: "."
ref: "krille/idb" ref: "krille/idb"
resolved-ref: "60b2b6b5fcc45a5bedbe6eafee19258784e1a329" resolved-ref: "74037fb8ae0f4c4e1ac946d7c2057bf6e2da7aaf"
url: "https://gitlab.com/famedly/company/frontend/famedlysdk.git" url: "https://gitlab.com/famedly/company/frontend/famedlysdk.git"
source: git source: git
version: "0.7.0-nullsafety.6" version: "0.7.0-nullsafety.6"