diff --git a/assets/wallet.png b/assets/wallet.png new file mode 100755 index 0000000000000000000000000000000000000000..c700ad7ee6f796979098f4c519aca05aa9f3a0c2 Binary files /dev/null and b/assets/wallet.png differ diff --git a/config/gdev_endpoints.json b/config/gdev_endpoints.json index 1e2f325ee9ab25d85bbadd6fe36bf858dc78995a..90a332fafd821235eb2b7f49858b7cfed6e4e0f6 100644 --- a/config/gdev_endpoints.json +++ b/config/gdev_endpoints.json @@ -1,3 +1,6 @@ [ - "wss://gdev.librelois.fr/ws" + "wss://gdev.librelois.fr/ws", + "wss://gdev.1000i100.fr/ws", + "wss://gdev.komun.org/ws" + ] diff --git a/lib/providers/chest_provider.dart b/lib/providers/chest_provider.dart index 812758181d998e95be00882161eb5abc109a1d3c..bc337e2368753db9749fc6305392cdd830efb665 100644 --- a/lib/providers/chest_provider.dart +++ b/lib/providers/chest_provider.dart @@ -14,7 +14,7 @@ class ChestProvider with ChangeNotifier { Future deleteChest(context, ChestData _chest) async { final bool? _answer = await (_confirmDeletingChest(context, _chest.name)); SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); - if (_answer!) { + if (_answer ?? false) { await _sub.deleteAccounts(getChestWallets(_chest)); await chestBox.delete(_chest.key); if (chestBox.isEmpty) { diff --git a/lib/providers/home.dart b/lib/providers/home.dart index 56bf97d838f39ec00c52f1b46f223b0679d6f9d3..1ea76638d74f9cea390d82fb445812d6b4b1029d 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -7,10 +7,16 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:async'; import 'package:gecko/globals.dart'; +import 'package:gecko/models/wallet_data.dart'; +import 'package:gecko/providers/my_wallets.dart'; +import 'package:gecko/providers/wallets_profiles.dart'; +import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; +import 'package:gecko/screens/search.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:path_provider/path_provider.dart' as pp; import 'package:package_info_plus/package_info_plus.dart'; +import 'package:provider/provider.dart'; class HomeProvider with ChangeNotifier { bool? isSearching; @@ -20,9 +26,6 @@ class HomeProvider with ChangeNotifier { Widget appBarExplorer = Text('Explorateur', style: TextStyle(color: Colors.grey[850])); - bool isFirstBuild = true; - // AudioCache player = AudioCache(prefix: 'sounds/'); - Future<void> initHive() async { late Directory hivePath; @@ -58,6 +61,8 @@ class HomeProvider with ChangeNotifier { } Future<List?> getValidEndpoints() async { + await configBox.delete('endpoint'); + List _listEndpoints = []; if (!configBox.containsKey('endpoint') || configBox.get('endpoint') == [] || @@ -132,6 +137,162 @@ class HomeProvider with ChangeNotifier { // volume: volume, mode: PlayerMode.LOW_LATENCY, stayAwake: false); // } + Widget bottomAppBar(BuildContext context, int index) { + MyWalletsProvider _myWalletProvider = + Provider.of<MyWalletsProvider>(context, listen: false); + WalletsProfilesProvider _historyProvider = + Provider.of<WalletsProfilesProvider>(context, listen: false); + + const bool _showBottomBar = true; + + return Visibility( + visible: _showBottomBar, + child: Container( + color: yellowC, + width: double.infinity, + height: 80, + child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Spacer(flex: 1), + IconButton( + iconSize: 40, + icon: const Image(image: AssetImage('assets/loupe-noire.png')), + onPressed: () { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const SearchScreen(); + }), + ); + }, + ), + // SizedBox(width: 0), + const Spacer(flex: 2), + IconButton( + iconSize: 60, + icon: const Image(image: AssetImage('assets/qrcode-scan.png')), + onPressed: () async { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + await _historyProvider.scan(context); + }, + ), + const Spacer(flex: 2), + IconButton( + iconSize: 60, + icon: const Image(image: AssetImage('assets/wallet.png')), + onPressed: () { + WalletData? defaultWallet = + _myWalletProvider.getDefaultWallet(); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return UnlockingWallet( + wallet: defaultWallet, + action: "mywallets", + ); + }, + ), + ); + }, + ), + const Spacer(flex: 1), + ], + ), + ), + ); + } + + // BottomAppBar bottomAppBar(BuildContext context, int index) { + // MyWalletsProvider _myWalletProvider = + // Provider.of<MyWalletsProvider>(context, listen: false); + + // return BottomAppBar( + // color: yellowC, + // notchMargin: 0, //not + // child: SizedBox( + // height: 70, + // child: Row( + // children: [ + // const Spacer(flex: 1), + // IconButton( + // iconSize: 50, + // icon: const Image(image: AssetImage('assets/loupe-noire.png')), + // onPressed: () { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + // Navigator.push( + // context, + // MaterialPageRoute(builder: (context) { + // return const SearchScreen(); + // }), + // ); + // }, + // ), + // const Spacer(flex: 4), + // IconButton( + // iconSize: 60, + // icon: const Image(image: AssetImage('assets/wallet.png')), + // onPressed: () { + // WalletData? defaultWallet = + // _myWalletProvider.getDefaultWallet(); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) { + // return UnlockingWallet( + // wallet: defaultWallet, + // action: "mywallets", + // ); + // }, + // ), + // ); + // }, + // ), + // const Spacer(flex: 1), + // ], + // )), + // ); + // } + + // Widget floatingAction(BuildContext context, index) { + // WalletsProfilesProvider _historyProvider = + // Provider.of<WalletsProfilesProvider>(context, listen: false); + // return SizedBox( + // height: 90, + // width: 90, + // child: FittedBox( + // child: FloatingActionButton( + // // shape: const RoundedRectangleBorder( + // // borderRadius: BorderRadius.all(Radius.elliptical(150, 100)), + // // ), + // backgroundColor: yellowC, + // elevation: 0, + // onPressed: () async { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + // await _historyProvider.scan(context); + // }, + // child: const Image( + // image: AssetImage('assets/qrcode-scan.png'), + // height: 35), //icon inside button + // ), + // ), + // ); + // } + void handleSearchEnd() { searchIcon = Icon( Icons.search, diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 7c4d5747c862ec33cb38de0513fbaefae8fe65c4..14a583ad23bc4b20133649e7ef304536aec2580f 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -48,7 +48,6 @@ class SubstrateSdk with ChangeNotifier { List<NetworkParams> node = []; for (String _endpoint in configBox.get('endpoint')) { - log.d(_endpoint); final n = NetworkParams(); n.name = currencyName; n.endpoint = _endpoint; diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 6429d7dde05aaec06d4fb3ad514af98fa77e4e54..1aa3ed2aa6ec3709bc3684280bea163acf7919f6 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -94,6 +94,7 @@ class HomeScreen extends StatelessWidget { ], ), ), + // bottomNavigationBar: _homeProvider.bottomBar(context, 1), backgroundColor: const Color(0xffF9F9F1), body: Builder( builder: (ctx) => StatefulWrapper( diff --git a/lib/screens/myWallets/change_pin.dart b/lib/screens/myWallets/change_pin.dart index fcf51b8b9bc6c7e1b2a5ade19ce6625577e0857e..1f038e096c756c70152fd2fee8ff03877b607207 100644 --- a/lib/screens/myWallets/change_pin.dart +++ b/lib/screens/myWallets/change_pin.dart @@ -35,6 +35,7 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier { child: Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( + elevation: 1, toolbarHeight: 60 * ratio, leading: IconButton( icon: const Icon(Icons.arrow_back, color: Colors.black), diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart index 47bb5e12ae8b1018248804627a01fd201503c0e2..2fa95d7e3dc00dfaa9d1f901c39b3864147235cc 100644 --- a/lib/screens/myWallets/chest_options.dart +++ b/lib/screens/myWallets/chest_options.dart @@ -3,6 +3,7 @@ import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; import 'package:flutter/services.dart'; import 'package:gecko/providers/chest_provider.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/screens/myWallets/change_pin.dart'; import 'package:provider/provider.dart'; @@ -17,12 +18,15 @@ class ChestOptions extends StatelessWidget { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); ChestProvider _chestProvider = Provider.of<ChestProvider>(context, listen: false); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); ChestData currentChest = chestBox.get(configBox.get('currentChest'))!; return Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( + elevation: 1, toolbarHeight: 60 * ratio, // leading: IconButton( // icon: const Icon(Icons.arrow_back, color: Colors.black), @@ -37,6 +41,7 @@ class ChestOptions extends StatelessWidget { height: 22, child: Text(currentChest.name!), )), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 2), body: Builder( builder: (ctx) => SafeArea( child: Column(children: <Widget>[ diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 3614935bf916dfdfd50f64786bf078fe08650d5f..bc65d661bd600e22dc50ac02df2709a04e9cf646 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/providers/substrate_sdk.dart'; @@ -26,6 +27,8 @@ class WalletOptions extends StatelessWidget { Provider.of<WalletsProfilesProvider>(context, listen: false); MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); log.d(_walletOptions.address.text); @@ -62,6 +65,7 @@ class WalletOptions extends StatelessWidget { }), ), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 2), body: Builder( builder: (ctx) => SafeArea( child: Column(children: <Widget>[ @@ -102,27 +106,34 @@ class WalletOptions extends StatelessWidget { ); }), SizedBox(height: 10 * ratio), - QrImageWidget( - data: _walletOptions.address.text, - version: QrVersions.auto, - size: isTall ? 300 : 270, + Expanded( + child: SingleChildScrollView( + child: Column(children: <Widget>[ + QrImageWidget( + data: _walletOptions.address.text, + version: QrVersions.auto, + size: isTall ? 300 : 270, + ), + SizedBox(height: 15 * ratio), + Consumer<WalletOptionsProvider>( + builder: (context, walletProvider, _) { + return Column(children: [ + pubkeyWidget(walletProvider, ctx), + SizedBox(height: 10 * ratio), + historyWidget( + context, _historyProvider, walletProvider), + SizedBox(height: 12 * ratio), + setDefaultWallet(context, walletProvider, + _myWalletProvider, _walletOptions, _currentChest), + SizedBox(height: 17 * ratio), + if (!walletProvider.isDefaultWallet) + deleteWallet(context, walletProvider, + _myWalletProvider, _currentChest) + ]); + }), + ]), + ), ), - SizedBox(height: 15 * ratio), - Consumer<WalletOptionsProvider>( - builder: (context, walletProvider, _) { - return Column(children: [ - pubkeyWidget(walletProvider, ctx), - SizedBox(height: 10 * ratio), - historyWidget(context, _historyProvider, walletProvider), - SizedBox(height: 12 * ratio), - setDefaultWallet(context, walletProvider, _myWalletProvider, - _walletOptions, _currentChest), - SizedBox(height: 17 * ratio), - if (!walletProvider.isDefaultWallet) - deleteWallet(context, walletProvider, _myWalletProvider, - _currentChest) - ]); - }), ]), ), ), diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 98895b34a2175ca92bc08f04360acd7ab55e21e3..f00d707fe651b3a26e4ec64553539a743aff2e57 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -1,6 +1,7 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/queries.dart'; import 'package:gecko/models/wallet_data.dart'; @@ -21,6 +22,8 @@ class WalletsHome extends StatelessWidget { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); MyWalletsProvider myWalletProvider = Provider.of<MyWalletsProvider>(context); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); final int? _currentChestNumber = myWalletProvider.getCurrentChest(); final ChestData _currentChest = chestBox.get(_currentChestNumber)!; @@ -38,6 +41,7 @@ class WalletsHome extends StatelessWidget { }, child: Scaffold( appBar: AppBar( + elevation: 1, toolbarHeight: 60 * ratio, leading: IconButton( icon: const Icon(Icons.arrow_back, color: Colors.black), @@ -53,6 +57,7 @@ class WalletsHome extends StatelessWidget { style: TextStyle(color: Colors.grey[850])), backgroundColor: const Color(0xffFFD58D), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 3), body: SafeArea( child: myWalletsTiles(context, _currentChestNumber!), ), @@ -154,8 +159,7 @@ class WalletsHome extends StatelessWidget { } List _listWallets = _myWalletProvider.listWallets; - WalletData? defaultWallet = - _myWalletProvider.getDefaultWallet(); + WalletData? defaultWallet = _myWalletProvider.getDefaultWallet(); final double screenWidth = MediaQuery.of(context).size.width; int nTule = 2; diff --git a/lib/screens/search.dart b/lib/screens/search.dart index d98b98a643a11ee668cfbc076363c229f041e0ed..0538a1c4fcc99e051ff281e6e09494eef174275a 100644 --- a/lib/screens/search.dart +++ b/lib/screens/search.dart @@ -23,6 +23,7 @@ class SearchScreen extends StatelessWidget { }, child: Scaffold( appBar: AppBar( + elevation: 1, toolbarHeight: 60 * ratio, title: const SizedBox( height: 22, diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index 63b2d34eca0bf481c9fb33a4e2ed8552b841ae65..4ff7190040e87a4978a150e555da6318d5bbba49 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -2,6 +2,7 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:flutter/material.dart'; import 'package:gecko/providers/cesium_plus.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/my_wallets.dart'; @@ -30,6 +31,8 @@ class WalletViewScreen extends StatelessWidget { Provider.of<CesiumPlusProvider>(context, listen: false); _walletViewProvider.pubkey = pubkey!; SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false); @@ -46,11 +49,14 @@ class WalletViewScreen extends StatelessWidget { child: Text('Voir un portefeuille'), ), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 1), + // floatingActionButton: _homeProvider.floatingAction(context, 1), + // floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, body: SafeArea( child: Column(children: <Widget>[ headerProfileView( context, _walletViewProvider, _cesiumPlusProvider), - SizedBox(height: isTall ? 120 : 70), + SizedBox(height: isTall ? 50 : 20), Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Column(children: <Widget>[ SizedBox( @@ -233,7 +239,7 @@ class WalletViewScreen extends StatelessWidget { style: TextStyle( fontSize: buttonFontSize, fontWeight: FontWeight.w500), ), - SizedBox(height: isTall ? 120 : 70) + SizedBox(height: isTall ? 50 : 20) ]), )); } diff --git a/pubspec.lock b/pubspec.lock index 4d4c0e28da9dcc11f06a4af33be4094863f5b9cf..3a70454c36b2a404e1979c0d98d8deea91b646f2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -112,7 +112,7 @@ packages: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.0.9" build_runner: dependency: "direct dev" description: @@ -983,10 +983,10 @@ packages: description: path: "." ref: fixAndroidActivityVersion - resolved-ref: e33351cde5ea9b55d191772fe3b36f9dbb8277e6 + resolved-ref: "069a9f696ec8d9eacd0a3fdd284116fd2c1faf44" url: "https://github.com/poka-IT/sdk.git" source: git - version: "0.4.5" + version: "0.4.6" pool: dependency: transitive description: @@ -1389,7 +1389,7 @@ packages: name: webview_flutter_android url: "https://pub.dartlang.org" source: hosted - version: "2.8.8" + version: "2.8.9" webview_flutter_platform_interface: dependency: transitive description: @@ -1403,7 +1403,7 @@ packages: name: webview_flutter_wkwebview url: "https://pub.dartlang.org" source: hosted - version: "2.7.5" + version: "2.8.0" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d5d196ac21cb2c6aa186125cb1451ac0ab17e60d..8294cd6794c1c08cf4ea9715d0939dddb0c99dab 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: Pay with G1. # 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 -version: 0.0.6+6 +version: 0.0.6+8 environment: sdk: '>=2.12.0 <3.0.0'