From ab90615a851fc9cc9b756d9752e54231e671febc Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Mon, 15 May 2017 17:15:49 +0200
Subject: [PATCH] [fix] join wizard: fix uid check

---
 www/i18n/locale-fr-FR.json                |  2 +-
 www/js/controllers/join-controllers.js    | 15 ++++++++++-----
 www/templates/join/modal_join_member.html | 18 +++++++-----------
 3 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json
index 076723290..2fd9a56cd 100644
--- a/www/i18n/locale-fr-FR.json
+++ b/www/i18n/locale-fr-FR.json
@@ -400,7 +400,7 @@
       "CONFIRMATION_WALLET_ACCOUNT": "<b class=\"assertive\">Avertissement :</b> l'identifiant secret et le mot de passe ne pourront plus être modifiés.<br/><br/><b>Assurez-vous de toujours vous en rappeller !</b><br/><br/><b>Etes-vous sûr</b> de vouloir continuer avec ces identifiants ?",
       "PSEUDO_AVAILABLE": "Pseudonyme disponible",
       "PSEUDO_NOT_AVAILABLE": "Pseudonyme non disponible",
-      "INFO_LICENSE": "Avant d'adhérer à la monnaie, veuillez <b>lire et accepter la licence</b> d'usage de la monnaie :",
+      "INFO_LICENSE": "Avant de créer un compte membre, <b>veuillez lire et accepter la licence</b> d'usage de la monnaie :",
       "BTN_ACCEPT": "J'accepte",
       "BTN_ACCEPT_LICENSE": "J'accepte la license"
     },
diff --git a/www/js/controllers/join-controllers.js b/www/js/controllers/join-controllers.js
index 7e147cad3..f5f0b728f 100644
--- a/www/js/controllers/join-controllers.js
+++ b/www/js/controllers/join-controllers.js
@@ -233,6 +233,9 @@ function JoinModalController($scope, $state, $interval, $timeout, UIUtils, Crypt
       if(!$scope[formName].$valid) {
         return;
       }
+      if (formName === "pseudoForm" && $scope.uiAlreadyUsed) {
+        return;
+      }
       if (formName === "passwordForm") {
         $scope.showAccountPubkey();
       }
@@ -369,7 +372,10 @@ function JoinModalController($scope, $state, $interval, $timeout, UIUtils, Crypt
   };
 
   $scope.checkUid = function(){
-    if (!$scope.formData.pseudo || !$scope.formData.pseudo.length) return;
+    if (!$scope.formData.pseudo || !$scope.formData.pseudo.length) {
+      $scope.uiAlreadyUsed = undefined;
+      return;
+    }
 
     var uid = $scope.formData.pseudo.toUpperCase();
     $scope.formData.computing=true;
@@ -377,20 +383,19 @@ function JoinModalController($scope, $state, $interval, $timeout, UIUtils, Crypt
     // search on uid
     BMA.wot.lookup({ search: uid })
       .then(function(res) {
-        var uidAlreadyUsed = (res.results || []).some(function(pub){
+        $scope.uiAlreadyUsed = (res.results || []).some(function(pub){
             return (pub.uids || []).some(function(idty) {
                 return (idty.uid.toUpperCase() === uid); // same Uid
               });
           });
-        $scope.isUidValid = !uidAlreadyUsed;
         $scope.formData.computing=false;
       })
       .catch(function(err){
         $scope.formData.computing=false;
-        $scope.isUidValid = true;
+        $scope.uiAlreadyUsed = false;
       });
   };
-  //$scope.$watch('formData.pseudo', $scope.checkUid, true);
+  $scope.$watch('formData.pseudo', $scope.checkUid, true);
 
   $scope.checkAccountAvailable = function() {
     var pub = $scope.formData.pubkey;
diff --git a/www/templates/join/modal_join_member.html b/www/templates/join/modal_join_member.html
index 3f4f28e2a..9607f991a 100644
--- a/www/templates/join/modal_join_member.html
+++ b/www/templates/join/modal_join_member.html
@@ -84,7 +84,7 @@
 
               <!-- pseudo -->
               <div class="item item-input"
-                   ng-class="{'item-input-error': pseudoForm.$submitted && pseudoForm.pseudo.$invalid}">
+                   ng-class="{'item-input-error': (pseudoForm.$submitted && pseudoForm.pseudo.$invalid) || (uiAlreadyUsed && formData.pseudo)}">
                 <span class="input-label" translate>ACCOUNT.NEW.PSEUDO</span>
                 <input name="pseudo" type="text" placeholder="{{'ACCOUNT.NEW.PSEUDO_HELP' | translate}}"
                        ng-model="formData.pseudo"
@@ -109,26 +109,22 @@
                 <div class="form-error" ng-message="pattern">
                   <span translate="ERROR.INVALID_USER_ID"></span>
                 </div>
-                <div class="form-error" ng-message="uidAlreadyUsed">
-                  <!--<i class="icon ion-close-circled assertive"></i>-->
-                  <span translate="ACCOUNT.NEW.PSEUDO_NOT_AVAILABLE"></span>
-                </div>
               </div>
 
               <!-- Show if valid pseudo-->
               <div class="item item-button-right left" ng-if="formData.computing && formData.pseudo">
                   <ion-spinner icon="android"></ion-spinner>
               </div>
-              <!--<div class="form-errors">
-                <ion-item class="item-icon-left" ng-if="!UIDFound && !formData.computing && formData.pseudo">
+              <div class="text-right" ng-if="!formData.computing">
+                <div class="form-error balanced" ng-if="!uiAlreadyUsed && formData.pseudo">
                   <i class="icon ion-checkmark balanced"></i>
                   <span translate>ACCOUNT.NEW.PSEUDO_AVAILABLE</span>
-                </ion-item>
-                <ion-item class="item-icon-left" ng-if="UIDFound && !formData.computing && formData.pseudo">
+                </div>
+                <div class="form-error" ng-if="uiAlreadyUsed && formData.pseudo">
                   <i class="icon ion-close-circled assertive"></i>
                   <span translate>ACCOUNT.NEW.PSEUDO_NOT_AVAILABLE</span>
-                </ion-item>
-              </div>-->
+                </div>
+              </div>
 
               <div class="padding hidden-xs text-right">
                 <button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL
-- 
GitLab