diff --git a/www/js/services/wallet-services.js b/www/js/services/wallet-services.js
index 4b1d0481952eef08b18b38670ec1a0b4ed265a1d..3af70632ee1075493518d7369900219117aa2feb 100644
--- a/www/js/services/wallet-services.js
+++ b/www/js/services/wallet-services.js
@@ -136,11 +136,22 @@ angular.module('cesium.wallet.services', ['ngApi', 'ngFileSaver', 'cesium.bma.se
               };
           }
 
-          // Call extend api
           if (needLogin) {
-            return api.data.raisePromise.login(data);
+            // extend API to check login validity
+            return api.data.raisePromise.loginCheck(data)
+              .catch(function (err) {
+                resetData(); // Reset data if not valid, then exit process
+                throw err;
+              })
+              // Call extend api
+              .then(function() {
+                if (needLogin) {
+                  return api.data.raisePromise.login(data);
+                }
+              });
           }
         })
+
         .then(function() {
           // store wallet if need
           if (csSettings.data.useLocalStorage) {
@@ -1609,7 +1620,8 @@ angular.module('cesium.wallet.services', ['ngApi', 'ngFileSaver', 'cesium.bma.se
 
     // Register extension points
     api.registerEvent('data', 'init');
-    api.registerEvent('data', 'login');
+    api.registerEvent('data', 'loginCheck'); // allow to stop the login process
+    api.registerEvent('data', 'login'); // executed after login check (cannot stop the login process)
     api.registerEvent('data', 'auth');
     api.registerEvent('data', 'unauth');
     api.registerEvent('data', 'load');
diff --git a/www/lib/ionic/js/angular/angular-api.js b/www/lib/ionic/js/angular/angular-api.js
index bac12860f3f7ba634f7e1288649a44fbd99bf93a..ce7526eae9f798ab9ea2e9b9e49f42e3743d81f8 100644
--- a/www/lib/ionic/js/angular/angular-api.js
+++ b/www/lib/ionic/js/angular/angular-api.js
@@ -118,11 +118,19 @@
                   };
                   deferred.checkFinish = function() {
                     if (deferred.count < listenerCount) return;
+                    deferred.count = 0;
                     if (deferred.errors.length) {
-                        deferred.raw.reject(deferred.errors);
+                        if (deferred.errors.length == 1) {
+                            deferred.raw.reject(deferred.errors[0]);
+                        }
+                        else {
+                            deferred.raw.reject(deferred.errors);
+                        }
+                        deferred.errors = [];
                     }
                     else {
                         deferred.raw.resolve(deferred.results);
+                        deferred.results = [];
                     }
                   };
                   deferred.resolve = function(result) {
diff --git a/www/plugins/es/js/controllers/wot-controllers.js b/www/plugins/es/js/controllers/wot-controllers.js
index 749705f4f2dec9defa449dff714999af09290d25..0c959ff8bbddb67adfd1ffc640621059cd4676af 100644
--- a/www/plugins/es/js/controllers/wot-controllers.js
+++ b/www/plugins/es/js/controllers/wot-controllers.js
@@ -76,6 +76,9 @@ function ESWotIdentityViewController($scope, $ionicPopover, $q, UIUtils, Modals,
         return esModals.showMessageCompose({
           destPub: $scope.formData.pubkey,
           destUid: $scope.formData.name||$scope.formData.uid
+        })
+        .then(function(send) {
+          if (send) UIUtils.toast.show('MESSAGE.INFO.MESSAGE_SENT');
         });
       });
   };