From 699b960820e89ae127e5547cb6bf80929550b5f6 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Mon, 8 Apr 2019 10:42:42 +0200
Subject: [PATCH] [fix] API: fix Cancel when no amount select [fix] API: fix
 amount select on small screen

---
 www/i18n/locale-fr-FR.json      |  4 ++--
 www/js/api/app.js               | 11 +++++------
 www/templates/api/transfer.html | 33 +++++++++++++++++++++------------
 3 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json
index a57744edc..890764df4 100644
--- a/www/i18n/locale-fr-FR.json
+++ b/www/i18n/locale-fr-FR.json
@@ -913,12 +913,12 @@
     "TRANSFER": {
       "TITLE": "{{'COMMON.APP_NAME'|translate}} - Paiement en ligne",
       "TITLE_SHORT": "Paiement en ligne",
-      "SUMMARY": "Récapitulatif de la commande :",
+      "SUMMARY": "Récapitulatif du paiement :",
       "AMOUNT": "Montant :",
       "AMOUNTS_HELP": "Veuillez choisir le montant :",
       "NAME": "Nom :",
       "PUBKEY": "Clé publique du destinataire :",
-      "COMMENT": "Référence de la commande :",
+      "COMMENT": "Référence de l'opération :",
       "NODE": "Addresse du nœud :",
       "DEMO": {
         "SALT": "demo",
diff --git a/www/js/api/app.js b/www/js/api/app.js
index 748300375..c478b7220 100644
--- a/www/js/api/app.js
+++ b/www/js/api/app.js
@@ -393,7 +393,7 @@ angular.module('cesium-api', ['ionic', 'ionic-material', 'ngMessages', 'pascalpr
 
       // Make sure amount require fields
       if (!$scope.transferData.amount || !$scope.transferData.pubkey) {
-        $scope.transferData.error = true;
+        $scope.form.$submitted=true;
         UIUtils.loading.hide();
         return $q.reject();
       }
@@ -418,6 +418,8 @@ angular.module('cesium-api', ['ionic', 'ionic-material', 'ngMessages', 'pascalpr
           });
         })
         .then(function(walletData) {
+          if (!walletData) return;
+
           $scope.login = true;
 
           UIUtils.loading.hide();
@@ -495,7 +497,7 @@ angular.module('cesium-api', ['ionic', 'ionic-material', 'ngMessages', 'pascalpr
           url = url.replace(/\{pubkey\}/g, $scope.transferData.pubkey);
           url = url.replace(/\{hash\}/g, txRes.hash||'');
           url = url.replace(/\{comment\}/g, $scope.transferData.comment||'');
-          url = url.replace(/\{amount\}/g, $scope.transferData.amount.toString());
+          url = url.replace(/\{amount\}/g, $scope.transferData.amount && ($scope.transferData.amount/100).toString() || '');
           url = url.replace(/\{tx\}/g, encodeURI(txRes.tx));
           url = url.replace(/\{node\}/g, encodeURI(BMA.host+':'+BMA.port));
 
@@ -519,7 +521,7 @@ angular.module('cesium-api', ['ionic', 'ionic-material', 'ngMessages', 'pascalpr
           // Make replacements - fix #548
           url = url.replace(/\{pubkey\}/g, $scope.transferData.pubkey);
           url = url.replace(/\{comment\}/g, $scope.transferData.comment||'');
-          url = url.replace(/\{amount\}/g, $scope.transferData.amount.toString());
+          url = url.replace(/\{amount\}/g, $scope.transferData.amount && ($scope.transferData.amount/100).toString() || '');
 
           return $scope.redirectToUrl(url, 1500);
         });
@@ -545,9 +547,6 @@ angular.module('cesium-api', ['ionic', 'ionic-material', 'ngMessages', 'pascalpr
 
     /* -- methods need by Login controller -- */
 
-    $scope.setForm = function(form) {
-      $scope.form = form;
-    };
     $scope.closeModal = onLogin;
 
   })
diff --git a/www/templates/api/transfer.html b/www/templates/api/transfer.html
index 28742af80..8f75adb22 100644
--- a/www/templates/api/transfer.html
+++ b/www/templates/api/transfer.html
@@ -19,7 +19,7 @@
       <small class="ion-arrow-down-b"></small>
     </button>
 
-    <button class="button button-positive button-icon button-clear icon ion-android-done visible-xs" ng-click="doLogin()">
+    <button class="button button-positive button-icon button-clear icon ion-android-send visible-xs" ng-click="doLogin()">
     </button>
   </ion-nav-buttons>
 
@@ -49,7 +49,7 @@
         </div>
         <br class="hidden-xs"/>
         <br class="hidden-xs"/>
-        <div class="list padding no-padding-xs light-bg expert-mode">
+        <div class="list padding no-padding-xs light-bg">
           <div class="item">
             <p translate>API.TRANSFER.SUMMARY</p>
           </div>
@@ -61,21 +61,30 @@
             <div class="badge item-note badge-calm ng-hide" ng-show="!loading"  ng-bind-html="transferData.amount|formatAmount:{useRelative: false, currency: currency.name}"></div>
             <div class="item-note badge-secondary ng-hide" ng-show="!loading" ng-bind-html="transferData.amount|formatAmount:{useRelative: true, currency: currency.name, currentUD: currency.currentUD}"></div>
           </div>
+
           <!-- Amounts -->
-          <label ng-if="transferData.amounts"
-                 class="item item-icon-left-padding item-tx no-border"
-                ng-class="{'item-input item-select': transferData.amounts}">
-            <span class="input-label" translate>API.TRANSFER.AMOUNT</span>
+          <ion-item
+                 class="item-icon-left-padding item-input item-select"
+                 ng-class="{ 'item-input-error': form.$submitted && !transferData.amount}">
+            <div class="input-label" translate>API.TRANSFER.AMOUNT</div>
             <select ng-model="transferData.amount"
                     required="true"
                     ng-options="(amount |formatAmount:{useRelative: false, currency: currency.name}) for amount in transferData.amounts">
             </select>
-            <h3 class="assertive" ng-if="!transferData.amount">
-              <i class="icon ion-alert-circled" ng-if="transferData.error"></i>
-              <span translate>API.TRANSFER.AMOUNTS_HELP</span>
-            </h3>
-            <span class="gray badge-secondary" ng-bind-html="transferData.amount|formatAmount:{useRelative: true, currency: currency.name, currentUD: currency.currentUD}"></span>
-          </label>
+            <div class="hidden-xs hidden-sm">
+              <h3 class="assertive" ng-if="!transferData.amount">
+                <i class="icon ion-alert-circled" ng-if="form.$submitted && !transferData.amount"></i>
+                <span translate>API.TRANSFER.AMOUNTS_HELP</span>
+              </h3>
+              <span class="gray badge-secondary " ng-bind-html="transferData.amount|formatAmount:{useRelative: true, currency: currency.name, currentUD: currency.currentUD}"></span>
+            </div>
+          </ion-item>
+          <div class="form-errors"
+               ng-if="form.$submitted && !transferData.amount">
+            <div class="form-error">
+              <span translate="ERROR.FIELD_REQUIRED"></span>
+            </div>
+          </div>
 
           <div class="item item-icon-left-padding" >
             <h2 translate>API.TRANSFER.NAME</h2>
-- 
GitLab