From 1f5f53bd7134740bb0f670b6897df4e61f0e1dab Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Fri, 25 Mar 2016 11:12:57 +0100
Subject: [PATCH] Fix ucoin#10 crash on windows

---
 .../init/create/RootBlockController.js        | 26 +++++++++++++------
 app/js/lib/conf/conf.js                       |  3 ++-
 app/js/services/bma.js                        |  2 +-
 app/views/init/create/create_root.jade        |  2 +-
 4 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/app/js/controllers/init/create/RootBlockController.js b/app/js/controllers/init/create/RootBlockController.js
index 51160ac..b52cddd 100644
--- a/app/js/controllers/init/create/RootBlockController.js
+++ b/app/js/controllers/init/create/RootBlockController.js
@@ -7,6 +7,7 @@ module.exports = ($scope, $http, $state, BMA) => {
 
   $scope.generated = '';
   $scope.started = false;
+  $scope.message = 'configuration.create_root.need_a_try';
 
   co(function *() {
     try {
@@ -19,12 +20,16 @@ module.exports = ($scope, $http, $state, BMA) => {
   });
 
   $scope.start = () => co(function *() {
-    yield BMA.webmin.server.http.start();
-    $scope.started = true;
-    yield BMA.webmin.server.sendConf({
-      conf: $scope.$parent.conf
-    });
-    yield $scope.try();
+    try {
+      yield BMA.webmin.server.http.start();
+      $scope.started = true;
+      yield BMA.webmin.server.sendConf({
+        conf: $scope.$parent.conf
+      });
+      yield $scope.try();
+    } catch (e) {
+      $scope.message = e.message;
+    }
   });
 
   $scope.stop = () => co(function *() {
@@ -33,8 +38,13 @@ module.exports = ($scope, $http, $state, BMA) => {
   });
 
   $scope.try = () => co(function *() {
-    $scope.block = yield BMA.webmin.server.previewNext();
-    $scope.generated = $scope.block.raw;
+    try {
+      $scope.block = yield BMA.webmin.server.previewNext();
+      $scope.generated = $scope.block.raw;
+      $scope.message = '';
+    } catch (e) {
+      $scope.message = e.message;
+    }
   });
 
   $scope.accept = () => co(function *() {
diff --git a/app/js/lib/conf/conf.js b/app/js/lib/conf/conf.js
index f5e5f5b..3629194 100644
--- a/app/js/lib/conf/conf.js
+++ b/app/js/lib/conf/conf.js
@@ -2,5 +2,6 @@ module.exports = {
   "server": "", // Empty server will use the browser current host
   "port": "",   // Empty port will use the browser current port
   "default_port": 9220,
-  "dev_autoconf": false
+  "dev_autoconf": false,
+  "api_timeout": 10000 // 10 sec timeout
 };
diff --git a/app/js/services/bma.js b/app/js/services/bma.js
index 427faf0..6c3fa8e 100644
--- a/app/js/services/bma.js
+++ b/app/js/services/bma.js
@@ -14,7 +14,7 @@ module.exports = (angular) => {
           return function(params) {
             return $q.when(Q.Promise((resolve, reject) => {
               var config = {
-                timeout: 4000
+                timeout: conf.api_timeout
               }, suffix = '', pkeys = [], queryParams = null;
               if (typeof params == 'object') {
                 pkeys = _.keys(params);
diff --git a/app/views/init/create/create_root.jade b/app/views/init/create/create_root.jade
index 64629a0..42abced 100644
--- a/app/views/init/create/create_root.jade
+++ b/app/views/init/create/create_root.jade
@@ -24,7 +24,7 @@
         .card-action
 
           pre.card-panel.teal.white-text.code.left-align.small(ng-show="generated") {{ generated }}
-          blockquote.card-panel.left-align(ng-show="!generated") {{ 'configuration.create_root.need_a_try' | translate }}
+          blockquote.card-panel.left-align(ng-show="message") {{ message | translate }}
 
 
         .card-action
-- 
GitLab