From 611d715ded86a46c9120346be84d3c06b21c98b1 Mon Sep 17 00:00:00 2001 From: poka Date: Wed, 24 May 2023 18:27:40 +0200 Subject: [PATCH] change choose wallet in payment popup to dropdown --- assets/translations/en.json | 2 +- assets/translations/es.json | 2 +- lib/providers/generate_wallets.dart | 2 +- lib/screens/myWallets/wallets_home.dart | 1 - lib/screens/wallet_view.dart | 19 ++++- lib/widgets/payment_popup.dart | 107 ++++++++++++++---------- 6 files changed, 85 insertions(+), 48 deletions(-) diff --git a/assets/translations/en.json b/assets/translations/en.json index dab93e9..e4d25e9 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -23,7 +23,7 @@ "toUnlockEnterPassword": "To unlock your safe, enter your secret code, away from prying lizards:", "rememberPassword": "Keep this code in memory for 15 minutes", "myRootWallet": "My root wallet", - "currentWallet": "My current chest", + "currentWallet": "My current wallet", "wallet": "Wallet", "displayMnemonic": "Display my mnemonic sentence", "changePassword": "Change my password", diff --git a/assets/translations/es.json b/assets/translations/es.json index 89a7f77..dc783f8 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -23,7 +23,7 @@ "toUnlockEnterPassword": "Para desbloquear tu cofre, introduce tu contraseña, lejos de lagartijas curiosas:", "rememberPassword": "Mantener en memoria mi contraseña durante 15 minutos", "myRootWallet": "Mi monedero principal", - "currentWallet": "Mi cofre actual", + "currentWallet": "Mi monedero actual", "wallet": "monedero", "displayMnemonic": "Mostrar mi frase de restauración", "changePassword": "Cambiar mi contraseña", diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart index 65331ca..152ca1b 100644 --- a/lib/providers/generate_wallets.dart +++ b/lib/providers/generate_wallets.dart @@ -20,7 +20,7 @@ class GenerateWalletsProvider with ChangeNotifier { // NewWallet generatedWallet; durt.NewWallet? actualWallet; - FocusNode walletNameFocus = FocusNode(); + final walletNameFocus = FocusNode(); Color? askedWordColor = Colors.black; bool isAskedWordValid = false; int scanedValidWalletNumber = -1; diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 3c1a327..2882b4d 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -24,7 +24,6 @@ import 'package:gecko/widgets/payment_popup.dart'; import 'package:provider/provider.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; -// import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class WalletsHome extends StatefulWidget { const WalletsHome({Key? key}) : super(key: key); diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index 50fffe0..4dc02eb 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -344,8 +344,23 @@ class WalletViewScreen extends StatelessWidget { key: keyPay, splashColor: yellowC, onTap: sub.nodeConnected - ? () { - paymentPopup(context, address, username); + ? () async { + String? pin; + if (myWalletProvider.pinCode == '') { + pin = await Navigator.push( + context, + MaterialPageRoute( + builder: (homeContext) { + return UnlockingWallet( + wallet: defaultWallet); + }, + ), + ); + } + if (pin != null || + myWalletProvider.pinCode != '') { + paymentPopup(context, address, username); + } } : null, child: const Padding( diff --git a/lib/widgets/payment_popup.dart b/lib/widgets/payment_popup.dart index eeddcfc..502c23f 100644 --- a/lib/widgets/payment_popup.dart +++ b/lib/widgets/payment_popup.dart @@ -4,12 +4,12 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; +import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; -import 'package:gecko/screens/myWallets/choose_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/transaction_in_progress.dart'; import 'package:gecko/widgets/balance.dart'; @@ -24,8 +24,10 @@ void paymentPopup(BuildContext context, String toAddress, String username) { double fees = 0; const double shapeSize = 20; - final defaultWallet = myWalletProvider.getDefaultWallet(); + var defaultWallet = myWalletProvider.getDefaultWallet(); bool canValidate = false; + final amountFocus = FocusNode(); + final dropdownKey = GlobalKey(); Future executeTransfert() async { String? pin; @@ -60,6 +62,9 @@ void paymentPopup(BuildContext context, String toAddress, String username) { } } + myWalletProvider.readAllWallets(); + log.d(myWalletProvider.listWallets); + showModalBottomSheet( shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( @@ -140,49 +145,66 @@ void paymentPopup(BuildContext context, String toAddress, String username) { ), const SizedBox(height: 10), Consumer(builder: (context, sub, _) { - return InkWell( - key: keyChangeChest, - onTap: () async { - String? pin; - if (myWalletProvider.pinCode == '') { - pin = await Navigator.push( - context, - MaterialPageRoute( - builder: (homeContext) { - return UnlockingWallet( - wallet: defaultWallet); - }, + return DropdownButton( + dropdownColor: const Color(0xffffeed1), + elevation: 12, + key: dropdownKey, + value: defaultWallet, + // onTap: () async { + // await Future.delayed(const Duration(milliseconds: 10)); + // amountFocus.requestFocus(); + // }, + selectedItemBuilder: (_) { + return myWalletProvider.listWallets + .map((WalletData wallet) { + return Container( + width: 408, + decoration: BoxDecoration( + border: Border.all( + color: Colors.blueAccent.shade200, + width: 2), + borderRadius: const BorderRadius.all( + Radius.circular(10.0)), ), + padding: const EdgeInsets.all(10), + child: Row(children: [ + Text(g1WalletsBox + .get(wallet.address) + ?.username ?? + wallet.name!), + const Spacer(), + Balance(address: wallet.address, size: 20), + ]), ); - } - if (pin != null || myWalletProvider.pinCode != '') { - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return ChooseWalletScreen( - pin: pin ?? myWalletProvider.pinCode); - }), - ); - } + }).toList(); }, - child: Container( - width: double.infinity, - decoration: BoxDecoration( - border: Border.all( - color: Colors.blueAccent.shade200, width: 2), - borderRadius: - const BorderRadius.all(Radius.circular(10.0)), - ), - padding: const EdgeInsets.all(10), - child: Row(children: [ - Text(g1WalletsBox - .get(defaultWallet.address) - ?.username ?? - defaultWallet.name!), - const Spacer(), - Balance(address: defaultWallet.address, size: 20), - ]), - ), + onChanged: (WalletData? newSelectedWallet) async { + defaultWallet = newSelectedWallet!; + await sub.setCurrentWallet(newSelectedWallet); + sub.reload(); + amountFocus.requestFocus(); + setState(() {}); + }, + items: myWalletProvider.listWallets + .map((WalletData wallet) { + return DropdownMenuItem( + value: wallet, + child: Container( + color: const Color(0xffffeed1), + width: 408, + height: 80, + padding: const EdgeInsets.all(10), + child: Row(children: [ + Text(g1WalletsBox + .get(wallet.address) + ?.username ?? + wallet.name!), + const Spacer(), + Balance(address: wallet.address, size: 20), + ]), + ), + ); + }).toList(), ); }), const SizedBox(height: 12), @@ -252,6 +274,7 @@ void paymentPopup(BuildContext context, String toAddress, String username) { key: keyAmountField, controller: walletViewProvider.payAmount, autofocus: true, + focusNode: amountFocus, maxLines: 1, textAlign: TextAlign.center, keyboardType: const TextInputType.numberWithOptions(