From fe88da958ba235951c5933fe8ace42084f8795cf Mon Sep 17 00:00:00 2001 From: blavenie <benoit.lavenier@e-is.pro> Date: Mon, 31 Dec 2018 13:30:47 +0100 Subject: [PATCH] [fix] Make sure to save settings locally, event if Duniter node is down - fix #788 --- www/js/controllers/settings-controllers.js | 16 ++++++++++++---- www/js/services/settings-services.js | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/www/js/controllers/settings-controllers.js b/www/js/controllers/settings-controllers.js index 245a393e..0f880533 100644 --- a/www/js/controllers/settings-controllers.js +++ b/www/js/controllers/settings-controllers.js @@ -84,10 +84,18 @@ function SettingsController($scope, $q, $ionicHistory, $ionicPopup, $timeout, $t $q.all([ csSettings.ready(), csCurrency.parameters() + .then(function(parameters) { + return parameters && parameters.avgGenTime; + }) + // Make sure to continue even if node is down - Fix #788 + .catch(function(err) { + console.error("[settings] Could not not currency parameters. Using default 'avgGenTime' (300)", err); + return {avgGenTime: 300}; + }) .then(function(parameters) { _.each($scope.blockValidityWindows, function(blockCount) { if (blockCount > 0) { - $scope.blockValidityWindowLabels[blockCount].labelParams.time=parameters.avgGenTime * blockCount; + $scope.blockValidityWindowLabels[blockCount].labelParams.time= parameters.avgGenTime * blockCount; } }); }) @@ -153,7 +161,7 @@ function SettingsController($scope, $q, $ionicHistory, $ionicPopup, $timeout, $t .then(function(newNode) { if (newNode.host === $scope.formData.node.host && newNode.port === $scope.formData.node.port && - newNode.useSsl === $scope.formData.node.useSsl) { + newNode.useSsl === $scope.formData.node.useSsl && !$scope.formData.node.temporary) { return; // same node = nothing to do } UIUtils.loading.show(); @@ -169,8 +177,8 @@ function SettingsController($scope, $q, $ionicHistory, $ionicPopup, $timeout, $t }); } UIUtils.loading.hide(); - $scope.formData.node = newNode; - delete $scope.formData.temporary; + angular.merge($scope.formData.node, newNode); + delete $scope.formData.node.temporary; BMA.copy(nodeBMA); $scope.bma = BMA; diff --git a/www/js/services/settings-services.js b/www/js/services/settings-services.js index d6e90035..ae153061 100644 --- a/www/js/services/settings-services.js +++ b/www/js/services/settings-services.js @@ -199,7 +199,7 @@ angular.module('cesium.settings.services', ['ngApi', 'cesium.config']) angular.merge(data, newData); // Delete temporary properties, if false - if (!data.node.temporary) delete data.node.temporary; + if (!newData.node.temporary || !data.node.temporary) delete data.node.temporary; // Always force the usage of default settings // This is a workaround for DEV (TODO: implement edition in settings ?) -- GitLab