fix: no chest address anymore; Delete all wallet on startup if bad dataVersion
This commit is contained in:
parent
98bb94ab78
commit
488435405c
|
@ -8,7 +8,7 @@ import 'package:logger/logger.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
// Version of box data
|
// Version of box data
|
||||||
const int dataVersion = 1;
|
const int dataVersion = 2;
|
||||||
|
|
||||||
// Files paths
|
// Files paths
|
||||||
Directory? appPath;
|
Directory? appPath;
|
||||||
|
|
|
@ -73,6 +73,7 @@ Future<void> main() async {
|
||||||
await Hive.deleteBoxFromDisk('g1WalletsBox');
|
await Hive.deleteBoxFromDisk('g1WalletsBox');
|
||||||
g1WalletsBox = await Hive.openBox<G1WalletsList>("g1WalletsBox");
|
g1WalletsBox = await Hive.openBox<G1WalletsList>("g1WalletsBox");
|
||||||
|
|
||||||
|
|
||||||
// keystoreBox = await Hive.openBox("keystoreBox");
|
// keystoreBox = await Hive.openBox("keystoreBox");
|
||||||
|
|
||||||
// g1WalletsBox.clear();
|
// g1WalletsBox.clear();
|
||||||
|
|
|
@ -7,29 +7,21 @@ part 'chest_data.g.dart';
|
||||||
@HiveType(typeId: 1)
|
@HiveType(typeId: 1)
|
||||||
class ChestData extends HiveObject {
|
class ChestData extends HiveObject {
|
||||||
@HiveField(0)
|
@HiveField(0)
|
||||||
String? address;
|
|
||||||
|
|
||||||
@HiveField(1)
|
|
||||||
String? rootAddress;
|
|
||||||
|
|
||||||
@HiveField(2)
|
|
||||||
String? name;
|
String? name;
|
||||||
|
|
||||||
@HiveField(3)
|
@HiveField(1)
|
||||||
int? defaultWallet;
|
int? defaultWallet;
|
||||||
|
|
||||||
@HiveField(4)
|
@HiveField(2)
|
||||||
String? imageName;
|
String? imageName;
|
||||||
|
|
||||||
@HiveField(5)
|
@HiveField(3)
|
||||||
File? imageFile;
|
File? imageFile;
|
||||||
|
|
||||||
@HiveField(6)
|
@HiveField(4)
|
||||||
bool? isCesium;
|
bool? isCesium;
|
||||||
|
|
||||||
ChestData({
|
ChestData({
|
||||||
this.address,
|
|
||||||
this.rootAddress,
|
|
||||||
this.name,
|
this.name,
|
||||||
this.defaultWallet,
|
this.defaultWallet,
|
||||||
this.imageName,
|
this.imageName,
|
||||||
|
|
|
@ -17,33 +17,27 @@ class ChestDataAdapter extends TypeAdapter<ChestData> {
|
||||||
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
|
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
|
||||||
};
|
};
|
||||||
return ChestData(
|
return ChestData(
|
||||||
address: fields[0] as String?,
|
name: fields[0] as String?,
|
||||||
rootAddress: fields[1] as String?,
|
defaultWallet: fields[1] as int?,
|
||||||
name: fields[2] as String?,
|
imageName: fields[2] as String?,
|
||||||
defaultWallet: fields[3] as int?,
|
imageFile: fields[3] as File?,
|
||||||
imageName: fields[4] as String?,
|
isCesium: fields[4] as bool?,
|
||||||
imageFile: fields[5] as File?,
|
|
||||||
isCesium: fields[6] as bool?,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, ChestData obj) {
|
void write(BinaryWriter writer, ChestData obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(7)
|
|
||||||
..writeByte(0)
|
|
||||||
..write(obj.address)
|
|
||||||
..writeByte(1)
|
|
||||||
..write(obj.rootAddress)
|
|
||||||
..writeByte(2)
|
|
||||||
..write(obj.name)
|
|
||||||
..writeByte(3)
|
|
||||||
..write(obj.defaultWallet)
|
|
||||||
..writeByte(4)
|
|
||||||
..write(obj.imageName)
|
|
||||||
..writeByte(5)
|
..writeByte(5)
|
||||||
|
..writeByte(0)
|
||||||
|
..write(obj.name)
|
||||||
|
..writeByte(1)
|
||||||
|
..write(obj.defaultWallet)
|
||||||
|
..writeByte(2)
|
||||||
|
..write(obj.imageName)
|
||||||
|
..writeByte(3)
|
||||||
..write(obj.imageFile)
|
..write(obj.imageFile)
|
||||||
..writeByte(6)
|
..writeByte(4)
|
||||||
..write(obj.isCesium);
|
..write(obj.isCesium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,6 @@ class GenerateWalletsProvider with ChangeNotifier {
|
||||||
chestName = 'Coffre à Ğecko ${chestNumber + 1}';
|
chestName = 'Coffre à Ğecko ${chestNumber + 1}';
|
||||||
}
|
}
|
||||||
ChestData thisChest = ChestData(
|
ChestData thisChest = ChestData(
|
||||||
address: address,
|
|
||||||
name: chestName,
|
name: chestName,
|
||||||
defaultWallet: 0,
|
defaultWallet: 0,
|
||||||
imageName: '${chestNumber % 8}.png',
|
imageName: '${chestNumber % 8}.png',
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/chest_data.dart';
|
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/screens/common_elements.dart';
|
import 'package:gecko/screens/common_elements.dart';
|
||||||
|
@ -73,7 +72,7 @@ class MyWalletsProvider with ChangeNotifier {
|
||||||
try {
|
try {
|
||||||
log.w('DELETE ALL WALLETS ?');
|
log.w('DELETE ALL WALLETS ?');
|
||||||
|
|
||||||
final bool? _answer = await (confirmPopop(
|
final bool? _answer = await (confirmPopup(
|
||||||
context, 'Êtes-vous sûr de vouloir oublier tous vos coffres ?'));
|
context, 'Êtes-vous sûr de vouloir oublier tous vos coffres ?'));
|
||||||
if (_answer!) {
|
if (_answer!) {
|
||||||
await walletBox.clear();
|
await walletBox.clear();
|
||||||
|
@ -92,6 +91,9 @@ class MyWalletsProvider with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> generateNewDerivation(context, String _name) async {
|
Future<void> generateNewDerivation(context, String _name) async {
|
||||||
|
MyWalletsProvider _myWalletProvider =
|
||||||
|
Provider.of<MyWalletsProvider>(context, listen: false);
|
||||||
|
|
||||||
isNewDerivationLoading = true;
|
isNewDerivationLoading = true;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
int _newDerivationNbr;
|
int _newDerivationNbr;
|
||||||
|
@ -107,17 +109,12 @@ class MyWalletsProvider with ChangeNotifier {
|
||||||
_newDerivationNbr = _walletConfig.last.derivation! + 2;
|
_newDerivationNbr = _walletConfig.last.derivation! + 2;
|
||||||
_newWalletNbr = _walletConfig.last.number! + 1;
|
_newWalletNbr = _walletConfig.last.number! + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MyWalletsProvider myWalletProvider =
|
|
||||||
Provider.of<MyWalletsProvider>(context, listen: false);
|
|
||||||
|
|
||||||
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
|
||||||
final int? _currentChestNumber = myWalletProvider.getCurrentChest();
|
WalletData defaultWallet = _myWalletProvider.getDefaultWallet()!;
|
||||||
final ChestData _currentChest = chestBox.get(_currentChestNumber)!;
|
|
||||||
|
|
||||||
final address = await _sub.derive(
|
final address = await _sub.derive(
|
||||||
context, _currentChest.address!, _newDerivationNbr, pinCode);
|
context, defaultWallet.address!, _newDerivationNbr, pinCode);
|
||||||
|
|
||||||
WalletData newWallet = WalletData(
|
WalletData newWallet = WalletData(
|
||||||
version: dataVersion,
|
version: dataVersion,
|
||||||
|
|
|
@ -58,16 +58,14 @@ class WalletOptionsProvider with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int> deleteWallet(context, WalletData wallet) async {
|
Future<int> deleteWallet(context, WalletData wallet) async {
|
||||||
final bool? _answer = await (confirmPopop(context,
|
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
final bool? _answer = await (confirmPopup(context,
|
||||||
'Êtes-vous sûr de vouloir oublier le portefeuille "${wallet.name}" ?'));
|
'Êtes-vous sûr de vouloir oublier le portefeuille "${wallet.name}" ?'));
|
||||||
|
|
||||||
if (_answer!) {
|
if (_answer!) {
|
||||||
await walletBox.delete(wallet.key);
|
await walletBox.delete(wallet.key);
|
||||||
|
await _sub.deleteAccounts([wallet.address!]);
|
||||||
|
|
||||||
// Navigator.popUntil(
|
|
||||||
// context,
|
|
||||||
// ModalRoute.withName('/mywallets'),
|
|
||||||
// );
|
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -192,53 +192,90 @@ class FaderTransition extends PageRouteBuilder {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool?> confirmPopop(BuildContext context, String title) async {
|
Future<bool?> confirmPopup(BuildContext context, String title) async {
|
||||||
return showDialog<bool>(
|
return showDialog<bool>(
|
||||||
context: context,
|
context: context,
|
||||||
barrierDismissible: true, // user must tap button!
|
barrierDismissible: true, // user must tap button!
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
content: Text(
|
content: Text(
|
||||||
title,
|
title,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
|
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
|
||||||
),
|
),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
TextButton(
|
TextButton(
|
||||||
key: const Key('confirmPopop'),
|
key: const Key('confirmPopop'),
|
||||||
child: const Text(
|
child: const Text(
|
||||||
"Oui",
|
"Oui",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 21,
|
fontSize: 21,
|
||||||
color: Color(0xffD80000),
|
color: Color(0xffD80000),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
onPressed: () {
|
|
||||||
Navigator.pop(context, true);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 20),
|
onPressed: () {
|
||||||
TextButton(
|
Navigator.pop(context, true);
|
||||||
child: const Text(
|
},
|
||||||
"Non",
|
),
|
||||||
style: TextStyle(fontSize: 21),
|
const SizedBox(width: 20),
|
||||||
|
TextButton(
|
||||||
|
child: const Text(
|
||||||
|
"Non",
|
||||||
|
style: TextStyle(fontSize: 21),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context, false);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
const SizedBox(height: 120)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> infoPopup(BuildContext context, String title) async {
|
||||||
|
return showDialog<void>(
|
||||||
|
context: context,
|
||||||
|
barrierDismissible: true, // user must tap button!
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return AlertDialog(
|
||||||
|
backgroundColor: backgroundColor,
|
||||||
|
content: Text(
|
||||||
|
title,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
TextButton(
|
||||||
|
key: const Key('infoPopup'),
|
||||||
|
child: const Text(
|
||||||
|
"D'accord",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 21,
|
||||||
|
color: Color(0xffD80000),
|
||||||
),
|
),
|
||||||
onPressed: () {
|
|
||||||
Navigator.pop(context, false);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
const SizedBox(height: 120)
|
onPressed: () {
|
||||||
],
|
Navigator.pop(context, true);
|
||||||
)
|
},
|
||||||
],
|
),
|
||||||
);
|
],
|
||||||
},
|
)
|
||||||
);
|
],
|
||||||
}
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Widget geckoAppBar() {
|
// Widget geckoAppBar() {
|
||||||
// return AppBar(
|
// return AppBar(
|
||||||
|
|
|
@ -7,6 +7,7 @@ import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
|
import 'package:gecko/screens/common_elements.dart';
|
||||||
import 'package:gecko/screens/myWallets/restore_chest.dart';
|
import 'package:gecko/screens/myWallets/restore_chest.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
||||||
import 'package:gecko/screens/onBoarding/1.dart';
|
import 'package:gecko/screens/onBoarding/1.dart';
|
||||||
|
@ -102,6 +103,17 @@ class HomeScreen extends StatelessWidget {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||||
if (!_sub.sdkReady && !_sub.sdkLoading) await _sub.initApi();
|
if (!_sub.sdkReady && !_sub.sdkLoading) await _sub.initApi();
|
||||||
if (_sub.sdkReady && !_sub.nodeConnected) {
|
if (_sub.sdkReady && !_sub.nodeConnected) {
|
||||||
|
if (walletBox.isNotEmpty &&
|
||||||
|
walletBox.getAt(0)!.version! < dataVersion) {
|
||||||
|
await infoPopup(context,
|
||||||
|
"La version de vos coffres n'est plus comptabile avec cette version de Ğecko.\nTous vos coffres vont être oubliés, vous devez les importer de nouveau.");
|
||||||
|
await walletBox.clear();
|
||||||
|
await chestBox.clear();
|
||||||
|
await configBox.delete('defaultWallet');
|
||||||
|
await _sub.deleteAllAccounts();
|
||||||
|
_myWalletProvider.rebuildWidget();
|
||||||
|
}
|
||||||
|
|
||||||
await _sub.connectNode(ctx); //kopa
|
await _sub.connectNode(ctx); //kopa
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'package:durt/durt.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/stateful_wrapper.dart';
|
import 'package:gecko/models/stateful_wrapper.dart';
|
||||||
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
@ -26,6 +27,8 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
MyWalletsProvider _myWalletProvider =
|
||||||
|
Provider.of<MyWalletsProvider>(context, listen: false);
|
||||||
|
|
||||||
return WillPopScope(
|
return WillPopScope(
|
||||||
onWillPop: () {
|
onWillPop: () {
|
||||||
|
@ -100,9 +103,11 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier {
|
||||||
onPrimary: Colors.black, // foreground
|
onPrimary: Colors.black, // foreground
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final _chest = chestBox.get(configBox.get('currentChest'));
|
WalletData defaultWallet =
|
||||||
|
_myWalletProvider.getDefaultWallet()!;
|
||||||
|
|
||||||
await _sub.changePassword(
|
await _sub.changePassword(
|
||||||
_chest!.address!, walletProvider.pinCode, newPin.text);
|
defaultWallet.address!, walletProvider.pinCode, newPin.text);
|
||||||
walletProvider.pinCode = newPin.text;
|
walletProvider.pinCode = newPin.text;
|
||||||
newPin.text = '';
|
newPin.text = '';
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
|
|
|
@ -2,6 +2,7 @@ import 'dart:typed_data';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/screens/common_elements.dart';
|
import 'package:gecko/screens/common_elements.dart';
|
||||||
|
@ -22,14 +23,14 @@ class ShowSeed extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
// HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
|
MyWalletsProvider _myWalletProvider =
|
||||||
|
Provider.of<MyWalletsProvider>(context, listen: false);
|
||||||
CommonElements common = CommonElements();
|
CommonElements common = CommonElements();
|
||||||
|
|
||||||
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
|
||||||
final _chest = chestBox.get(configBox.get('currentChest'));
|
WalletData defaultWallet =
|
||||||
// _sub.changePassword(
|
_myWalletProvider.getDefaultWallet()!;
|
||||||
// _chest!.address!, walletProvider.pinCode, newPin.text);
|
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
|
@ -43,7 +44,7 @@ class ShowSeed extends StatelessWidget {
|
||||||
child: Column(children: <Widget>[
|
child: Column(children: <Widget>[
|
||||||
const Spacer(flex: 1),
|
const Spacer(flex: 1),
|
||||||
FutureBuilder(
|
FutureBuilder(
|
||||||
future: _sub.getSeed(_chest!.address!, walletProvider.pinCode),
|
future: _sub.getSeed(defaultWallet.address!, walletProvider.pinCode),
|
||||||
builder: (BuildContext context, AsyncSnapshot<String?> _seed) {
|
builder: (BuildContext context, AsyncSnapshot<String?> _seed) {
|
||||||
if (_seed.connectionState != ConnectionState.done ||
|
if (_seed.connectionState != ConnectionState.done ||
|
||||||
_seed.hasError) {
|
_seed.hasError) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ class UnlockingWallet extends StatelessWidget {
|
||||||
|
|
||||||
currentChestNumber = configBox.get('currentChest');
|
currentChestNumber = configBox.get('currentChest');
|
||||||
currentChest = chestBox.get(currentChestNumber)!;
|
currentChest = chestBox.get(currentChestNumber)!;
|
||||||
|
|
||||||
int _pinLenght = _walletOptions.getPinLenght(wallet!.number);
|
int _pinLenght = _walletOptions.getPinLenght(wallet!.number);
|
||||||
errorController = StreamController<ErrorAnimationType>();
|
errorController = StreamController<ErrorAnimationType>();
|
||||||
|
|
||||||
|
@ -145,9 +146,10 @@ class UnlockingWallet extends StatelessWidget {
|
||||||
Provider.of<WalletOptionsProvider>(context);
|
Provider.of<WalletOptionsProvider>(context);
|
||||||
MyWalletsProvider _myWalletProvider =
|
MyWalletsProvider _myWalletProvider =
|
||||||
Provider.of<MyWalletsProvider>(context);
|
Provider.of<MyWalletsProvider>(context);
|
||||||
|
|
||||||
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
|
||||||
|
WalletData? defaultWallet = _myWalletProvider.getDefaultWallet();
|
||||||
|
|
||||||
FocusNode pinFocus = FocusNode();
|
FocusNode pinFocus = FocusNode();
|
||||||
|
|
||||||
return Form(
|
return Form(
|
||||||
|
@ -201,7 +203,7 @@ class UnlockingWallet extends StatelessWidget {
|
||||||
_myWalletProvider.pinCode = _pin.toUpperCase();
|
_myWalletProvider.pinCode = _pin.toUpperCase();
|
||||||
|
|
||||||
final isValid = await _sub.checkPassword(
|
final isValid = await _sub.checkPassword(
|
||||||
currentChest.address!, _pin.toUpperCase());
|
defaultWallet!.address!, _pin.toUpperCase());
|
||||||
|
|
||||||
if (!isValid) {
|
if (!isValid) {
|
||||||
await Future.delayed(const Duration(milliseconds: 50));
|
await Future.delayed(const Duration(milliseconds: 50));
|
||||||
|
|
|
@ -12,18 +12,26 @@ import 'package:provider/provider.dart';
|
||||||
|
|
||||||
AsyncSnapshot<List>? mnemoList;
|
AsyncSnapshot<List>? mnemoList;
|
||||||
|
|
||||||
class OnboardingStepFive extends StatelessWidget {
|
class OnboardingStepFive extends StatefulWidget {
|
||||||
const OnboardingStepFive({Key? key, this.skipIntro = false})
|
const OnboardingStepFive({Key? key, this.skipIntro = false})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
final bool skipIntro;
|
final bool skipIntro;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() {
|
||||||
|
return _ChooseChestState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore: unused_element
|
||||||
|
class _ChooseChestState extends State<OnboardingStepFive> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
GenerateWalletsProvider _generateWalletProvider =
|
GenerateWalletsProvider _generateWalletProvider =
|
||||||
Provider.of<GenerateWalletsProvider>(context, listen: false);
|
Provider.of<GenerateWalletsProvider>(context, listen: false);
|
||||||
|
|
||||||
CommonElements common = CommonElements();
|
final CommonElements common = CommonElements();
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
|
@ -82,8 +90,8 @@ class OnboardingStepFive extends StatelessWidget {
|
||||||
onPrimary: Colors.black, // foreground
|
onPrimary: Colors.black, // foreground
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_generateWalletProvider.reloadBuild();
|
// _generateWalletProvider.reloadBuild();
|
||||||
// setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
child: Text("Choisir une autre phrase",
|
child: Text("Choisir une autre phrase",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
@ -93,7 +101,7 @@ class OnboardingStepFive extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 22 * ratio),
|
SizedBox(height: 22 * ratio),
|
||||||
nextButton(context, "J'ai noté ma phrase", false, skipIntro),
|
nextButton(context, "J'ai noté ma phrase", false, widget.skipIntro),
|
||||||
SizedBox(height: 35 * ratio),
|
SizedBox(height: 35 * ratio),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
|
@ -103,7 +111,7 @@ class OnboardingStepFive extends StatelessWidget {
|
||||||
|
|
||||||
Widget sentanceArray(BuildContext context) {
|
Widget sentanceArray(BuildContext context) {
|
||||||
GenerateWalletsProvider _generateWalletProvider =
|
GenerateWalletsProvider _generateWalletProvider =
|
||||||
Provider.of<GenerateWalletsProvider>(context);
|
Provider.of<GenerateWalletsProvider>(context, listen: false);
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 3),
|
padding: const EdgeInsets.symmetric(horizontal: 3),
|
||||||
|
@ -181,7 +189,7 @@ class PrintWallet extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
GenerateWalletsProvider _generateWalletProvider =
|
GenerateWalletsProvider _generateWalletProvider =
|
||||||
Provider.of<GenerateWalletsProvider>(context);
|
Provider.of<GenerateWalletsProvider>(context, listen: false);
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
|
|
@ -76,7 +76,7 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
'assets/walletOptions/clock.png'),
|
'assets/walletOptions/clock.png'),
|
||||||
height: 90)),
|
height: 90)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
////TODO: wait for subsquid indexer
|
//// Wait for subsquid indexer
|
||||||
// _historyProvider.nPage = 1;
|
// _historyProvider.nPage = 1;
|
||||||
// Navigator.push(
|
// Navigator.push(
|
||||||
// context,
|
// context,
|
||||||
|
|
|
@ -5,7 +5,7 @@ description: Pay with G1.
|
||||||
# pub.dev using `pub publish`. This is preferred for private packages.
|
# pub.dev using `pub publish`. This is preferred for private packages.
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
|
|
||||||
version: 0.0.7+2
|
version: 0.0.7+3
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.12.0 <3.0.0'
|
sdk: '>=2.12.0 <3.0.0'
|
||||||
|
|
Loading…
Reference in New Issue