From 926fab73408eb2d411e06790cbc4216fbde52605 Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Sat, 25 Jan 2025 01:49:30 +0100 Subject: [PATCH] wallet assistant (wip) --- assets/translations/en.json | 16 ++++- assets/translations/es.json | 16 ++++- lib/ui/widgets/add_wallet_assistant.dart | 85 ++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 lib/ui/widgets/add_wallet_assistant.dart diff --git a/assets/translations/en.json b/assets/translations/en.json index 8595e481..85dad465 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -362,6 +362,20 @@ "distance_rule": "Distance Rule", "idty_waiting_confirmation": "waiting for confirmation", "idty_waiting_certifications": "waiting for certifications", - "idty_waiting_distance_evaluation": "waiting for distance evaluation" + "idty_waiting_distance_evaluation": "waiting for distance evaluation", + "wallet_options_title": "What do you want to do?", + "create_wallet_option": "Create a new wallet", + "create_wallet_description": "Set up a brand-new wallet for your Ğ1 transactions", + "import_wallet_option": "Import an existing wallet", + "import_wallet_description": "Load a wallet you already have, using different methods", + "create_wallet_title": "Choose how to create your Ğ1 wallet", + "create_no_password_option": "No passwords", + "create_no_password_description": "Ideal for small amounts and quick access", + "create_with_password_option": "With passwords", + "create_with_password_description": "Legacy duniter v1 type wallet", + "create_with_mnemonics_option": "With mnemonic phrase", + "create_with_mnemonics_description": "Recoverable wallet using a seed phrase (recommended in duniter v2)", + "clipboard_import_mnemonic": "Import mnemonic phrase", + "clipboard_import_mnemonic_description": "Enter a mnemonic phrase to recover your wallet" } diff --git a/assets/translations/es.json b/assets/translations/es.json index 7a3fb2d7..269c835c 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -368,5 +368,19 @@ "distance_rule": "Regla de la Distancia", "idty_waiting_confirmation": "esperando confirmación", "idty_waiting_certifications": "esperando certificaciones", - "idty_waiting_distance_evaluation": "esperando evaluación de distancia" + "idty_waiting_distance_evaluation": "esperando evaluación de distancia", + "wallet_options_title": "¿Qué deseas hacer?", + "create_wallet_option": "Crear un monedero nuevo", + "create_wallet_description": "Configura un monedero nuevo para tus transacciones Ğ1", + "import_wallet_option": "Importar un monedero existente", + "import_wallet_description": "Carga un monedero que ya tienes utilizando diferentes métodos", + "create_wallet_title": "Elige cómo crear tu monedero Ğ1", + "create_no_password_option": "Sin contraseña", + "create_no_password_description": "Ideal para pequeñas cantidades y acceso rápido", + "create_with_password_option": "Con contraseñas", + "create_with_password_description": "Monedero clásico tipo duniter v1", + "create_with_mnemonics_option": "Con frase mnemónica", + "create_with_mnemonics_description": "Monedero recuperable utilizando una frase semilla (recomendado en Duniter v2)", + "clipboard_import_mnemonic": "Importar frase mnemónica", + "clipboard_import_mnemonic_description": "Introduce una frase mnemónica para recuperar tu monedero" } diff --git a/lib/ui/widgets/add_wallet_assistant.dart b/lib/ui/widgets/add_wallet_assistant.dart new file mode 100644 index 00000000..10c098c7 --- /dev/null +++ b/lib/ui/widgets/add_wallet_assistant.dart @@ -0,0 +1,85 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:material_symbols_icons/symbols.dart'; + +import 'fifth_screen/import_dialog.dart'; + +class WalletOptionsDialog extends StatelessWidget { + const WalletOptionsDialog({super.key}); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: <Widget>[ + Text(tr('wallet_options_title')), + ], + ), + content: SingleChildScrollView( + child: ListBody( + children: <Widget>[ + ListTile( + leading: const Icon(Icons.add), + title: Text(tr('create_wallet_option')), + subtitle: Text(tr('create_wallet_description')), + onTap: () => _showCreateWalletOptions(context), + ), + ListTile( + leading: const Icon(Icons.import_export), + title: Text(tr('import_wallet_option')), + subtitle: Text(tr('import_wallet_description')), + onTap: () => showSelectImportMethodDialog(context, 0)), + ], + ), + ), + actions: <Widget>[ + IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ); + } + + void _showCreateWalletOptions(BuildContext context) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text(tr('create_wallet_title')), + content: SingleChildScrollView( + child: ListBody( + children: <Widget>[ + ListTile( + leading: const Icon(Symbols.money_bag), + title: Text(tr('create_no_password_option')), + subtitle: Text(tr('create_no_password_description')), + onTap: () => Navigator.of(context).pop('no_password'), + ), + ListTile( + leading: const Icon(Icons.lock), + title: Text(tr('create_with_password_option')), + subtitle: Text(tr('create_with_password_description')), + onTap: () => Navigator.of(context).pop('with_password'), + ), + ListTile( + leading: const Icon(Icons.password), + title: Text(tr('create_with_mnemonics_option')), + subtitle: Text(tr('create_with_mnemonics_description')), + onTap: () => Navigator.of(context).pop('with_mnemonics'), + ), + ], + ), + ), + actions: <Widget>[ + IconButton( + icon: const Icon(Icons.close), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ); + }, + ); + } +} -- GitLab