From 8478402237b8eae95b537484d23f20437f101fec Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 16 Apr 2014 17:07:14 -0300 Subject: [PATCH 1/3] add wallet setup view (not integrated) --- index.html | 32 ++++++++++++++++++++++++++++++++ js/app.js | 2 ++ js/config.js | 4 ++++ js/controllers/setup.js | 34 ++++++++++++++++++++++++++++++++++ js/routes.js | 3 +++ 5 files changed, 75 insertions(+) create mode 100644 js/controllers/setup.js diff --git a/index.html b/index.html index 0300f7588..3a670a9ae 100644 --- a/index.html +++ b/index.html @@ -96,6 +96,37 @@ + + + diff --git a/js/app.js b/js/app.js index 21859c3ff..f1fff46a0 100644 --- a/js/app.js +++ b/js/app.js @@ -11,6 +11,7 @@ angular.module('copay',[ 'copay.backup', 'copay.walletFactory', 'copay.signin', + 'copay.setup', 'copay.peer' ]); @@ -21,5 +22,6 @@ angular.module('copay.send', []); angular.module('copay.backup', []); angular.module('copay.walletFactory', []); angular.module('copay.signin', []); +angular.module('copay.setup', []); angular.module('copay.peer', []); diff --git a/js/config.js b/js/config.js index cbc46bab8..d73f23cdb 100644 --- a/js/config.js +++ b/js/config.js @@ -7,6 +7,10 @@ var config = { maxPeers: 3, debug: 3, }, + limits: { + totalCopayers: 10, + mPlusN: 15 + }, wallet: { requiredCopayers: 2, totalCopayers: 3, diff --git a/js/controllers/setup.js b/js/controllers/setup.js new file mode 100644 index 000000000..30828843e --- /dev/null +++ b/js/controllers/setup.js @@ -0,0 +1,34 @@ +'use strict'; + +angular.module('copay.setup').controller('SetupController', + function($scope, $rootScope, $location, Network) { + + $scope.loading = false; + + $scope.selectedWalletId = false; + $scope.totalCopayers = config.wallet.totalCopayers; + $scope.TCValues = []; + for (var n = 1; n <= config.limits.totalCopayers; n++) + $scope.TCValues.push(n); + + var updateRCSelect = function(n) { + $scope.requiredCopayers = parseInt(Math.min(n / 2 + 1, config.limits.mPlusN-n)); + $scope.RCValues = []; + for (var m = 1; m <= n; m++) { + if (n + m <= config.limits.mPlusN) { + $scope.RCValues.push(m); + } + } + }; + updateRCSelect($scope.totalCopayers); + + $scope.$watch('totalCopayers', function(tc) { + updateRCSelect(tc); + }) + + $scope.create = function(totalCopayers, requiredCopayers) { + alert(totalCopayers); + alert(requiredCopayers); + }; + + }); diff --git a/js/routes.js b/js/routes.js index 3793d88bd..5c655b208 100644 --- a/js/routes.js +++ b/js/routes.js @@ -12,6 +12,9 @@ angular .when('/signin', { templateUrl: 'signin.html' }) + .when('/setup', { + templateUrl: 'setup.html' + }) .when('/home', { templateUrl: 'home.html' }) From b50407400913e893af98c0fab2eec9456672b5bf Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 16 Apr 2014 19:05:04 -0300 Subject: [PATCH 2/3] actually create wallet and redirect --- js/controllers/setup.js | 17 +++++++++++++---- ...t.walletfactory.js => test.Walletfactory.js} | 0 2 files changed, 13 insertions(+), 4 deletions(-) rename test/{test.walletfactory.js => test.Walletfactory.js} (100%) diff --git a/js/controllers/setup.js b/js/controllers/setup.js index 30828843e..e084218a3 100644 --- a/js/controllers/setup.js +++ b/js/controllers/setup.js @@ -1,11 +1,10 @@ 'use strict'; angular.module('copay.setup').controller('SetupController', - function($scope, $rootScope, $location, Network) { + function($scope, $rootScope, $location, walletFactory) { $scope.loading = false; - $scope.selectedWalletId = false; $scope.totalCopayers = config.wallet.totalCopayers; $scope.TCValues = []; for (var n = 1; n <= config.limits.totalCopayers; n++) @@ -27,8 +26,18 @@ angular.module('copay.setup').controller('SetupController', }) $scope.create = function(totalCopayers, requiredCopayers) { - alert(totalCopayers); - alert(requiredCopayers); + $scope.loading = true; + var opts = { + requiredCopayers: requiredCopayers, + totalCopayers: totalCopayers + }; + var w = walletFactory.create(); + w.on('open', function(){ + $location.path('peer'); + $rootScope.wallet = w; + $rootScope.$digest(); + }); + w.netStart(); }; }); diff --git a/test/test.walletfactory.js b/test/test.Walletfactory.js similarity index 100% rename from test/test.walletfactory.js rename to test/test.Walletfactory.js From 9df76b90fddb64e5afc38cbb8a1b1924b3964d35 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Wed, 16 Apr 2014 19:45:22 -0300 Subject: [PATCH 3/3] m-of-n integration complete --- index.html | 5 ++++- js/controllers/setup.js | 9 +++++++-- js/controllers/signin.js | 7 +------ js/models/core/Wallet.js | 2 ++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index 3a670a9ae..25796ab8e 100644 --- a/index.html +++ b/index.html @@ -102,6 +102,7 @@ Connecting to wallet...
+

Create new multisig wallet

Select total number of copayers

@@ -120,7 +121,9 @@
+ ng-click="create(totalCopayers, requiredCopayers)"> + Create {{requiredCopayers}}-of-{{totalCopayers}} wallet +
diff --git a/js/controllers/setup.js b/js/controllers/setup.js index e084218a3..a8f25cb3e 100644 --- a/js/controllers/setup.js +++ b/js/controllers/setup.js @@ -31,12 +31,17 @@ angular.module('copay.setup').controller('SetupController', requiredCopayers: requiredCopayers, totalCopayers: totalCopayers }; - var w = walletFactory.create(); - w.on('open', function(){ + var w = walletFactory.create(opts); + w.on('created', function(){ $location.path('peer'); $rootScope.wallet = w; $rootScope.$digest(); }); + w.on('openError', function(){ + $scope.loading = false; + $rootScope.flashMessage = {type:'error', message: 'Wallet not found'}; + $location.path('signin'); + }); w.netStart(); }; diff --git a/js/controllers/signin.js b/js/controllers/signin.js index 122cdc02a..4b25c800f 100644 --- a/js/controllers/signin.js +++ b/js/controllers/signin.js @@ -27,12 +27,7 @@ angular.module('copay.signin').controller('SigninController', }; $scope.create = function() { -console.log('[signin.js.42:create:]'); //TODO - $scope.loading = true; - - var w = walletFactory.create(); - _setupUxHandlers(w); - w.netStart(); + $location.path('setup'); }; $scope.open = function(walletId) { diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 1d2141117..98bc6faba 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -22,6 +22,8 @@ function Wallet(opts) { self[k] = opts[k]; }); + console.log('creating '+opts.requiredCopayers+' of '+opts.totalCopayers+' wallet'); + this.id = opts.id || Wallet.getRandomId(); this.publicKeyRing.walletId = this.id; this.txProposals.walletId = this.id;