From 20c5ebafcc8563d6e2d1e35495344d7ea8dd862a Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Wed, 8 Jun 2022 03:14:08 +0200
Subject: [PATCH] canPay: detect creations fees if needed; can't empty your own
 wallet

---
 lib/providers/wallet_options.dart        |  2 +-
 lib/screens/transaction_in_progress.dart |  8 ++++----
 lib/screens/wallet_view.dart             | 12 +++++++++---
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index 8a59d155..c73ff4a7 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -73,7 +73,7 @@ class WalletOptionsProvider with ChangeNotifier {
             Provider.of<MyWalletsProvider>(context, listen: false);
         final _defaultWallet = _myWalletProvider.getDefaultWallet();
         log.d(_defaultWallet.address);
-        await _sub.pay(
+        _sub.pay(
             fromAddress: wallet.address!,
             destAddress: _defaultWallet.address!,
             amount: -1,
diff --git a/lib/screens/transaction_in_progress.dart b/lib/screens/transaction_in_progress.dart
index 5bff32d9..858b3be5 100644
--- a/lib/screens/transaction_in_progress.dart
+++ b/lib/screens/transaction_in_progress.dart
@@ -102,19 +102,19 @@ class TransactionInProgress extends StatelessWidget {
               case 'cert.NotRespectCertPeriod':
               case 'identity.CreatorNotAllowedToCreateIdty':
                 {
-                  _resultText +=
+                  _resultText =
                       "Vous devez attendre 24h entre chaque certification";
                 }
                 break;
               case 'cert.CannotCertifySelf':
                 {
-                  _resultText +=
+                  _resultText =
                       "Vous ne pouvez pas vous certifier\nvous même ...";
                 }
                 break;
               case 'identity.IdtyNameAlreadyExist':
                 {
-                  _resultText += "Ce nom est déjà pris";
+                  _resultText = "Ce nom est déjà pris";
                 }
                 break;
               case 'balances.KeepAlive':
@@ -129,12 +129,12 @@ class TransactionInProgress extends StatelessWidget {
                       "Vous devez alimenter ce compte avant\nde pouvoir l'utiliser";
                 }
                 break;
+
               case 'timeout':
                 {
                   _resultText += "Le délais d'éxecution est dépassé";
                 }
                 break;
-
               default:
                 {
                   _resultText += "\n$_exception";
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index 0a875ca1..3c8b0653 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -423,11 +423,16 @@ class WalletViewScreen extends StatelessWidget {
           return StatefulBuilder(
               builder: (BuildContext context, StateSetter setState) {
             if (_walletViewProvider.payAmount.text != '' &&
-                double.parse(_walletViewProvider.payAmount.text) <=
+                (double.parse(_walletViewProvider.payAmount.text) + 2) <=
                     double.parse(
                         balanceCache[defaultWallet.address]!.split(' ')[0]) &&
                 _walletViewProvider.address != defaultWallet.address) {
-              canValidate = true;
+              if (balanceCache[pubkey] == '0.0 $currencyName' &&
+                  double.parse(_walletViewProvider.payAmount.text) < 5) {
+                canValidate = false;
+              } else {
+                canValidate = true;
+              }
             } else {
               canValidate = false;
             }
@@ -736,7 +741,8 @@ class WalletViewScreen extends StatelessWidget {
 
                 balance(context, pubkey!, 22),
                 const SizedBox(height: 10),
-                _walletOptions.idtyStatus(context, pubkey!, isOwner: false, color: Colors.black),
+                _walletOptions.idtyStatus(context, pubkey!,
+                    isOwner: false, color: Colors.black),
                 getCerts(context, pubkey!, 14),
 
                 // if (username == null &&
-- 
GitLab