Skip to content
Snippets Groups Projects
Commit 87666627 authored by poka's avatar poka
Browse files

feat: show wallet options directly if only one wallet

parent 12915170
No related branches found
No related tags found
No related merge requests found
Pipeline #38436 failed
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
"warningForgotPassword": "In a blockchain, there is no email recovery procedure. Only your recovery phrase can allow you to recover your Ğ1 at any time.", "warningForgotPassword": "In a blockchain, there is no email recovery procedure. Only your recovery phrase can allow you to recover your Ğ1 at any time.",
"fastAppDescription": "The {} app payment\nfaster than a reptile of Vietnam", "fastAppDescription": "The {} app payment\nfaster than a reptile of Vietnam",
"createWallet": "Create a wallet", "createWallet": "Create a wallet",
"createNewWallet": "Create a new wallet",
"restoreWallet": "Restore my wallets", "restoreWallet": "Restore my wallets",
"parameters": "Parameters", "parameters": "Parameters",
"chooseAnotherMnemonic": "Choose an other\nmnemonic sentence", "chooseAnotherMnemonic": "Choose an other\nmnemonic sentence",
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
"warningForgotPassword": "En una cadena de bloques o blockchain, no hay procedimiento de recuperación mediante correo electrónico. Sólo tu frase de recuperación puede permitirte recuperar tus Ğ1 en cualquier momento.", "warningForgotPassword": "En una cadena de bloques o blockchain, no hay procedimiento de recuperación mediante correo electrónico. Sólo tu frase de recuperación puede permitirte recuperar tus Ğ1 en cualquier momento.",
"fastAppDescription": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam", "fastAppDescription": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam",
"createWallet": "Crear un monedero", "createWallet": "Crear un monedero",
"createNewWallet": "Crear un nuevo monedero",
"restoreWallet": "Restaurar mis monederos", "restoreWallet": "Restaurar mis monederos",
"parameters": "Parámetros", "parameters": "Parámetros",
"chooseAnotherMnemonic": "Elige otra frase de restauración", "chooseAnotherMnemonic": "Elige otra frase de restauración",
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
"warningForgotPassword": "Dans une blockchain, pas de procédure de récupération par mail. Seule votre phrase de restauration peut vous permettre de récupérer vos Ğ1 à tout moment.", "warningForgotPassword": "Dans une blockchain, pas de procédure de récupération par mail. Seule votre phrase de restauration peut vous permettre de récupérer vos Ğ1 à tout moment.",
"fastAppDescription": "L’application de paiement {}\nplus rapide qu’un reptile du Vietnam", "fastAppDescription": "L’application de paiement {}\nplus rapide qu’un reptile du Vietnam",
"createWallet": "Créer un portefeuille", "createWallet": "Créer un portefeuille",
"createNewWallet": "Créer un nouveau portefeuille",
"restoreWallet": "Restaurer mes portefeuilles", "restoreWallet": "Restaurer mes portefeuilles",
"parameters": "Paramètres", "parameters": "Paramètres",
"chooseAnotherMnemonic": "Choisir une autre phrase", "chooseAnotherMnemonic": "Choisir une autre phrase",
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
import 'package:gecko/models/scale_functions.dart'; import 'package:gecko/models/scale_functions.dart';
import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/chest_provider.dart'; import 'package:gecko/providers/chest_provider.dart';
...@@ -17,15 +16,11 @@ import 'package:gecko/widgets/commons/top_appbar.dart'; ...@@ -17,15 +16,11 @@ import 'package:gecko/widgets/commons/top_appbar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class ChestOptions extends StatelessWidget { class ChestOptions extends StatelessWidget {
const ChestOptions({Key? keyMyWallets, required this.walletProvider}) const ChestOptions({Key? keyMyWallets}) : super(key: keyMyWallets);
: super(key: keyMyWallets);
final MyWalletsProvider walletProvider;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final chestProvider = Provider.of<ChestProvider>(context, listen: false); final currentChest = chestBox.get(configBox.get('currentChest'))!;
ChestData currentChest = chestBox.get(configBox.get('currentChest'))!;
return Scaffold( return Scaffold(
backgroundColor: backgroundColor, backgroundColor: backgroundColor,
...@@ -35,13 +30,36 @@ class ChestOptions extends StatelessWidget { ...@@ -35,13 +30,36 @@ class ChestOptions extends StatelessWidget {
body: Stack(children: [ body: Stack(children: [
Builder( Builder(
builder: (ctx) => SafeArea( builder: (ctx) => SafeArea(
child: Column(children: <Widget>[ child: Column(
children: [
ScaledSizedBox(height: 20), ScaledSizedBox(height: 20),
ChestOptionsContent(),
],
),
),
),
const OfflineInfo(),
]),
);
}
}
class ChestOptionsContent extends StatelessWidget {
const ChestOptionsContent({
super.key,
});
@override
Widget build(BuildContext context) {
final chestProvider = Provider.of<ChestProvider>(context, listen: false);
final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false);
final currentChest = chestBox.get(configBox.get('currentChest'))!;
final isAlone = myWalletProvider.listWallets.length == 1;
return Column(children: <Widget>[
InkWell( InkWell(
key: keyShowSeed, key: keyShowSeed,
onTap: () async { onTap: () async {
final myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
if (!await myWalletProvider.askPinCode()) return; if (!await myWalletProvider.askPinCode()) return;
Navigator.push( Navigator.push(
...@@ -49,7 +67,7 @@ class ChestOptions extends StatelessWidget { ...@@ -49,7 +67,7 @@ class ChestOptions extends StatelessWidget {
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return ShowSeed( return ShowSeed(
walletName: currentChest.name, walletName: currentChest.name,
walletProvider: walletProvider, walletProvider: myWalletProvider,
); );
}), }),
); );
...@@ -112,16 +130,13 @@ class ChestOptions extends StatelessWidget { ...@@ -112,16 +130,13 @@ class ChestOptions extends StatelessWidget {
ScaledSizedBox(width: 18), ScaledSizedBox(width: 18),
Text( Text(
'changePassword'.tr(), 'changePassword'.tr(),
style: scaledTextStyle( style: scaledTextStyle(fontSize: 16, color: sub.nodeConnected ? Colors.grey[500] : Colors.grey[500]),
fontSize: 16,
color: sub.nodeConnected
? Colors.grey[500]
: Colors.grey[500]),
), ),
])), ])),
); );
}), }),
ScaledSizedBox(height: 2), ScaledSizedBox(height: 2),
if (!isAlone)
Consumer<SubstrateSdk>(builder: (context, sub, _) { Consumer<SubstrateSdk>(builder: (context, sub, _) {
return InkWell( return InkWell(
key: keycreateRootDerivation, key: keycreateRootDerivation,
...@@ -148,11 +163,7 @@ class ChestOptions extends StatelessWidget { ...@@ -148,11 +163,7 @@ class ChestOptions extends StatelessWidget {
ScaledSizedBox(width: 23), ScaledSizedBox(width: 23),
Text( Text(
'createDerivation'.tr(), 'createDerivation'.tr(),
style: scaledTextStyle( style: scaledTextStyle(fontSize: 16, color: sub.nodeConnected ? Colors.black : Colors.grey[500]),
fontSize: 16,
color: sub.nodeConnected
? Colors.black
: Colors.grey[500]),
), ),
]), ]),
), ),
...@@ -183,11 +194,6 @@ class ChestOptions extends StatelessWidget { ...@@ -183,11 +194,6 @@ class ChestOptions extends StatelessWidget {
]), ]),
), ),
), ),
]), ]);
),
),
const OfflineInfo(),
]),
);
} }
} }
This diff is collapsed.
...@@ -9,6 +9,7 @@ import 'package:gecko/providers/my_wallets.dart'; ...@@ -9,6 +9,7 @@ import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/screens/myWallets/wallet_options.dart';
import 'package:gecko/widgets/bottom_app_bar.dart'; import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:gecko/widgets/buttons/add_new_derivation_button.dart'; import 'package:gecko/widgets/buttons/add_new_derivation_button.dart';
import 'package:gecko/widgets/buttons/chest_options_buttons.dart'; import 'package:gecko/widgets/buttons/chest_options_buttons.dart';
...@@ -20,24 +21,40 @@ import 'package:gecko/widgets/wallet_tile_membre.dart'; ...@@ -20,24 +21,40 @@ import 'package:gecko/widgets/wallet_tile_membre.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
class WalletsHome extends StatefulWidget { class WalletsHome extends StatelessWidget {
const WalletsHome({super.key}); const WalletsHome({super.key});
@override @override
State<WalletsHome> createState() => _WalletsHomeState(); Widget build(BuildContext context) {
final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false);
return FutureBuilder<List<WalletData>>(
future: myWalletProvider.readAllWallets(myWalletProvider.getCurrentChest()),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(color: orangeC),
),
);
} }
class _WalletsHomeState extends State<WalletsHome> { // If only one wallet, directly show WalletOptions
@override if (myWalletProvider.listWallets.length == 1) {
void initState() { return WalletOptions(wallet: myWalletProvider.listWallets[0]);
super.initState();
} }
// Otherwise show normal WalletsHome screen
return _WalletsHomeContent();
},
);
}
}
class _WalletsHomeContent extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final myWalletProvider = final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false);
Provider.of<MyWalletsProvider>(context, listen: false);
final currentChestNumber = myWalletProvider.getCurrentChest(); final currentChestNumber = myWalletProvider.getCurrentChest();
final ChestData currentChest = chestBox.get(currentChestNumber)!; final ChestData currentChest = chestBox.get(currentChestNumber)!;
...@@ -55,16 +72,12 @@ class _WalletsHomeState extends State<WalletsHome> { ...@@ -55,16 +72,12 @@ class _WalletsHomeState extends State<WalletsHome> {
ScaledSizedBox(width: 17), ScaledSizedBox(width: 17),
Text( Text(
currentChest.name!, currentChest.name!,
style: scaledTextStyle( style: scaledTextStyle(color: Colors.grey[850], fontSize: 16, fontWeight: FontWeight.w500),
color: Colors.grey[850],
fontSize: 16,
fontWeight: FontWeight.w500),
), ),
], ],
), ),
), ),
bottomNavigationBar: bottomNavigationBar: Consumer<MyWalletsProvider>(builder: (context, _, __) {
Consumer<MyWalletsProvider>(builder: (context, _, __) {
return myWalletProvider.lastFlyBy == null return myWalletProvider.lastFlyBy == null
? const GeckoBottomAppBar( ? const GeckoBottomAppBar(
actualRoute: 'safeHome', actualRoute: 'safeHome',
...@@ -77,8 +90,7 @@ class _WalletsHomeState extends State<WalletsHome> { ...@@ -77,8 +90,7 @@ class _WalletsHomeState extends State<WalletsHome> {
body: FutureBuilder( body: FutureBuilder(
future: myWalletProvider.readAllWallets(currentChestNumber), future: myWalletProvider.readAllWallets(currentChestNumber),
builder: (context, snapshot) { builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done || if (snapshot.connectionState != ConnectionState.done || snapshot.hasError) {
snapshot.hasError) {
return Center( return Center(
child: ScaledSizedBox( child: ScaledSizedBox(
height: 50, height: 50,
...@@ -159,8 +171,7 @@ class _WalletsHomeState extends State<WalletsHome> { ...@@ -159,8 +171,7 @@ class _WalletsHomeState extends State<WalletsHome> {
Text( Text(
'explainDraggableWallet'.tr(), 'explainDraggableWallet'.tr(),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: scaledTextStyle( style: scaledTextStyle(fontSize: 16, fontWeight: FontWeight.w500),
fontSize: 16, fontWeight: FontWeight.w500),
), ),
], ],
)) ))
...@@ -176,8 +187,7 @@ class _WalletsHomeState extends State<WalletsHome> { ...@@ -176,8 +187,7 @@ class _WalletsHomeState extends State<WalletsHome> {
); );
// configBox.delete('showDraggableTutorial'); // configBox.delete('showDraggableTutorial');
final bool showDraggableTutorial = final bool showDraggableTutorial = configBox.get('showDraggableTutorial') ?? true;
configBox.get('showDraggableTutorial') ?? true;
if (listWallets.length > 1 && showDraggableTutorial) { if (listWallets.length > 1 && showDraggableTutorial) {
tutorialCoachMark.show(context: context); tutorialCoachMark.show(context: context);
...@@ -195,23 +205,14 @@ class _WalletsHomeState extends State<WalletsHome> { ...@@ -195,23 +205,14 @@ class _WalletsHomeState extends State<WalletsHome> {
child: WalletTileMembre(repository: idtyWallet), child: WalletTileMembre(repository: idtyWallet),
), ),
), ),
SliverGrid.count( SliverGrid.count(key: keyListWallets, crossAxisCount: nTule, childAspectRatio: 1, crossAxisSpacing: 0, mainAxisSpacing: 0, children: <Widget>[
key: keyListWallets,
crossAxisCount: nTule,
childAspectRatio: 1,
crossAxisSpacing: 0,
mainAxisSpacing: 0,
children: <Widget>[
for (WalletData repository in listWalletsWithoutIdty) for (WalletData repository in listWalletsWithoutIdty)
DragTuleAction( DragTuleAction(
wallet: repository, wallet: repository,
child: WalletTile(repository: repository), child: WalletTile(repository: repository),
), ),
Consumer<SubstrateSdk>(builder: (context, sub, _) { Consumer<SubstrateSdk>(builder: (context, sub, _) {
return sub.nodeConnected && return sub.nodeConnected && myWalletProvider.listWallets.length < maxWalletsInSafe ? const AddNewDerivationButton() : const Text('');
myWalletProvider.listWallets.length < maxWalletsInSafe
? const AddNewDerivationButton()
: const Text('');
}), }),
]), ]),
const SliverToBoxAdapter(child: ChestOptionsButtons()), const SliverToBoxAdapter(child: ChestOptionsButtons()),
......
...@@ -4,10 +4,8 @@ import 'package:flutter_svg/flutter_svg.dart'; ...@@ -4,10 +4,8 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/scale_functions.dart'; import 'package:gecko/models/scale_functions.dart';
import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/screens/myWallets/chest_options.dart'; import 'package:gecko/screens/myWallets/chest_options.dart';
import 'package:gecko/screens/myWallets/import_g1_v1.dart'; import 'package:gecko/screens/myWallets/import_g1_v1.dart';
import 'package:provider/provider.dart';
class ChestOptionsButtons extends StatelessWidget { class ChestOptionsButtons extends StatelessWidget {
const ChestOptionsButtons({ const ChestOptionsButtons({
...@@ -16,7 +14,6 @@ class ChestOptionsButtons extends StatelessWidget { ...@@ -16,7 +14,6 @@ class ChestOptionsButtons extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final myWalletProvider = Provider.of<MyWalletsProvider>(context);
return Column(children: [ return Column(children: [
ScaledSizedBox(height: 50), ScaledSizedBox(height: 50),
ScaledSizedBox( ScaledSizedBox(
...@@ -35,7 +32,7 @@ class ChestOptionsButtons extends StatelessWidget { ...@@ -35,7 +32,7 @@ class ChestOptionsButtons extends StatelessWidget {
onPressed: () => Navigator.push( onPressed: () => Navigator.push(
context, context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return ChestOptions(walletProvider: myWalletProvider); return ChestOptions();
}), }),
), ),
label: Text( label: Text(
......
...@@ -2,7 +2,7 @@ name: gecko ...@@ -2,7 +2,7 @@ name: gecko
description: Pay with G1. description: Pay with G1.
publish_to: "none" publish_to: "none"
version: 0.1.11+82 version: 0.1.12+83
environment: environment:
sdk: ^3.5.3 sdk: ^3.5.3
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment