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 @@
"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",
"createWallet": "Create a wallet",
"createNewWallet": "Create a new wallet",
"restoreWallet": "Restore my wallets",
"parameters": "Parameters",
"chooseAnotherMnemonic": "Choose an other\nmnemonic sentence",
......
......@@ -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.",
"fastAppDescription": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam",
"createWallet": "Crear un monedero",
"createNewWallet": "Crear un nuevo monedero",
"restoreWallet": "Restaurar mis monederos",
"parameters": "Parámetros",
"chooseAnotherMnemonic": "Elige otra frase de restauración",
......
......@@ -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.",
"fastAppDescription": "L’application de paiement {}\nplus rapide qu’un reptile du Vietnam",
"createWallet": "Créer un portefeuille",
"createNewWallet": "Créer un nouveau portefeuille",
"restoreWallet": "Restaurer mes portefeuilles",
"parameters": "Paramètres",
"chooseAnotherMnemonic": "Choisir une autre phrase",
......
......@@ -3,7 +3,6 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
import 'package:gecko/models/scale_functions.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/chest_provider.dart';
......@@ -17,15 +16,11 @@ import 'package:gecko/widgets/commons/top_appbar.dart';
import 'package:provider/provider.dart';
class ChestOptions extends StatelessWidget {
const ChestOptions({Key? keyMyWallets, required this.walletProvider})
: super(key: keyMyWallets);
final MyWalletsProvider walletProvider;
const ChestOptions({Key? keyMyWallets}) : super(key: keyMyWallets);
@override
Widget build(BuildContext context) {
final chestProvider = Provider.of<ChestProvider>(context, listen: false);
ChestData currentChest = chestBox.get(configBox.get('currentChest'))!;
final currentChest = chestBox.get(configBox.get('currentChest'))!;
return Scaffold(
backgroundColor: backgroundColor,
......@@ -35,13 +30,36 @@ class ChestOptions extends StatelessWidget {
body: Stack(children: [
Builder(
builder: (ctx) => SafeArea(
child: Column(children: <Widget>[
child: Column(
children: [
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(
key: keyShowSeed,
onTap: () async {
final myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
if (!await myWalletProvider.askPinCode()) return;
Navigator.push(
......@@ -49,7 +67,7 @@ class ChestOptions extends StatelessWidget {
MaterialPageRoute(builder: (context) {
return ShowSeed(
walletName: currentChest.name,
walletProvider: walletProvider,
walletProvider: myWalletProvider,
);
}),
);
......@@ -112,16 +130,13 @@ class ChestOptions extends StatelessWidget {
ScaledSizedBox(width: 18),
Text(
'changePassword'.tr(),
style: scaledTextStyle(
fontSize: 16,
color: sub.nodeConnected
? Colors.grey[500]
: Colors.grey[500]),
style: scaledTextStyle(fontSize: 16, color: sub.nodeConnected ? Colors.grey[500] : Colors.grey[500]),
),
])),
);
}),
ScaledSizedBox(height: 2),
if (!isAlone)
Consumer<SubstrateSdk>(builder: (context, sub, _) {
return InkWell(
key: keycreateRootDerivation,
......@@ -148,11 +163,7 @@ class ChestOptions extends StatelessWidget {
ScaledSizedBox(width: 23),
Text(
'createDerivation'.tr(),
style: scaledTextStyle(
fontSize: 16,
color: sub.nodeConnected
? Colors.black
: Colors.grey[500]),
style: scaledTextStyle(fontSize: 16, color: sub.nodeConnected ? Colors.black : Colors.grey[500]),
),
]),
),
......@@ -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';
import 'package:gecko/models/wallet_data.dart';
import 'package:flutter/material.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/buttons/add_new_derivation_button.dart';
import 'package:gecko/widgets/buttons/chest_options_buttons.dart';
......@@ -20,24 +21,40 @@ import 'package:gecko/widgets/wallet_tile_membre.dart';
import 'package:provider/provider.dart';
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
class WalletsHome extends StatefulWidget {
class WalletsHome extends StatelessWidget {
const WalletsHome({super.key});
@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> {
@override
void initState() {
super.initState();
// If only one wallet, directly show WalletOptions
if (myWalletProvider.listWallets.length == 1) {
return WalletOptions(wallet: myWalletProvider.listWallets[0]);
}
// Otherwise show normal WalletsHome screen
return _WalletsHomeContent();
},
);
}
}
class _WalletsHomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
final myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
final myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false);
final currentChestNumber = myWalletProvider.getCurrentChest();
final ChestData currentChest = chestBox.get(currentChestNumber)!;
......@@ -55,16 +72,12 @@ class _WalletsHomeState extends State<WalletsHome> {
ScaledSizedBox(width: 17),
Text(
currentChest.name!,
style: scaledTextStyle(
color: Colors.grey[850],
fontSize: 16,
fontWeight: FontWeight.w500),
style: scaledTextStyle(color: Colors.grey[850], fontSize: 16, fontWeight: FontWeight.w500),
),
],
),
),
bottomNavigationBar:
Consumer<MyWalletsProvider>(builder: (context, _, __) {
bottomNavigationBar: Consumer<MyWalletsProvider>(builder: (context, _, __) {
return myWalletProvider.lastFlyBy == null
? const GeckoBottomAppBar(
actualRoute: 'safeHome',
......@@ -77,8 +90,7 @@ class _WalletsHomeState extends State<WalletsHome> {
body: FutureBuilder(
future: myWalletProvider.readAllWallets(currentChestNumber),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done ||
snapshot.hasError) {
if (snapshot.connectionState != ConnectionState.done || snapshot.hasError) {
return Center(
child: ScaledSizedBox(
height: 50,
......@@ -159,8 +171,7 @@ class _WalletsHomeState extends State<WalletsHome> {
Text(
'explainDraggableWallet'.tr(),
textAlign: TextAlign.center,
style: scaledTextStyle(
fontSize: 16, fontWeight: FontWeight.w500),
style: scaledTextStyle(fontSize: 16, fontWeight: FontWeight.w500),
),
],
))
......@@ -176,8 +187,7 @@ class _WalletsHomeState extends State<WalletsHome> {
);
// configBox.delete('showDraggableTutorial');
final bool showDraggableTutorial =
configBox.get('showDraggableTutorial') ?? true;
final bool showDraggableTutorial = configBox.get('showDraggableTutorial') ?? true;
if (listWallets.length > 1 && showDraggableTutorial) {
tutorialCoachMark.show(context: context);
......@@ -195,23 +205,14 @@ class _WalletsHomeState extends State<WalletsHome> {
child: WalletTileMembre(repository: idtyWallet),
),
),
SliverGrid.count(
key: keyListWallets,
crossAxisCount: nTule,
childAspectRatio: 1,
crossAxisSpacing: 0,
mainAxisSpacing: 0,
children: <Widget>[
SliverGrid.count(key: keyListWallets, crossAxisCount: nTule, childAspectRatio: 1, crossAxisSpacing: 0, mainAxisSpacing: 0, children: <Widget>[
for (WalletData repository in listWalletsWithoutIdty)
DragTuleAction(
wallet: repository,
child: WalletTile(repository: repository),
),
Consumer<SubstrateSdk>(builder: (context, sub, _) {
return sub.nodeConnected &&
myWalletProvider.listWallets.length < maxWalletsInSafe
? const AddNewDerivationButton()
: const Text('');
return sub.nodeConnected && myWalletProvider.listWallets.length < maxWalletsInSafe ? const AddNewDerivationButton() : const Text('');
}),
]),
const SliverToBoxAdapter(child: ChestOptionsButtons()),
......
......@@ -4,10 +4,8 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/scale_functions.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/import_g1_v1.dart';
import 'package:provider/provider.dart';
class ChestOptionsButtons extends StatelessWidget {
const ChestOptionsButtons({
......@@ -16,7 +14,6 @@ class ChestOptionsButtons extends StatelessWidget {
@override
Widget build(BuildContext context) {
final myWalletProvider = Provider.of<MyWalletsProvider>(context);
return Column(children: [
ScaledSizedBox(height: 50),
ScaledSizedBox(
......@@ -35,7 +32,7 @@ class ChestOptionsButtons extends StatelessWidget {
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ChestOptions(walletProvider: myWalletProvider);
return ChestOptions();
}),
),
label: Text(
......
......@@ -2,7 +2,7 @@ name: gecko
description: Pay with G1.
publish_to: "none"
version: 0.1.11+82
version: 0.1.12+83
environment:
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