From 8dac5e013fc93ac7627eed516a01981e932867ab Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Fri, 20 Oct 2017 17:06:27 +0200
Subject: [PATCH] [fix] Message: fix sending when not authenticated - fix #587

---
 .../es/js/controllers/message-controllers.js  |  2 +-
 .../es/js/services/message-services.js        | 41 ++++++++++---------
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/www/plugins/es/js/controllers/message-controllers.js b/www/plugins/es/js/controllers/message-controllers.js
index 9279da555..aa5a694fe 100644
--- a/www/plugins/es/js/controllers/message-controllers.js
+++ b/www/plugins/es/js/controllers/message-controllers.js
@@ -391,7 +391,7 @@ function ESMessageComposeModalController($scope, Modals, UIUtils, csWallet, esHt
       time: esHttp.date.now()
     };
 
-    esMessage.send(data, csWallet.data.keypair)
+    esMessage.send(data)
       .then(function(id) {
         $scope.id=id;
         UIUtils.loading.hide();
diff --git a/www/plugins/es/js/services/message-services.js b/www/plugins/es/js/services/message-services.js
index 7016878c2..0388e4126 100644
--- a/www/plugins/es/js/services/message-services.js
+++ b/www/plugins/es/js/services/message-services.js
@@ -110,27 +110,30 @@ angular.module('cesium.es.message.services', ['ngResource', 'cesium.platform',
         });
     }
 
-    function sendMessage(message, keypair) {
-      return doSendMessage(message, keypair)
-        .then(function(res){
-          var outbox = (csSettings.data.plugins.es.message &&
-          angular.isDefined(csSettings.data.plugins.es.message.outbox)) ?
-            csSettings.data.plugins.es.message.outbox : true;
+    function sendMessage(message) {
+      return csWallet.getKeypair()
+        .then(function(keypair) {
+          return doSendMessage(message, keypair)
+            .then(function (res) {
+              var outbox = (csSettings.data.plugins.es.message &&
+              angular.isDefined(csSettings.data.plugins.es.message.outbox)) ?
+                csSettings.data.plugins.es.message.outbox : true;
 
-          if (!outbox) return res;
+              if (!outbox) return res;
 
-          // Send to outbox
-          return doSendMessage(message, keypair, '/message/outbox', 'issuer')
-            .catch(function(err) {
-              console.error("Failed to store message to outbox: " + err);
-              return res; // the first result
-            });
-        })
-        .then(function(res) {
-          // Raise event
-          api.data.raise.sent(res);
+              // Send to outbox
+              return doSendMessage(message, keypair, '/message/outbox', 'issuer')
+                .catch(function (err) {
+                  console.error("Failed to store message to outbox: " + err);
+                  return res; // the first result
+                });
+            })
+            .then(function (res) {
+              // Raise event
+              api.data.raise.sent(res);
 
-          return res;
+              return res;
+            });
         });
     }
 
@@ -482,7 +485,7 @@ angular.module('cesium.es.message.services', ['ngResource', 'cesium.platform',
         .then(function(keypair) {
           return $q.all(developers.reduce(function(res, developer){
             return !developer.pubkey ? res :
-              res.concat(sendMessage(angular.merge({recipient: developer.pubkey}, message), keypair));
+              res.concat(doSendMessage(angular.merge({recipient: developer.pubkey}, message), keypair));
           }, []));
         })
         .then(function(res) {
-- 
GitLab