diff --git a/copay.js b/copay.js index 511a3dafd..f3d332743 100644 --- a/copay.js +++ b/copay.js @@ -6,6 +6,7 @@ module.exports.PrivateKey = require('./js/models/PrivateKey'); module.exports.HDPath = require('./js/models/HDPath'); module.exports.HDParams = require('./js/models/HDParams'); module.exports.crypto = require('./js/util/crypto'); +module.exports.logger = require('./js/log'); // components diff --git a/js/controllers/settings.js b/js/controllers/settings.js index 9671c5598..65322603d 100644 --- a/js/controllers/settings.js +++ b/js/controllers/settings.js @@ -1,27 +1,44 @@ 'use strict'; + angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $location, controllerUtils, notification) { controllerUtils.redirIfLogged(); + + + + $scope.title = 'Settings'; $scope.defaultLanguage = config.defaultLanguage || 'en'; $scope.insightLivenet = config.network.livenet.url; $scope.insightTestnet = config.network.testnet.url; + $scope.defaultLogLevel = config.logLevel || 'log'; + + var logLevels = copay.logger.getLevels(); + + $scope.availableLogLevels = []; + + + for (var key in logLevels) { + $scope.availableLogLevels.push({ + 'name': key + }); + } $scope.availableStorages = [{ - name: 'Insight', - pluginName: 'EncryptedInsightStorage', - }, { - name: 'Localstorage', - pluginName: 'EncryptedLocalStorage', - }, - // { - // name: 'GoogleDrive', - // pluginName: 'GoogleDrive', - // } + name: 'Insight', + pluginName: 'EncryptedInsightStorage', + }, { + name: 'Localstorage', + pluginName: 'EncryptedLocalStorage', + }, + // { + // name: 'GoogleDrive', + // pluginName: 'GoogleDrive', + // } ]; - _.each($scope.availableStorages, function(v){ + _.each($scope.availableStorages, function(v) { if (config.plugins[v.pluginName]) $scope.selectedStorage = v; }); @@ -41,6 +58,13 @@ angular.module('copayApp.controllers').controller('SettingsController', function } } + for (var ii in $scope.availableLogLevels) { + if ($scope.defaultLogLevel === $scope.availableLogLevels[ii].name) { + $scope.selectedLogLevel = $scope.availableLogLevels[ii]; + break; + } + } + $scope.save = function() { $scope.insightLivenet = copay.Insight.setCompleteUrl($scope.insightLivenet); @@ -56,14 +80,17 @@ angular.module('copayApp.controllers').controller('SettingsController', function }, } + var plugins = {}; plugins[$scope.selectedStorage.pluginName] = true; + copay.logger.setLevel($scope.selectedLogLevel.name); localStorage.setItem('config', JSON.stringify({ network: insightSettings, version: copay.version, defaultLanguage: $scope.selectedLanguage.isoCode, plugins: plugins, + logLevel: $scope.selectedLogLevel.name, })); // Go home reloading the application diff --git a/js/log.js b/js/log.js index 4b278eebf..1d7c7c776 100644 --- a/js/log.js +++ b/js/log.js @@ -1,6 +1,7 @@ -var config = require('../config'); +var config = config || require('../config'); var _ = require('lodash'); + /** * @desc * A simple logger that wraps the console.log methods when available. @@ -22,6 +23,10 @@ var Logger = function(name) { this.level = 2; }; +Logger.prototype.getLevels = function() { + return levels; +}; + var levels = { 'debug': 0, @@ -112,5 +117,15 @@ Logger.prototype.setLevel = function(level) { */ var logger = new Logger('copay'); -logger.setLevel(config.logLevel); +var error = new Error(); + +var logLevel = config.logLevel; + +if (typeof localStorage !== "undefined" && localStorage.getItem) { + var localConfig = JSON.parse(localStorage.getItem("config")); + if (localConfig && localConfig.logLevel) + logLevel = localConfig.logLevel; +} + +logger.setLevel(logLevel); module.exports = logger; diff --git a/views/settings.html b/views/settings.html index da62e5ca9..89ced4a90 100644 --- a/views/settings.html +++ b/views/settings.html @@ -35,7 +35,14 @@ Wallets and profiles are stored encrypted using your password as a key. You can store the encrypted data locally, on your platform, or remotely on the Insight Server. More pluggins are welcomed! - +