diff --git a/js/config.js b/js/config.js index 5af0cc394..61e45f54b 100644 --- a/js/config.js +++ b/js/config.js @@ -5,7 +5,7 @@ var config = { network: { apiKey: 'lwjd5qra8257b9', maxPeers: 3, - debug: 3, + debug: 0, }, wallet: { requiredCopayers: 2, @@ -15,4 +15,10 @@ var config = { host: 'localhost', port: 3001 }, + verbose: 0, }; + +var log = function () { + if (config.verbose) console.log(arguments); +} + diff --git a/js/controllers/header.js b/js/controllers/header.js index 8128175a2..9653731f9 100644 --- a/js/controllers/header.js +++ b/js/controllers/header.js @@ -41,7 +41,6 @@ angular.module('copay.header').controller('HeaderController', $scope.signout = function() { Network.disconnect(function() { - console.log('[header.js.41] disconnect CB'); //TODO $location.path('signin'); $rootScope.$digest(); }); diff --git a/js/controllers/home.js b/js/controllers/home.js index 0d762f925..bfdcdd026 100644 --- a/js/controllers/home.js +++ b/js/controllers/home.js @@ -6,14 +6,13 @@ angular.module('copay.home').controller('HomeController', $scope.oneAtATime = true; - if (!$rootScope.wallet.id) { + if (!$rootScope.wallet || !$rootScope.wallet.id) { $location.path('signin'); } - - - - $scope.addrs = $rootScope.wallet.publicKeyRing.getAddresses(); - $scope.selectedAddr = $scope.addrs[0]; + else { + $scope.addrs = $rootScope.wallet.publicKeyRing.getAddresses(); + $scope.selectedAddr = $scope.addrs[0]; + } $scope.newAddr = function() { var a = $rootScope.wallet.publicKeyRing.generateAddress(); diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 13378f66f..de9400166 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -17,26 +17,31 @@ function Wallet(config) { this._startInterface(config); } +Wallet.prototype.log = function(){ + if (!this.verbose) return; + + console.this.log(arguments); +} + Wallet.prototype._startInterface = function(config) { this.storage = new Storage(config.storage); this.network = new Network(config.network); this.blockchain = new Blockchain(config.blockchain); this.networkName = config.networkName; - this.requiredCopayers = config.requiredCopayers; - this.totalCopayers = config.totalCopayers; + this.requiredCopayers = config.wallet.requiredCopayers; + this.totalCopayers = config.wallet.totalCopayers; }; Wallet.prototype.create = function(opts) { - this.id = opts.id || Wallet.getRandomId(); - console.log('### CREATING NEW WALLET.' + (opts.id ? ' USING ID: ' + opts.id : ' NEW ID')); + this.log('### CREATING NEW WALLET.' + (opts.id ? ' USING ID: ' + opts.id : ' NEW ID')); this.privateKey = new copay.PrivateKey({ networkName: this.networkName }); - console.log('\t### PrivateKey Initialized'); + this.log('\t### PrivateKey Initialized'); this.publicKeyRing = new copay.PublicKeyRing({ walletId: this.id, @@ -46,14 +51,14 @@ Wallet.prototype.create = function(opts) { }); this.publicKeyRing.addCopayer(this.privateKey.getBIP32().extendedPublicKeyString()); - console.log('\t### PublicKeyRing Initialized WalletID: ' + this.publicKeyRing.walletId); + this.log('\t### PublicKeyRing Initialized WalletID: ' + this.publicKeyRing.walletId); this.txProposals = new copay.TxProposals({ walletId: this.id, publicKeyRing: this.publicKeyRing, networkName: this.networkName, }); - console.log('\t### TxProposals Initialized'); + this.log('\t### TxProposals Initialized'); }; @@ -86,7 +91,7 @@ Wallet.prototype.load = function(walletId) { this.privateKey.getBIP32().extendedPublicKeyString() ); } catch (e) { - console.log('NOT NECCESARY AN ERROR:', e); //TODO + this.log('NOT NECCESARY AN ERROR:', e); //TODO }; }; @@ -101,7 +106,7 @@ Wallet.prototype.store = function() { Wallet.prototype.sendTxProposals = function(recipients) { - console.log('### SENDING txProposals TO:', recipients||'All', this.txProposals); + this.log('### SENDING txProposals TO:', recipients||'All', this.txProposals); this.network.send( recipients, { type: 'txProposals', @@ -111,7 +116,7 @@ Wallet.prototype.sendTxProposals = function(recipients) { }; Wallet.prototype.sendPublicKeyRing = function(recipients) { - console.log('### SENDING publicKeyRing TO:', recipients||'All', this.publicKeyRing.toObj()); + this.log('### SENDING publicKeyRing TO:', recipients||'All', this.publicKeyRing.toObj()); this.network.send(recipients, { type: 'publicKeyRing', @@ -145,7 +150,6 @@ WalletFactory.prototype.create = function(config, opts) { var w = new Wallet(config); w.create(opts); w.store(); - this.addWalletId(w.id); return w; }; @@ -160,21 +164,22 @@ WalletFactory.prototype.remove = function(walletId) { WalletFactory.prototype.addWalletId = function(walletId) { var ids = this.getWalletIds(); - if (ids.indexOf(walletId) == -1) return; - storage.set('walletIds', (ids ? ids + ',' : '') + walletId); + if (ids.indexOf(walletId) !== -1) return; + ids.push(walletId); + this.storage.setGlobal('walletIds', ids); }; WalletFactory.prototype._delWalletId = function(walletId) { var ids = this.getWalletIds(); var index = ids.indexOf(walletId); - if (index == -1) return; + if (index === -1) return; ids.splice(index, 1); // removes walletId - this.storage.set('walletIds', ids.join(',')); + this.storage.setGlobal('walletIds', ids); }; WalletFactory.prototype.getWalletIds = function() { - var ids = this.storage.get('walletIds'); - return ids ? ids.split(',') : []; + var ids = this.storage.getGlobal('walletIds'); + return ids || []; }; Wallet.factory = new WalletFactory(); diff --git a/js/models/network/WebRTC.js b/js/models/network/WebRTC.js index 9350eea40..f3efa6895 100644 --- a/js/models/network/WebRTC.js +++ b/js/models/network/WebRTC.js @@ -63,7 +63,7 @@ Network._arrayRemove = function(el, array) { // DEBUG Network.prototype._showConnectedPeers = function() { - console.log("### CONNECTED PEERS", this.connectedPeers); +// console.log("### CONNECTED PEERS", this.connectedPeers); }; Network.prototype._onClose = function(peerId) { @@ -166,7 +166,6 @@ Network.prototype._setupConnectionHandlers = function( }; Network.prototype._notify = function(newPeer) { - console.log('[Network.js.168:_notify:]'); //TODO this._showConnectedPeers(); this.emit('networkChange', newPeer); }; @@ -177,7 +176,6 @@ Network.prototype._setupPeerHandlers = function(openCallback) { p.on('open', function(peerId) { - console.log('### PEER OPEN. I AM:' + peerId); self.peerId = peerId; self.connectedPeers = [peerId]; self._notify(); @@ -241,13 +239,10 @@ console.log('[WebRTC.js.222:peerId:]',peerId, data); //TODO Network.prototype.send = function(peerIds, data, cb) { var self=this; - -console.log('[WebRTC.js.242:peerIds:]',peerIds); //TODO if (!peerIds) { peerIds = this.connectedPeers; data.isBroadcast = 1; } -console.log('[WebRTC.js.246:peerIds:]',peerIds, data); //TODO if (Array.isArray(peerIds)) { var l = peerIds.length; @@ -279,13 +274,10 @@ Network.prototype.connectTo = function(peerId, openCallback, closeCallback ) { Network.prototype.disconnect = function(peerId, cb) { - console.log('[Network.js.268:disconnect:]'); //TODO var self = this; self.closing = 1; this.send(null, { type: 'disconnect' }, function() { - -console.log('[Network.js.273] disconnect CB'); //TODO self.connectedPeers = []; self.peerId = null; if (self.peer) { diff --git a/js/models/storage/Plain.js b/js/models/storage/Plain.js index 04c3f2641..a7009c8bb 100644 --- a/js/models/storage/Plain.js +++ b/js/models/storage/Plain.js @@ -6,15 +6,40 @@ function Storage() { this.data = {}; } +Storage.prototype._read = function(k) { + var ret; + try { + ret = JSON.parse(localStorage.getItem(k)); + } catch (e) {}; + return ret; +}; + + +// get value by key +Storage.prototype.getGlobal = function(k) { + return this._read(k); +}; + +// set value for key +Storage.prototype.setGlobal = function(k,v) { + localStorage.setItem(k, JSON.stringify(v)); +}; + +// remove value for key +Storage.prototype.removeGlobal = function(k) { + localStorage.removeItem(k); +}; + + + Storage.prototype._key = function(walletId, k) { return walletId + '::' + k; }; // get value by key Storage.prototype.get = function(walletId, k) { - return JSON.parse(localStorage.getItem(this._key(walletId,k))); + return this._read(localStorage.getItem(this._key(walletId,k))); }; - // set value for key Storage.prototype.set = function(walletId, k,v) { localStorage.setItem(this._key(walletId,k), JSON.stringify(v)); diff --git a/js/services/network.js b/js/services/network.js index e25d84bcc..edeedb728 100644 --- a/js/services/network.js +++ b/js/services/network.js @@ -4,10 +4,9 @@ angular.module('copay.network') .factory('Network', function($rootScope) { var peer; - var _refreshUx = function() { var net = $rootScope.wallet.network; - console.log('*** UPDATING UX'); //TODO + log('*** UPDATING UX'); //TODO $rootScope.peedId = net.peerId; $rootScope.connectedPeers = net.connectedPeers; $rootScope.$digest(); @@ -16,7 +15,7 @@ angular.module('copay.network') // set new inbound connections var _setNewPeer = function(newPeer) { var w = $rootScope.wallet; - console.log('#### Setting new PEER:', newPeer); + log('#### Setting new PEER:', newPeer); w.sendPublicKeyRing(newPeer); w.sendTxProposals(newPeer); }; @@ -34,7 +33,7 @@ angular.module('copay.network') var storeOpenWallet = function() { var w = $rootScope.wallet; w.store(); - console.log('\t### Wallet %s Stored', w.id); + log('\t### Wallet %s Stored', w.id); }; // TODO -> probably not in network.js @@ -43,14 +42,14 @@ angular.module('copay.network') w.create({id: walletId}); w.store(); $rootScope.wallet = w; - console.log('createWallet ENDED'); //TODO + log('createWallet ENDED'); //TODO }; var openWallet = function (walletId) { var w = $rootScope.wallet || new copay.Wallet(config); w.load(walletId); if (w && w.publicKeyRing && w.privateKey) { - console.log('### WALLET OPENED:', w.walletId); + log('### WALLET OPENED:', w.walletId); $rootScope.wallet = w; } }; @@ -61,12 +60,12 @@ angular.module('copay.network') if (w && w.id) w.store(); - console.log('### CLOSING WALLET'); + log('### CLOSING WALLET'); delete $rootScope['wallet']; }; var _checkWallet = function(walletId) { - console.log('[network.js.79:_checkWallet:]',walletId); //TODO + log('[network.js.79:_checkWallet:]',walletId); //TODO if ($rootScope.wallet && $rootScope.wallet.id === walletId) return; @@ -88,13 +87,13 @@ angular.module('copay.network') var recipients, pkr = w.publicKeyRing; var inPKR = copay.PublicKeyRing.fromObj(data.publicKeyRing); if (pkr.merge(inPKR, true) && !data.isBroadcast) { - console.log('### BROADCASTING PKR'); + log('### BROADCASTING PKR'); recipients = null; shouldSend = true; } else if (isInbound && !data.isBroadcast) { // always replying to connecting peer - console.log('### REPLYING PKR TO:', senderId); + log('### REPLYING PKR TO:', senderId); recipients = senderId; shouldSend = true; } @@ -110,19 +109,19 @@ angular.module('copay.network') var shouldSend = false; var w = $rootScope.wallet; - console.log('RECV TXPROPOSAL:',data); //TODO + log('RECV TXPROPOSAL:',data); //TODO var recipients; var inTxProposals = copay.TxProposals.fromObj(data.txProposals); var mergeInfo = w.txProposals.merge(inTxProposals, true); if ( mergeInfo.merged && !data.isBroadcast) { - console.log('### BROADCASTING txProposals'); + log('### BROADCASTING txProposals'); recipients = null; shouldSend = true; } else if (isInbound && !data.isBroadcast) { // always replying to connecting peer - console.log('### REPLYING txProposals TO:', senderId); + log('### REPLYING txProposals TO:', senderId); recipients = senderId; shouldSend = true; } diff --git a/test/FakeStorage.js b/test/FakeStorage.js index dd3af45cf..ef50df677 100644 --- a/test/FakeStorage.js +++ b/test/FakeStorage.js @@ -3,12 +3,24 @@ var FakeStorage = function(){ this.storage = {}; }; -FakeStorage.prototype.set = function (id, payload) { +FakeStorage.prototype.setGlobal = function (id, payload) { this.storage[id] = payload; }; -FakeStorage.prototype.get = function(id) { +FakeStorage.prototype.getGlobal = function(id) { return this.storage[id]; } +FakeStorage.prototype.set = function (wid, id, payload) { + this.storage[wid + '-' + id] = payload; +}; + +FakeStorage.prototype.get = function(wid, id) { + return this.storage[wid + '-' +id]; +} + +FakeStorage.prototype.clear = function() { + delete this['storage']; +} + module.exports = require('soop')(FakeStorage); diff --git a/test/test.wallet.js b/test/test.wallet.js index f9b2d94f2..54a487da2 100644 --- a/test/test.wallet.js +++ b/test/test.wallet.js @@ -9,9 +9,6 @@ var Wallet = require('soop').load('../js/models/core/Wallet', { Blockchain: copay.Insight }); -console.log(Wallet); - - describe('Wallet model', function() { var config = { wallet: {