mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-03 22:07:23 +01:00 
			
		
		
		
	chore: Clean up bootstrap
This commit is contained in:
		
							parent
							
								
									5c326521fd
								
							
						
					
					
						commit
						65bff2c194
					
				@ -37,7 +37,7 @@ void main() async {
 | 
			
		||||
      Zone.current.handleUncaughtError(details.exception, details.stack);
 | 
			
		||||
 | 
			
		||||
  final clients = await ClientManager.getClients();
 | 
			
		||||
  Logs().level = kReleaseMode ? Level.debug : Level.verbose;
 | 
			
		||||
  Logs().level = kReleaseMode ? Level.warning : Level.verbose;
 | 
			
		||||
 | 
			
		||||
  if (PlatformInfos.isMobile) {
 | 
			
		||||
    BackgroundPush.clientOnly(clients.first);
 | 
			
		||||
 | 
			
		||||
@ -182,8 +182,8 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
 | 
			
		||||
                    TextField(
 | 
			
		||||
                      minLines: 4,
 | 
			
		||||
                      maxLines: 4,
 | 
			
		||||
                      autofocus: true,
 | 
			
		||||
                      autocorrect: false,
 | 
			
		||||
                      readOnly: _recoveryKeyInputLoading,
 | 
			
		||||
                      autofillHints: _recoveryKeyInputLoading
 | 
			
		||||
                          ? null
 | 
			
		||||
                          : [AutofillHints.password],
 | 
			
		||||
@ -196,31 +196,39 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
 | 
			
		||||
                    ),
 | 
			
		||||
                    const SizedBox(height: 16),
 | 
			
		||||
                    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),
 | 
			
		||||
                        onPressed: () async {
 | 
			
		||||
                          setState(() {
 | 
			
		||||
                            _recoveryKeyInputError = null;
 | 
			
		||||
                            _recoveryKeyInputLoading = true;
 | 
			
		||||
                          });
 | 
			
		||||
                          try {
 | 
			
		||||
                            final key = _recoveryKeyTextEditingController.text;
 | 
			
		||||
                            await bootstrap.newSsssKey.unlock(
 | 
			
		||||
                              keyOrPassphrase: key,
 | 
			
		||||
                            );
 | 
			
		||||
                            await bootstrap.client.encryption.crossSigning
 | 
			
		||||
                                .selfSign(
 | 
			
		||||
                              keyOrPassphrase: key,
 | 
			
		||||
                            );
 | 
			
		||||
                            await bootstrap.openExistingSsss();
 | 
			
		||||
                          } catch (e, s) {
 | 
			
		||||
                            Logs().w('Unable to unlock SSSS', e, s);
 | 
			
		||||
                            setState(() => _recoveryKeyInputError =
 | 
			
		||||
                                L10n.of(context).oopsSomethingWentWrong);
 | 
			
		||||
                          } finally {
 | 
			
		||||
                            setState(() => _recoveryKeyInputLoading = false);
 | 
			
		||||
                          }
 | 
			
		||||
                        }),
 | 
			
		||||
                        onPressed: _recoveryKeyInputLoading
 | 
			
		||||
                            ? null
 | 
			
		||||
                            : () async {
 | 
			
		||||
                                setState(() {
 | 
			
		||||
                                  _recoveryKeyInputError = null;
 | 
			
		||||
                                  _recoveryKeyInputLoading = true;
 | 
			
		||||
                                });
 | 
			
		||||
                                try {
 | 
			
		||||
                                  final key =
 | 
			
		||||
                                      _recoveryKeyTextEditingController.text;
 | 
			
		||||
                                  await bootstrap.newSsssKey.unlock(
 | 
			
		||||
                                    keyOrPassphrase: key,
 | 
			
		||||
                                  );
 | 
			
		||||
                                  Logs().d('SSSS unlocked');
 | 
			
		||||
                                  await bootstrap.client.encryption.crossSigning
 | 
			
		||||
                                      .selfSign(
 | 
			
		||||
                                    keyOrPassphrase: key,
 | 
			
		||||
                                  );
 | 
			
		||||
                                  Logs().d('Successful elfsigned');
 | 
			
		||||
                                  await bootstrap.openExistingSsss();
 | 
			
		||||
                                } 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),
 | 
			
		||||
                    Row(children: [
 | 
			
		||||
                      const Expanded(child: Divider()),
 | 
			
		||||
@ -239,18 +247,20 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
 | 
			
		||||
                      icon:
 | 
			
		||||
                          const Icon(Icons.transfer_within_a_station_outlined),
 | 
			
		||||
                      label: Text(L10n.of(context).transferFromAnotherDevice),
 | 
			
		||||
                      onPressed: () async {
 | 
			
		||||
                        final req = await showFutureLoadingDialog(
 | 
			
		||||
                          context: context,
 | 
			
		||||
                          future: () => widget
 | 
			
		||||
                              .client.userDeviceKeys[widget.client.userID]
 | 
			
		||||
                              .startVerification(),
 | 
			
		||||
                        );
 | 
			
		||||
                        if (req.error != null) return;
 | 
			
		||||
                        await KeyVerificationDialog(request: req.result)
 | 
			
		||||
                            .show(context);
 | 
			
		||||
                        Navigator.of(context, rootNavigator: false).pop();
 | 
			
		||||
                      },
 | 
			
		||||
                      onPressed: _recoveryKeyInputLoading
 | 
			
		||||
                          ? null
 | 
			
		||||
                          : () async {
 | 
			
		||||
                              final req = await showFutureLoadingDialog(
 | 
			
		||||
                                context: context,
 | 
			
		||||
                                future: () => widget
 | 
			
		||||
                                    .client.userDeviceKeys[widget.client.userID]
 | 
			
		||||
                                    .startVerification(),
 | 
			
		||||
                              );
 | 
			
		||||
                              if (req.error != null) return;
 | 
			
		||||
                              await KeyVerificationDialog(request: req.result)
 | 
			
		||||
                                  .show(context);
 | 
			
		||||
                              Navigator.of(context, rootNavigator: false).pop();
 | 
			
		||||
                            },
 | 
			
		||||
                    ),
 | 
			
		||||
                    const SizedBox(height: 16),
 | 
			
		||||
                    ElevatedButton.icon(
 | 
			
		||||
@ -260,20 +270,22 @@ class _BootstrapDialogState extends State<BootstrapDialog> {
 | 
			
		||||
                      ),
 | 
			
		||||
                      icon: const Icon(Icons.delete_outlined),
 | 
			
		||||
                      label: Text(L10n.of(context).securityKeyLost),
 | 
			
		||||
                      onPressed: () async {
 | 
			
		||||
                        if (OkCancelResult.ok ==
 | 
			
		||||
                            await showOkCancelAlertDialog(
 | 
			
		||||
                              useRootNavigator: false,
 | 
			
		||||
                              context: context,
 | 
			
		||||
                              title: L10n.of(context).securityKeyLost,
 | 
			
		||||
                              message: L10n.of(context).wipeChatBackup,
 | 
			
		||||
                              okLabel: L10n.of(context).ok,
 | 
			
		||||
                              cancelLabel: L10n.of(context).cancel,
 | 
			
		||||
                              isDestructiveAction: true,
 | 
			
		||||
                            )) {
 | 
			
		||||
                          setState(() => _createBootstrap(true));
 | 
			
		||||
                        }
 | 
			
		||||
                      },
 | 
			
		||||
                      onPressed: _recoveryKeyInputLoading
 | 
			
		||||
                          ? null
 | 
			
		||||
                          : () async {
 | 
			
		||||
                              if (OkCancelResult.ok ==
 | 
			
		||||
                                  await showOkCancelAlertDialog(
 | 
			
		||||
                                    useRootNavigator: false,
 | 
			
		||||
                                    context: context,
 | 
			
		||||
                                    title: L10n.of(context).securityKeyLost,
 | 
			
		||||
                                    message: L10n.of(context).wipeChatBackup,
 | 
			
		||||
                                    okLabel: L10n.of(context).ok,
 | 
			
		||||
                                    cancelLabel: L10n.of(context).cancel,
 | 
			
		||||
                                    isDestructiveAction: true,
 | 
			
		||||
                                  )) {
 | 
			
		||||
                                setState(() => _createBootstrap(true));
 | 
			
		||||
                              }
 | 
			
		||||
                            },
 | 
			
		||||
                    )
 | 
			
		||||
                  ],
 | 
			
		||||
                ),
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,6 @@ import 'matrix_sdk_extensions.dart/flutter_matrix_hive_database.dart';
 | 
			
		||||
abstract class ClientManager {
 | 
			
		||||
  static const String clientNamespace = 'im.fluffychat.store.clients';
 | 
			
		||||
  static Future<List<Client>> getClients() async {
 | 
			
		||||
    Logs().level = Level.warning;
 | 
			
		||||
    if (PlatformInfos.isLinux) {
 | 
			
		||||
      Hive.init((await getApplicationSupportDirectory()).path);
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
@ -775,7 +775,7 @@ packages:
 | 
			
		||||
    description:
 | 
			
		||||
      path: "."
 | 
			
		||||
      ref: "krille/idb"
 | 
			
		||||
      resolved-ref: "60b2b6b5fcc45a5bedbe6eafee19258784e1a329"
 | 
			
		||||
      resolved-ref: "74037fb8ae0f4c4e1ac946d7c2057bf6e2da7aaf"
 | 
			
		||||
      url: "https://gitlab.com/famedly/company/frontend/famedlysdk.git"
 | 
			
		||||
    source: git
 | 
			
		||||
    version: "0.7.0-nullsafety.6"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user