From de18062b7a47a5c5c902c71aaaace746021aa49a Mon Sep 17 00:00:00 2001 From: poka Date: Tue, 21 Dec 2021 06:56:42 +0100 Subject: [PATCH] Gecko is working on web --- lib/main.dart | 2 +- lib/models/home.dart | 33 +- lib/screens/history.dart | 1 - .../myWallets/cesium_wallet_options.dart | 10 +- lib/screens/myWallets/wallet_options.dart | 4 +- lib/screens/old_history_pay.dart | 483 ------------------ 6 files changed, 26 insertions(+), 507 deletions(-) delete mode 100644 lib/screens/old_history_pay.dart diff --git a/lib/main.dart b/lib/main.dart index e79d21e..74121ce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -49,7 +49,7 @@ const bool enableSentry = true; Future main() async { WidgetsFlutterBinding.ensureInitialized(); - if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { + if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) { setWindowTitle('Ğecko'); setWindowMinSize(const Size(600, 800)); setWindowMaxSize(const Size(800, 1000)); diff --git a/lib/models/home.dart b/lib/models/home.dart index 294b91f..066c239 100644 --- a/lib/models/home.dart +++ b/lib/models/home.dart @@ -7,8 +7,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:async'; import 'package:gecko/globals.dart'; -import 'package:gecko/screens/old_history_pay.dart'; -import 'package:gecko/screens/myWallets/wallets_home.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:package_info/package_info.dart'; import 'package:flutter/foundation.dart' show kIsWeb; @@ -23,7 +21,6 @@ class HomeProvider with ChangeNotifier { Widget appBarExplorer = Text('Explorateur', style: TextStyle(color: Colors.grey[850])); - List currentTab = [OldHistoryScreen(), const WalletsHome()]; bool isFirstBuild = true; // AudioCache player = AudioCache(prefix: 'sounds/'); @@ -37,20 +34,24 @@ class HomeProvider with ChangeNotifier { Future initHive() async { Directory hivePath; - if (Platform.isLinux || Platform.isMacOS) { - final home = Platform.environment['HOME']; - hivePath = Directory('$home/.gecko/db'); - } else if (Platform.isWindows) { - final home = Platform.environment['UserProfile']; - hivePath = Directory('$home/.gecko/db'); - } else if (Platform.isAndroid || Platform.isIOS || kIsWeb) { - final home = await pp.getApplicationDocumentsDirectory(); - hivePath = Directory('${home.path}/db'); + if (!kIsWeb) { + if (Platform.isLinux || Platform.isMacOS) { + final home = Platform.environment['HOME']; + hivePath = Directory('$home/.gecko/db'); + } else if (Platform.isWindows) { + final home = Platform.environment['UserProfile']; + hivePath = Directory('$home/.gecko/db'); + } else if (Platform.isAndroid || Platform.isIOS) { + final home = await pp.getApplicationDocumentsDirectory(); + hivePath = Directory('${home.path}/db'); + } + if (!await hivePath.exists()) { + await hivePath.create(recursive: true); + } + await Hive.initFlutter(hivePath.path); + } else { + await Hive.initFlutter(); } - if (!await hivePath.exists()) { - await hivePath.create(recursive: true); - } - await Hive.initFlutter(hivePath.path); } Future getAppVersion() async { diff --git a/lib/screens/history.dart b/lib/screens/history.dart index 1f0d6a3..7a1de5a 100644 --- a/lib/screens/history.dart +++ b/lib/screens/history.dart @@ -126,7 +126,6 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { scrollController.position.maxScrollExtent * 0.7 && _historyProvider.pageInfo['hasPreviousPage'] && result.isNotLoading) { - log.d('FETCHMORE !!'); fetchMore(opts); } return true; diff --git a/lib/screens/myWallets/cesium_wallet_options.dart b/lib/screens/myWallets/cesium_wallet_options.dart index 46fde54..a6509f5 100644 --- a/lib/screens/myWallets/cesium_wallet_options.dart +++ b/lib/screens/myWallets/cesium_wallet_options.dart @@ -197,10 +197,12 @@ class CesiumWalletOptions extends StatelessWidget { return Row(children: [ ImageFiltered( imageFilter: ImageFilter.blur( - sigmaX: - _walletOptions.isBalanceBlur ? 6 : 0, - sigmaY: - _walletOptions.isBalanceBlur ? 5 : 0), + sigmaX: _walletOptions.isBalanceBlur + ? 6 + : 0.001, + sigmaY: _walletOptions.isBalanceBlur + ? 5 + : 0.001), child: Text(wBalanceUD, style: TextStyle( fontSize: isTall ? 20 : 18, diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index df12f2f..62650e2 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -213,9 +213,9 @@ class WalletOptions extends StatelessWidget { ImageFiltered( imageFilter: ImageFilter.blur( sigmaX: - walletProvider.isBalanceBlur ? 6 : 0, + walletProvider.isBalanceBlur ? 6 : 0.001, sigmaY: - walletProvider.isBalanceBlur ? 5 : 0), + walletProvider.isBalanceBlur ? 5 : 0.001), child: Text( wBalanceUD, style: TextStyle( diff --git a/lib/screens/old_history_pay.dart b/lib/screens/old_history_pay.dart deleted file mode 100644 index 6ab424c..0000000 --- a/lib/screens/old_history_pay.dart +++ /dev/null @@ -1,483 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:gecko/globals.dart'; -import 'package:gecko/models/cesium_plus.dart'; -import 'package:gecko/models/home.dart'; -import 'package:gecko/models/my_wallets.dart'; -import 'package:gecko/models/queries.dart'; -import 'package:gecko/models/wallets_profiles.dart'; -import 'package:flutter/material.dart'; -import 'package:gecko/models/wallet_data.dart'; -import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; -import 'package:gecko/screens/wallet_view.dart'; -import 'package:graphql_flutter/graphql_flutter.dart'; -import 'package:provider/provider.dart'; -import 'package:flutter_svg/flutter_svg.dart'; - -// ignore: must_be_immutable -class OldHistoryScreen extends StatelessWidget with ChangeNotifier { - final TextEditingController _outputPubkey = TextEditingController(); - ScrollController scrollController = ScrollController(); - final nRepositories = 20; - // HistoryProvider _historyProvider; - final _formKey = GlobalKey(); - final FocusNode _pubkeyFocus = FocusNode(); - final double avatarsSize = 80; - - FetchMore fetchMore; - FetchMoreOptions opts; - final GlobalKey _scaffoldKey = GlobalKey(); - - OldHistoryScreen({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - WalletsProfilesProvider _historyProvider = - Provider.of(context); - HomeProvider _homeProvider = Provider.of(context); - _outputPubkey.text = _historyProvider.pubkey; - log.i('Build pubkey : ' + _historyProvider.pubkey); - WidgetsBinding.instance.addPostFrameCallback((_) {}); - - return Scaffold( - key: _scaffoldKey, - appBar: AppBar( - toolbarHeight: 60 * ratio, - title: _homeProvider.appBarExplorer, - actions: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: IconButton( - icon: _homeProvider.searchIcon, - color: Colors.grey[850], - onPressed: () { - if (_homeProvider.searchIcon.icon == Icons.search) { - _homeProvider.searchIcon = Icon( - Icons.close, - color: Colors.grey[850], - ); - _homeProvider.appBarExplorer = TextField( - autofocus: true, - controller: _homeProvider.searchQuery, - onChanged: (text) { - log.d("Clé tappé: $text"); - if (_historyProvider.isPubkey(text)) { - _homeProvider.currentIndex = 0; - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return WalletViewScreen(pubkey: text); - }), - ); - } - }, - style: TextStyle( - color: Colors.grey[850], - ), - decoration: InputDecoration( - prefixIcon: - Icon(Icons.search, color: Colors.grey[850]), - hintText: "Rechercher ...", - hintStyle: TextStyle(color: Colors.grey[850])), - ); - _homeProvider.handleSearchStart(); - } else { - _homeProvider.handleSearchEnd(); - } - })) - ], - backgroundColor: const Color(0xffFFD58D), - ), - floatingActionButton: SizedBox( - height: 80.0, - width: 80.0, - child: FittedBox( - child: FloatingActionButton( - heroTag: "buttonScan", - onPressed: () async { - await _historyProvider.scan(context); - }, - child: SizedBox( - height: 40.0, - width: 40.0, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 3), - child: Image.asset('assets/qrcode-scan.png'))), - backgroundColor: - floattingYellow, //smoothYellow, //Color.fromARGB(500, 204, 255, 255), - ), - ), - ), - body: Column(children: [ - const SizedBox(height: 0), - if (_historyProvider.pubkey != '') - historyQuery(context, _historyProvider), - ])); - } - - Widget historyQuery(context, WalletsProfilesProvider _historyProvider) { - _pubkeyFocus.unfocus(); - // HistoryProvider _historyProvider = Provider.of(context); - CesiumPlusProvider _cesiumPlusProvider = - Provider.of(context); - bool _isFirstExec = true; - return Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Query( - options: QueryOptions( - document: gql(getHistory), - variables: { - 'pubkey': _historyProvider.pubkey, - 'number': nRepositories, - 'cursor': null - }, - ), - builder: (QueryResult result, {fetchMore, refetch}) { - if (result.isLoading && result.data == null) { - return const Center( - child: CircularProgressIndicator(), - ); - } - - if (result.hasException) { - log.e('Error GVA: ' + result.exception.toString()); - return Column(children: const [ - SizedBox(height: 50), - Text( - "Aucun noeud GVA valide n'a pu être trouvé.\nVeuillez réessayer ultérieurement.", - style: TextStyle(fontSize: 17.0), - ) - ]); - } - - if (result.data == null && result.exception.toString() == null) { - return const Text('Aucune donnée à afficher.'); - } - - num balance; - - if (result.data['balance'] == null) { - balance = 0.0; - } else { - balance = _historyProvider - .removeDecimalZero(result.data['balance']['amount'] / 100); - } - - opts = _historyProvider.checkQueryResult( - result, opts, _outputPubkey.text); - - // _historyProvider.transBC = null; - - // Build history list - return NotificationListener( - child: Builder( - builder: (context) => Expanded( - child: ListView( - key: const Key('listTransactions'), - controller: scrollController, - children: [ - const SizedBox(height: 20), - if (_historyProvider.pubkey != '') - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - if (_isFirstExec) - Container( - padding: const EdgeInsets.fromLTRB( - 20, 0, 30, 0), - child: FutureBuilder( - future: - _cesiumPlusProvider.getAvatar( - _historyProvider.pubkey, - 55), - builder: (BuildContext context, - AsyncSnapshot _avatar) { - if (_avatar.connectionState != - ConnectionState.done || - _avatar.hasError) { - return Stack(children: [ - _cesiumPlusProvider - .defaultAvatar(55), - Positioned( - top: 8, - right: 0, - width: 12, - height: 12, - child: - CircularProgressIndicator( - strokeWidth: 1, - color: orangeC, - ), - ), - ]); - } - if (_avatar.hasData) { - return ClipOval( - child: _avatar.data, - ); - } - return _cesiumPlusProvider - .defaultAvatar(55); - }), - ), - GestureDetector( - key: const Key('copyPubkey'), - onTap: () { - Clipboard.setData(ClipboardData( - text: _historyProvider.pubkey)); - _historyProvider.snackCopyKey(context); - }, - child: Text( - _historyProvider.getShortPubkey( - _historyProvider.pubkey), - style: const TextStyle( - fontSize: 22, - fontWeight: FontWeight.w800, - fontFamily: 'Monospace')), - ), - Container( - padding: const EdgeInsets.fromLTRB( - 30, 0, 5, 0), // .only(right: 15), - child: Card( - child: Column( - children: [ - SvgPicture.string( - _historyProvider - .generateIdenticon( - _historyProvider - .pubkey), - fit: BoxFit.contain, - height: 64, - width: 64, - ), - ], - ), - )), - const SizedBox(width: 0) - ]), - if (_isFirstExec) - Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - padding: - const EdgeInsets.fromLTRB(0, 0, 0, 0), - // padding: const EdgeInsets., - child: FutureBuilder( - future: _cesiumPlusProvider - .getName(_historyProvider.pubkey), - initialData: '...', - builder: (context, snapshot) { - return Text(snapshot.data ?? '-', - style: const TextStyle( - fontSize: 20)); - }), - ) - ]), - const SizedBox(height: 18), - if (_isFirstExec) - Container( - padding: - const EdgeInsets.fromLTRB(0, 0, 0, 0), - child: Text(balance.toString() + ' Ğ1', - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 18.0))), - const SizedBox(height: 20), - ElevatedButton( - key: const Key('switchPayHistory'), - style: ElevatedButton.styleFrom( - elevation: 1, - primary: Colors.grey[50], // background - onPrimary: Colors.black, // foreground - ), - onPressed: () { - _historyProvider.switchProfileView(); - }, - child: Text( - _historyProvider.historySwitchButtun, - style: TextStyle( - fontSize: 15, color: orangeC))), - // const Divider( - // color: Colors.grey, - // height: 5, - // thickness: 0.5, - // indent: 0, - // endIndent: 0, - // ), - _historyProvider.isHistoryScreen - ? historyView(context, result) - : payView(context, _historyProvider), - ], - ))), - onNotification: (t) { - if (t is ScrollEndNotification && - scrollController.position.pixels >= - scrollController.position.maxScrollExtent * 0.7) { - fetchMore(opts); - } - return true; - }); - }, - ), - ], - )); - } - - Widget payView(context, WalletsProfilesProvider _historyProvider) { - MyWalletsProvider _myWalletProvider = MyWalletsProvider(); - WalletData defaultWallet = - _myWalletProvider.getDefaultWallet(configBox.get('currentChest')); - - return Stack( - clipBehavior: Clip.hardEdge, - children: [ - Form( - key: _formKey, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const SizedBox(height: 20), - const Text('Commentaire:', style: TextStyle(fontSize: 20.0)), - Padding( - padding: const EdgeInsets.all(8.0), - child: TextField( - controller: _historyProvider.payComment, - maxLines: 2, - textAlign: TextAlign.center, - decoration: const InputDecoration(), - style: const TextStyle( - fontSize: 22, - color: Colors.black, - fontWeight: FontWeight.bold))), - const SizedBox(height: 20), - const Text('Montant (DU/Ğ1):', style: TextStyle(fontSize: 20.0)), - Padding( - padding: const EdgeInsets.all(8.0), - child: TextFormField( - style: const TextStyle(fontSize: 22), - controller: _historyProvider.payAmount, - textAlign: TextAlign.center, - maxLines: 1, - keyboardType: TextInputType.number, - decoration: InputDecoration( - contentPadding: const EdgeInsets.symmetric( - vertical: 25.0, horizontal: 10.0), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(10.0)), - ), - inputFormatters: [ - FilteringTextInputFormatter.allow(RegExp(r'(^\d*\.?\d*)')) - ], - ), - ), - Padding( - padding: const EdgeInsets.only(top: 15), - child: OutlinedButton( - style: OutlinedButton.styleFrom( - side: BorderSide(width: 2, color: orangeC)), - onPressed: () { - // if (_formKey.currentState.validate()) { - // _formKey.currentState.save(); - // } - // _historyProvider.pay(payAmount.text, payComment.text); - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return UnlockingWallet( - wallet: defaultWallet, action: "pay"); - }), - ); - }, - child: Padding( - padding: const EdgeInsets.all(12), - child: Text( - "PAYER", - style: TextStyle(fontSize: 25, color: Colors.grey[850]), - ), - ), - ), - ) - ], - ), - ), - ], - ); - } - - Widget historyView(context, result) { - WalletsProfilesProvider _historyProvider = - Provider.of(context); - HomeProvider _homeProvider = - Provider.of(context, listen: false); - int keyID = 0; - - return _historyProvider.transBC == null - ? const Text('Aucune transaction à afficher.') - : Column(children: [ - for (var repository in _historyProvider.transBC) - Padding( - padding: const EdgeInsets.symmetric(horizontal: 5.0), - child: ListTile( - key: Key('transaction${keyID++}'), - contentPadding: const EdgeInsets.all(5.0), - leading: Text(repository[1].toString(), - style: TextStyle( - fontSize: 12, - color: Colors.grey[800], - fontWeight: FontWeight.w700), - textAlign: TextAlign.center), - title: Text(repository[3], - style: const TextStyle( - fontSize: 15.0, fontFamily: 'Monospace'), - textAlign: TextAlign.center), - subtitle: Text(repository[6] != '' ? repository[6] : '-', - style: const TextStyle(fontSize: 12.0), - textAlign: TextAlign.center), - trailing: Text("${repository[4]} Ğ1", - style: const TextStyle(fontSize: 14.0), - textAlign: TextAlign.justify), - dense: true, - isThreeLine: false, - onTap: () { - if (_historyProvider.isPubkey(repository[2])) { - _homeProvider.currentIndex = 0; - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return WalletViewScreen(pubkey: repository[2]); - }), - ); - } - Navigator.pop(context); - }), - ), - if (result.isLoading && - _historyProvider.pageInfo['hasPreviousPage']) - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - CircularProgressIndicator(), - ], - ), - // if (_historyProvider.isTheEnd) // What I did before ... - if (!_historyProvider.pageInfo['hasPreviousPage']) - Column( - children: const [ - SizedBox(height: 15), - Text("Début de l'historique.", - textAlign: TextAlign.center, - style: TextStyle(fontSize: 20)), - SizedBox(height: 15) - ], - ) - ]); - } -}