From f36529819c3daec2b37587b20c0df3f0f9a11aab Mon Sep 17 00:00:00 2001 From: poka Date: Thu, 18 Nov 2021 04:41:45 +0100 Subject: [PATCH] Add chest options for standart chests: Can change pin code and delete chest --- lib/screens/myWallets/chest_options.dart | 102 ++++++++++++++++++++ lib/screens/myWallets/choose_chest.dart | 7 +- lib/screens/myWallets/generate_wallets.dart | 22 ++++- lib/screens/myWallets/wallet_options.dart | 8 +- lib/screens/myWallets/wallets_home.dart | 13 ++- lib/screens/settings.dart | 6 +- 6 files changed, 140 insertions(+), 18 deletions(-) create mode 100644 lib/screens/myWallets/chest_options.dart diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart new file mode 100644 index 0000000..dfae9b7 --- /dev/null +++ b/lib/screens/myWallets/chest_options.dart @@ -0,0 +1,102 @@ +import 'dart:ui'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:gecko/globals.dart'; +import 'package:gecko/models/chest_data.dart'; +import 'package:flutter/services.dart'; +import 'package:gecko/models/chest_provider.dart'; +import 'package:gecko/models/my_wallets.dart'; +import 'package:gecko/screens/myWallets/change_pin.dart'; +import 'package:provider/provider.dart'; + +class ChestOptions extends StatelessWidget { + const ChestOptions({Key keyMyWallets, @required this.walletProvider}) + : super(key: keyMyWallets); + final MyWalletsProvider walletProvider; + + @override + Widget build(BuildContext context) { + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + ChestProvider _chestProvider = + Provider.of(context, listen: false); + + ChestData currentChest = chestBox.get(configBox.get('currentChest')); + + return Scaffold( + resizeToAvoidBottomInset: false, + appBar: AppBar( + toolbarHeight: 60 * ratio, + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.black), + onPressed: () { + Navigator.popUntil( + context, + ModalRoute.withName('/mywallets'), + ); + }), + title: SizedBox( + height: 22, + child: Text(currentChest.name), + )), + body: Builder( + builder: (ctx) => SafeArea( + child: Column(children: [ + SizedBox(height: 30 * ratio), + InkWell( + key: const Key('changePin'), + onTap: () async { + // await _chestProvider.changePin(context, cesiumWallet); + walletProvider.pinCode = await Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return ChangePinScreen( + walletName: currentChest.name, + walletProvider: walletProvider, + ); + }, + ), + ); + }, + child: SizedBox( + height: 50, + child: Row(children: [ + const SizedBox(width: 28), + Image.asset( + 'assets/chests/secret_code.png', + ), + const SizedBox(width: 18), + const Text('Changer mon code secret', + style: TextStyle(fontSize: 20, color: Colors.black)), + ])), + ), + SizedBox(height: 10 * ratio), + InkWell( + key: const Key('deleteChest'), + onTap: () async { + await _chestProvider.deleteChest(context, currentChest); + }, + child: SizedBox( + height: 50, + child: Row(children: [ + const SizedBox(width: 33), + Image.asset( + 'assets/walletOptions/trash.png', + ), + const SizedBox(width: 24), + const Text( + 'Supprimer ce coffre', + style: TextStyle( + fontSize: 20, + color: Color(0xffD80000), + ), + ), + ]), + ), + ), + ]), + ), + ), + ); + } +} diff --git a/lib/screens/myWallets/choose_chest.dart b/lib/screens/myWallets/choose_chest.dart index d24e37e..6377d2e 100644 --- a/lib/screens/myWallets/choose_chest.dart +++ b/lib/screens/myWallets/choose_chest.dart @@ -2,10 +2,9 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; -import 'package:gecko/screens/common_elements.dart'; import 'package:flutter/material.dart'; +import 'package:gecko/screens/myWallets/generate_wallets.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; -import 'package:gecko/screens/onBoarding/1.dart'; import 'package:carousel_slider/carousel_slider.dart'; import 'package:provider/provider.dart'; @@ -137,7 +136,9 @@ class _ChooseChestState extends State { onTap: () { Navigator.push( context, - FaderTransition(page: OnboardingStepOne(), isFast: false), + MaterialPageRoute(builder: (context) { + return GenerateFastChestScreen(); + }), ); }, child: SizedBox( diff --git a/lib/screens/myWallets/generate_wallets.dart b/lib/screens/myWallets/generate_wallets.dart index a4d851e..b85fdba 100644 --- a/lib/screens/myWallets/generate_wallets.dart +++ b/lib/screens/myWallets/generate_wallets.dart @@ -1,14 +1,16 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/generate_wallets.dart'; +import 'package:gecko/models/my_wallets.dart'; import 'package:gecko/screens/myWallets/confirm_wallet_storage.dart'; import 'package:flutter/material.dart'; +import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:printing/printing.dart'; import 'package:provider/provider.dart'; import 'package:super_tooltip/super_tooltip.dart'; // ignore: must_be_immutable -class GenerateWalletsScreen extends StatelessWidget { +class GenerateFastChestScreen extends StatelessWidget { SuperTooltip tooltip; bool hasError = false; String validPin = 'NO PIN'; @@ -18,7 +20,7 @@ class GenerateWalletsScreen extends StatelessWidget { final GlobalKey _toolTipSentence = GlobalKey(); final GlobalKey _toolTipSecret = GlobalKey(); - GenerateWalletsScreen({Key key}) : super(key: key); + GenerateFastChestScreen({Key key}) : super(key: key); @override Widget build(BuildContext context) { @@ -27,6 +29,8 @@ class GenerateWalletsScreen extends StatelessWidget { Provider.of(context); _generateWalletProvider.generateMnemonic(); + MyWalletsProvider _myWalletClass = MyWalletsProvider(); + return Scaffold( appBar: AppBar( toolbarHeight: 60 * ratio, @@ -102,10 +106,10 @@ class GenerateWalletsScreen extends StatelessWidget { onPrimary: Colors.black, // foreground ), onPressed: _generateWalletProvider.walletIsGenerated - ? () { + ? () async { _generateWalletProvider.nbrWord = _generateWalletProvider.getRandomInt(); - Navigator.push( + await Navigator.push( context, MaterialPageRoute(builder: (context) { return ConfirmStoreWallet( @@ -116,6 +120,16 @@ class GenerateWalletsScreen extends StatelessWidget { .actualWallet); }), ); + await Future.delayed( + const Duration(milliseconds: 20)); + await Navigator.pushAndRemoveUntil(context, + MaterialPageRoute(builder: (context) { + return UnlockingWallet( + wallet: _myWalletClass.getDefaultWallet( + configBox.get('currentChest')), + action: "mywallets", + ); + }), ModalRoute.withName('/')); } : null, child: const Text('Enregistrer ce trousseau', diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index fc1dc99..1e0ca91 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -287,7 +287,7 @@ class WalletOptions extends StatelessWidget { Image.asset( 'assets/walletOptions/key.png', ), - const SizedBox(width: 10), + const SizedBox(width: 20), Text("${shortPubkey.split(':')[0]}:", style: const TextStyle( fontSize: 22, @@ -341,7 +341,7 @@ class WalletOptions extends StatelessWidget { Image.asset( 'assets/walletOptions/clock.png', ), - const SizedBox(width: 12), + const SizedBox(width: 22), const Text('Historique des transactions', style: TextStyle(fontSize: 20, color: Colors.black)), @@ -368,7 +368,7 @@ class WalletOptions extends StatelessWidget { child: Image.asset( 'assets/walletOptions/android-checkmark.png', )), - const SizedBox(width: 12), + const SizedBox(width: 22), Text( _walletOptions.isDefaultWallet ? 'Ce portefeuille est celui par defaut' @@ -400,7 +400,7 @@ class WalletOptions extends StatelessWidget { Image.asset( 'assets/walletOptions/trash.png', ), - const SizedBox(width: 14), + const SizedBox(width: 24), const Text('Supprimer ce portefeuille', style: TextStyle( fontSize: 20, color: Color(0xffD80000))), diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 26af3ba..c323c1e 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -8,6 +8,7 @@ import 'package:gecko/models/wallet_options.dart'; import 'package:flutter/material.dart'; import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/myWallets/cesium_wallet_options.dart'; +import 'package:gecko/screens/myWallets/chest_options.dart'; import 'package:gecko/screens/myWallets/choose_chest.dart'; import 'package:gecko/screens/myWallets/wallet_options.dart'; import 'package:gecko/screens/onBoarding/0_no_keychain_found.dart'; @@ -77,7 +78,8 @@ class WalletsHome extends StatelessWidget { // ]); // } - Widget chestOptions(BuildContext context) { + Widget chestOptions( + BuildContext context, MyWalletsProvider _myWalletProvider) { return Column(children: [ const SizedBox(height: 50), SizedBox( @@ -92,7 +94,12 @@ class WalletsHome extends StatelessWidget { primary: floattingYellow, // background onPrimary: Colors.black, // foreground ), - onPressed: () => null, + onPressed: () => Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return ChestOptions(walletProvider: _myWalletProvider); + }), + ), label: const Text( " Paramétrer ce coffre", style: TextStyle( @@ -286,7 +293,7 @@ class WalletsHome extends StatelessWidget { // )) ]), // SliverToBoxAdapter(child: Spacer()), - SliverToBoxAdapter(child: chestOptions(context)), + SliverToBoxAdapter(child: chestOptions(context, _myWalletProvider)), ]); } diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 8551d09..9494df2 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -74,11 +74,9 @@ class SettingsScreen extends StatelessWidget { onPressed: () => Navigator.push( context, MaterialPageRoute(builder: (context) { - return GenerateWalletsScreen(); + return GenerateFastChestScreen(); }), - ).then((value) => { - if (value == true) {Navigator.pop(context)} - }), + ), child: const Text("Générer un nouveau trousseau", style: TextStyle(fontSize: 16)))), Expanded(