diff --git a/assets/chests/1.png b/assets/chests/1.png new file mode 100644 index 0000000..327ce15 Binary files /dev/null and b/assets/chests/1.png differ diff --git a/assets/chests/2.png b/assets/chests/2.png new file mode 100644 index 0000000..bfb1a08 Binary files /dev/null and b/assets/chests/2.png differ diff --git a/assets/chests/3.png b/assets/chests/3.png new file mode 100644 index 0000000..fb93100 Binary files /dev/null and b/assets/chests/3.png differ diff --git a/assets/chests/4.png b/assets/chests/4.png new file mode 100644 index 0000000..a759503 Binary files /dev/null and b/assets/chests/4.png differ diff --git a/assets/chests/5.png b/assets/chests/5.png new file mode 100644 index 0000000..84d1490 Binary files /dev/null and b/assets/chests/5.png differ diff --git a/assets/chests/6.png b/assets/chests/6.png new file mode 100644 index 0000000..8f1556b Binary files /dev/null and b/assets/chests/6.png differ diff --git a/assets/chests/7.png b/assets/chests/7.png new file mode 100644 index 0000000..c34e084 Binary files /dev/null and b/assets/chests/7.png differ diff --git a/lib/models/chestData.dart b/lib/models/chestData.dart index c8a410f..fcacb10 100644 --- a/lib/models/chestData.dart +++ b/lib/models/chestData.dart @@ -13,9 +13,11 @@ class ChestData extends HiveObject { @HiveField(3) int defaultWallet; - ChestData({this.dewif, this.name, this.defaultWallet}); + @HiveField(4) + String imageName; + + ChestData({this.dewif, this.name, this.defaultWallet, this.imageName}); - // representation of WalletData when debugging @override String toString() { return this.name; diff --git a/lib/models/chestData.g.dart b/lib/models/chestData.g.dart index 812e2dd..b6fee4c 100644 --- a/lib/models/chestData.g.dart +++ b/lib/models/chestData.g.dart @@ -20,19 +20,22 @@ class ChestDataAdapter extends TypeAdapter { dewif: fields[0] as String, name: fields[2] as String, defaultWallet: fields[3] as int, + imageName: fields[4] as String, ); } @override void write(BinaryWriter writer, ChestData obj) { writer - ..writeByte(3) + ..writeByte(4) ..writeByte(0) ..write(obj.dewif) ..writeByte(2) ..write(obj.name) ..writeByte(3) - ..write(obj.defaultWallet); + ..write(obj.defaultWallet) + ..writeByte(4) + ..write(obj.imageName); } @override diff --git a/lib/models/generateWallets.dart b/lib/models/generateWallets.dart index 1d1486e..43718de 100644 --- a/lib/models/generateWallets.dart +++ b/lib/models/generateWallets.dart @@ -57,9 +57,10 @@ class GenerateWalletsProvider with ChangeNotifier { } walletBox.add(myWallet); ChestData thisChest = ChestData( - dewif: _wallet.dewif, - name: chestName, - ); + dewif: _wallet.dewif, + name: chestName, + defaultWallet: 0, + imageName: '${chestNumber % 8}.png'); chestBox.add(thisChest); configBox.put('currentChest', chestNumber); // walletBox.get(1) @@ -220,7 +221,7 @@ class GenerateWalletsProvider with ChangeNotifier { log.d(_walletPubkey); } - Future importWallet(context, _cesiumID, _cesiumPWD) async { + Future importCesiumWallet(context, _cesiumID, _cesiumPWD) async { // String _walletPubkey = await DubpRust.getLegacyPublicKey( // salt: _cesiumID, password: _cesiumPWD); // String shortPubkey = truncate(_walletPubkey, 9, diff --git a/lib/models/history.dart b/lib/models/history.dart index ab5407b..ff762f0 100644 --- a/lib/models/history.dart +++ b/lib/models/history.dart @@ -3,6 +3,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/home.dart'; +import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/models/walletData.dart'; import 'package:gecko/screens/history.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:jdenticon_dart/jdenticon_dart.dart'; @@ -49,8 +51,12 @@ class HistoryProvider with ChangeNotifier { } Future pay(BuildContext context, String pinCode) async { - // MyWalletsProvider _myWalletProvider = MyWalletsProvider(); - String dewif = chestBox.get(configBox.get('currentChest')).dewif; + MyWalletsProvider _myWalletModel = MyWalletsProvider(); + int currentChest = configBox.get('currentChest'); + WalletData defaultWallet = _myWalletModel.getDefaultWallet(currentChest); + + String dewif = chestBox.get(currentChest).dewif; + try { await DubpRust.simplePaymentFromTransparentAccount( accountIndex: defaultWallet.derivation, diff --git a/lib/models/myWallets.dart b/lib/models/myWallets.dart index 99b3e8b..fb77bb8 100644 --- a/lib/models/myWallets.dart +++ b/lib/models/myWallets.dart @@ -45,7 +45,7 @@ class MyWalletsProvider with ChangeNotifier { WalletData getWalletData(List _id) { if (_id.isEmpty) return WalletData(); - int _chest = _id[getCurrentChest()]; + int _chest = _id[0]; int _nbr = _id[1]; var _targetedWallet; @@ -59,15 +59,13 @@ class MyWalletsProvider with ChangeNotifier { return _targetedWallet; } - void getDefaultWallet(int chest) { - MyWalletsProvider myWalletsProvider = MyWalletsProvider(); - - if (configBox.get('defaultWallet')[chest] == null) { - configBox.put('defaultWallet', [chest, 0]); + WalletData getDefaultWallet(int chest) { + if (chestBox.isEmpty) { + return WalletData(chest: 0, number: 0); + } else { + int defaultWalletNumber = chestBox.get(chest).defaultWallet; + return getWalletData([chest, defaultWalletNumber]); } - - defaultWallet = myWalletsProvider - .getWalletData(configBox.get('defaultWallet').cast()); } Future deleteAllWallet(context) async { diff --git a/lib/screens/history.dart b/lib/screens/history.dart index 7948006..b92ada5 100644 --- a/lib/screens/history.dart +++ b/lib/screens/history.dart @@ -3,10 +3,12 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/cesiumPlus.dart'; import 'package:gecko/models/home.dart'; +import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/queries.dart'; import 'package:gecko/models/history.dart'; import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; +import 'package:gecko/models/walletData.dart'; import 'package:gecko/screens/myWallets/unlockingWallet.dart'; import 'dart:ui'; import 'package:graphql_flutter/graphql_flutter.dart'; @@ -330,6 +332,10 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { } Widget payView(context, HistoryProvider _historyProvider) { + MyWalletsProvider _myWalletProvider = MyWalletsProvider(); + WalletData defaultWallet = + _myWalletProvider.getDefaultWallet(configBox.get('currentChest')); + return Stack( clipBehavior: Clip.hardEdge, children: [ diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 3c37a15..22b74d7 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -4,6 +4,7 @@ import 'package:gecko/models/history.dart'; import 'package:gecko/models/home.dart'; import 'package:flutter/material.dart'; import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/models/walletData.dart'; import 'package:gecko/screens/myWallets/unlockingWallet.dart'; import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; import 'dart:ui'; @@ -22,6 +23,9 @@ class HomeScreen extends StatelessWidget { Provider.of(context); final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); + WalletData defaultWallet = + _myWalletProvider.getDefaultWallet(configBox.get('currentChest')); + // walletBox.toMap().forEach((key, value) { // if (value.chest == 0) { // print('$key: ${value.derivation}'); diff --git a/lib/screens/myWallets/chooseChest.dart b/lib/screens/myWallets/chooseChest.dart index c5ae73c..c26ec36 100644 --- a/lib/screens/myWallets/chooseChest.dart +++ b/lib/screens/myWallets/chooseChest.dart @@ -1,17 +1,25 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; +import 'package:gecko/models/myWallets.dart'; import 'package:gecko/screens/commonElements.dart'; import 'package:flutter/material.dart'; import 'package:gecko/screens/onBoarding/1.dart'; +import 'package:carousel_slider/carousel_slider.dart'; +import 'package:provider/provider.dart'; // ignore: must_be_immutable class ChooseChest extends StatelessWidget { TextEditingController tplController = TextEditingController(); + CarouselController buttonCarouselController = CarouselController(); @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + MyWalletsProvider _myWalletProvider = + Provider.of(context); + int currentChest = configBox.get('currentChest'); + return Scaffold( appBar: AppBar( title: SizedBox( @@ -21,17 +29,35 @@ class ChooseChest extends StatelessWidget { body: SafeArea( child: Column(children: [ SizedBox(height: 190), - Center( - child: Image.asset( - 'assets/chests/$currentChest.png', + CarouselSlider( + carouselController: buttonCarouselController, + options: CarouselOptions( + height: 210, + onPageChanged: (index, reason) { + currentChest = index; + }, + enableInfiniteScroll: false, + initialPage: currentChest, + enlargeCenterPage: true, + viewportFraction: 0.6, ), + items: chestBox.toMap().entries.map((i) { + return Builder( + builder: (BuildContext context) { + return Column(children: [ + Image.asset( + 'assets/chests/${i.value.imageName}', + ), + SizedBox(height: 30), + Text( + i.value.name, + style: TextStyle(fontSize: 21), + ), + ]); + }, + ); + }).toList(), ), - SizedBox(height: 40), - Text( - chestBox.get(currentChest).name, - style: TextStyle(fontSize: 21), - ), - SizedBox(height: 15), Image.asset('assets/chests/vector.png'), SizedBox(height: 15), Text( @@ -49,7 +75,8 @@ class ChooseChest extends StatelessWidget { onPrimary: Colors.black, // foreground ), onPressed: () { - configBox.put('currentChest', 0); + configBox.put('currentChest', currentChest); + _myWalletProvider.rebuildWidget(); Navigator.popUntil( context, ModalRoute.withName('/mywallets'), diff --git a/lib/screens/myWallets/importWallet.dart b/lib/screens/myWallets/importWallet.dart index c825d74..8bdff93 100644 --- a/lib/screens/myWallets/importWallet.dart +++ b/lib/screens/myWallets/importWallet.dart @@ -169,7 +169,7 @@ class ImportWalletScreen extends StatelessWidget { _generateWalletProvider.isPinChanged ? () { _generateWalletProvider - .importWallet( + .importCesiumWallet( context, _generateWalletProvider .cesiumID.text, diff --git a/lib/screens/myWallets/unlockingWallet.dart b/lib/screens/myWallets/unlockingWallet.dart index 610edc2..3307717 100644 --- a/lib/screens/myWallets/unlockingWallet.dart +++ b/lib/screens/myWallets/unlockingWallet.dart @@ -58,14 +58,6 @@ class UnlockingWallet extends StatelessWidget { pinForm(context, _pinLenght, wallet.number, wallet.derivation), ]), ), - GestureDetector( - onTap: () { - Navigator.popUntil( - context, - ModalRoute.withName('/'), - ); - }, - child: Icon(Icons.home)) ]), )); } diff --git a/lib/screens/myWallets/walletOptions.dart b/lib/screens/myWallets/walletOptions.dart index a0d7cff..dfc28b3 100644 --- a/lib/screens/myWallets/walletOptions.dart +++ b/lib/screens/myWallets/walletOptions.dart @@ -47,8 +47,11 @@ class WalletOptions extends StatelessWidget { _walletOptions.walletID = [0, wallet.number]; + WalletData defaultWallet = + _myWalletProvider.getDefaultWallet(_currentChest); + _walletOptions.isDefaultWallet = - (defaultWallet.id()[1] == _walletOptions.walletID[1]); + (defaultWallet.number == _walletOptions.walletID[1]); int currentChest = _myWalletProvider.getCurrentChest(); @@ -334,7 +337,8 @@ class WalletOptions extends StatelessWidget { onTap: !_walletOptions.isDefaultWallet ? () { defaultWallet = wallet; - configBox.put('defaultWallet', wallet.id()); + chestBox.get(currentChest).defaultWallet = + wallet.number; _myWalletProvider.readAllWallets(_currentChest); _myWalletProvider.rebuildWidget(); } diff --git a/lib/screens/myWallets/walletsHome.dart b/lib/screens/myWallets/walletsHome.dart index 8f2b6f7..cbfb7dd 100644 --- a/lib/screens/myWallets/walletsHome.dart +++ b/lib/screens/myWallets/walletsHome.dart @@ -136,6 +136,8 @@ class WalletsHome extends StatelessWidget { } List _listWallets = _myWalletProvider.listWallets; + WalletData defaultWallet = + _myWalletProvider.getDefaultWallet(configBox.get('currentChest')); return CustomScrollView(slivers: [ SliverToBoxAdapter(child: SizedBox(height: 20)), diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 3f8148a..366cfdb 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -68,16 +68,14 @@ class SettingsScreen extends StatelessWidget { primary: yellowC, // background onPrimary: Colors.black, // foreground ), - onPressed: !_myWallets.checkIfWalletExist() - ? () => Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return GenerateWalletsScreen(); - }), - ).then((value) => { - if (value == true) {Navigator.pop(context)} - }) - : null, + onPressed: () => Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return GenerateWalletsScreen(); + }), + ).then((value) => { + if (value == true) {Navigator.pop(context)} + }), child: Text("Générer un nouveau trousseau", style: TextStyle(fontSize: 16)))), Expanded( diff --git a/pubspec.lock b/pubspec.lock index 0f54e3b..fcfb1ab 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -120,6 +120,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "8.1.3" + carousel_slider: + dependency: "direct main" + description: + name: carousel_slider + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" characters: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c3f2e03..9ee5f91 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,6 +54,7 @@ dependencies: unorm_dart: ^0.2.0 xml: ^5.3.0 assorted_layout_widgets: ^5.2.1 + carousel_slider: ^4.0.0 flutter_icons: android: "ic_launcher"