diff --git a/package.json b/package.json index e15ca95b0eb593c06d5d4607a4079a41c6533869..fa5eca2a919bb4f0015c0e51543540bdd3fa06f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cesium", - "version": "0.1.3", + "version": "0.1.4", "description": "A webapp client for Duniter network", "dependencies": { "gulp": "^3.9.1", diff --git a/www/i18n/locale-en.json b/www/i18n/locale-en.json index f5a3e4346ef16bcc1de935476f4a3df3396e0dd2..02e9c1eb3fb0f83fbf2ae11872dadbd799c67af9 100644 --- a/www/i18n/locale-en.json +++ b/www/i18n/locale-en.json @@ -58,6 +58,7 @@ "NODE": "Duniter Node", "NODE_HELP": "server.domain.com:port", "USE_LOCAL_STORAGE": "Enable local storage", + "REMEMBER_ME": "Remember me", "POPUP_NODE": { "TITLE" : "Duniter Node", "HELP" : "Set the address of the node to use:" diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json index 42cc282799cd5423eab4f63abf7723cfda53b827..3ac8c44ac3cbd84ff483471ad5d29da925afb5ac 100644 --- a/www/i18n/locale-fr-FR.json +++ b/www/i18n/locale-fr-FR.json @@ -58,6 +58,7 @@ "NODE": "Noeud Duniter", "NODE_HELP": "server.domain.com:port", "USE_LOCAL_STORAGE": "Activer le stockage local", + "REMEMBER_ME": "Se rappeller de moi", "POPUP_NODE": { "TITLE" : "Noeud Duniter", "HELP" : "Saisissez l'adresse du noeud que vous voulez utiliser :" diff --git a/www/js/config.js b/www/js/config.js index ee8122747b0290c4b17b4541c49052816e17ce1e..54af8481cf9e198cbf2505f44ade82f9e16e687c 100644 --- a/www/js/config.js +++ b/www/js/config.js @@ -14,8 +14,8 @@ angular.module("cesium.config", []) "TIMEOUT": 4000, "DEBUG": false, "NATIVE_TRANSITION": false, - "VERSION": "0.1.3", - "BUILD_DATE": "2016-05-26T23:07:50.994Z" + "VERSION": "0.1.4", + "BUILD_DATE": "2016-05-28T17:53:04.922Z" }) ; \ No newline at end of file diff --git a/www/js/controllers/app-controllers.js b/www/js/controllers/app-controllers.js index a19698bea18f9a35940f7c42150e1508775fc4f3..b44c534d48a5bbbb6ae61bdc50cd926546366b6a 100644 --- a/www/js/controllers/app-controllers.js +++ b/www/js/controllers/app-controllers.js @@ -68,8 +68,7 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti }; // Login and load wallet - $scope.loadWallet = function(allowCancel) { - if (!allowCancel) {allowCancel = false;} + $scope.loadWallet = function() { return $q(function(resolve, reject){ if (!Wallet.isLogin()) { @@ -95,12 +94,7 @@ function LoginModalController($scope, $rootScope, $ionicModal, Wallet, CryptoUti .catch(UIUtils.onError('ERROR.LOAD_WALLET_DATA_ERROR', reject)); }, function() { // user cancel callback - if (allowCancel) { - resolve(); - } - else { - reject(); - } + reject('CANCELLED'); }); } }) diff --git a/www/js/controllers/settings-controllers.js b/www/js/controllers/settings-controllers.js index 0aff62acfe2bec688f5e56d26ef4f62dc6f346ba..7fcf6f7cf375cc975fa223ffcb55738a2889e927 100644 --- a/www/js/controllers/settings-controllers.js +++ b/www/js/controllers/settings-controllers.js @@ -25,30 +25,23 @@ function SettingsController($scope, $state, UIUtils, Wallet, $translate, BMA, $q {id:'fr-FR', label:'Français'}, {id:'en', label:'English'} ]; - $scope.formData = { // Init with default settings - useRelative: Wallet.defaultSettings.useRelative, - node: Wallet.defaultSettings.node, - useLocalStorage: Wallet.defaultSettings.useLocalStorage - } - $scope.formData.locale = _.findWhere($scope.locales, {id: $translate.use()}); + $scope.formData = angular.copy(Wallet.defaultSettings); $scope.loading = true; $scope.$on('$ionicView.enter', function(e, $state) { $scope.loading = true; // to avoid the call of Wallet.store() - $scope.loadWallet(true/*allowCancel*/) - .then(function(walletData) { - if (walletData) { - $scope.formData.useRelative = walletData.settings.useRelative; - $scope.formData.node = walletData.settings.node; - $scope.formData.useLocalStorage = walletData.settings.useLocalStorage; - if (walletData.settings.locale && walletData.settings.locale.id) { - $scope.formData.locale = _.findWhere($scope.locales, {id: walletData.settings.locale.id}); - } - } - UIUtils.loading.hide(); - $scope.loading = false; - }) - .catch(UIUtils.onError()); + $scope.formData.locale = _.findWhere($scope.locales, {id: $translate.use()}); + Wallet.restore() + .then(function() { + angular.merge($scope.formData, Wallet.data.settings); + $scope.formData.locale = _.findWhere($scope.locales, {id: Wallet.data.settings.locale.id}); + UIUtils.loading.hide(); + $scope.loading = false; + }) + .catch(function(err) { + $scope.loading = false; + UIUtils.loading.hide(); + }); }); $scope.setSettingsForm = function(settingsForm) { @@ -132,17 +125,11 @@ function SettingsController($scope, $state, UIUtils, Wallet, $translate, BMA, $q $scope.onSettingsChanged = function() { if (!$scope.loading) { - Wallet.data.settings.useRelative = $scope.formData.useRelative; - Wallet.data.settings.node = $scope.formData.node; - Wallet.data.settings.locale.id = $scope.formData.locale.id; - Wallet.data.settings.useLocalStorage = $scope.formData.useLocalStorage; + angular.merge(Wallet.data.settings, $scope.formData); Wallet.store(); } }; - $scope.$watch('formData.useRelative', $scope.onSettingsChanged, true); - $scope.$watch('formData.node', $scope.onSettingsChanged, true); - $scope.$watch('formData.locale', $scope.onSettingsChanged, true); - $scope.$watch('formData.useLocalStorage', $scope.onSettingsChanged, true); + $scope.$watch('formData', $scope.onSettingsChanged, true); // Set Ink $timeout(function() { diff --git a/www/js/services/wallet-services.js b/www/js/services/wallet-services.js index f312494538c6259570ff7da5c48201a256664170..5eb79b4c47284612128b9d1bef108b88dcb61cf8 100644 --- a/www/js/services/wallet-services.js +++ b/www/js/services/wallet-services.js @@ -12,8 +12,8 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' useRelative: true, timeWarningExpire: 129600 /*TODO: =1.5j est-ce suffisant ?*/, useLocalStorage: false, - node: BMA.node.url, - locale: {id: $translate.use()} + rememberMe: false, + node: BMA.node.url }, data = { @@ -32,7 +32,7 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' medianTime: null, history: {}, requirements: {}, - isMember: false, + isMember: false, loaded: false, blockUid: null, members: [], @@ -40,13 +40,14 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' settings: { useRelative: defaultSettings.useRelative, timeWarningExpire: defaultSettings.timeWarningExpire, - locale: defaultSettings.locale, + locale: {id: $translate.use()}, useLocalStorage: defaultSettings.useLocalStorage, + rememberMe: defaultSettings.rememberMe, node: defaultSettings.node } }, - resetData = function(resetSettings) { + resetData = function() { data.pubkey= null; data.keypair ={ signSk: null, @@ -66,11 +67,13 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' data.blockUid = null; data.members = []; data.avatar = null; - if (!!resetSettings) { + if (!data.settings.useLocalStorage) { data.settings = { useRelative: defaultSettings.useRelative, timeWarningExpire: defaultSettings.timeWarningExpire, + locale: {id: $translate.use()}, useLocalStorage: defaultSettings.useLocalStorage, + rememberMe: defaultSettings.rememberMe, node: BMA.node.url // If changed, use the updated url }; } @@ -148,6 +151,9 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' // Copy result to properties data.pubkey = CryptoUtils.util.encode_base58(keypair.signPk); data.keypair = keypair; + if (data.settings.useLocalStorage) { + store(); + } resolve(data); } ); @@ -157,11 +163,8 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' logout = function(username, password) { return $q(function(resolve, reject) { - var resetSettings = !data.settings.useLocalStorage; - resetData(resetSettings); - if (data.settings.useLocalStorage) { - store(); - } + resetData(); // will reset keypair + store(); // store (if local storage enable) resolve(); }); }, @@ -174,7 +177,7 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' if (data.settings.useLocalStorage) { localStorage.setObject('CESIUM_SETTINGS', data.settings); - if (isLogin()) { + if (isLogin() && data.settings.rememberMe) { var dataToStore = { keypair: data.keypair, pubkey: data.pubkey @@ -191,7 +194,7 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' } }, - restore = function(enableLoadData) { + restore = function() { return $q(function(resolve, reject){ var settings = localStorage.getObject('CESIUM_SETTINGS'); var dataStr = localStorage.get('CESIUM_DATA'); @@ -214,15 +217,6 @@ angular.module('cesium.wallet.services', ['ngResource', 'cesium.bma.services', ' data.keypair = storedData.keypair; data.pubkey = storedData.pubkey; data.loaded = false; - if (enableLoadData) { - loadData() - .then(function() { - resolve(); - }) - .catch(function(err) { - reject(err); - }); - } } resolve(); }) diff --git a/www/templates/settings/settings.html b/www/templates/settings/settings.html index e4fce26d1a9c34e03ca752f15183abbc4c5b42c0..7348292335083b9433f71849ae8a3b22f7213027 100644 --- a/www/templates/settings/settings.html +++ b/www/templates/settings/settings.html @@ -23,6 +23,16 @@ </select> </label> + <div class="item item-toggle dark"> + {{'SETTINGS.REMEMBER_ME' | translate}} + <label class="toggle toggle-royal"> + <input type="checkbox" ng-model="formData.rememberMe" > + <div class="track"> + <div class="handle"></div> + </div> + </label> + </div> + <span class="item item-divider"> {{'SETTINGS.TECHNICAL_SETTINGS' | translate}} </span> @@ -42,5 +52,6 @@ </label> </div> + </ion-content> </ion-view>