diff --git a/js/models/Identity.js b/js/models/Identity.js index 11a6fce5e..b07781a09 100644 --- a/js/models/Identity.js +++ b/js/models/Identity.js @@ -77,42 +77,12 @@ Identity.prototype.getName = function() { * @param cb * @return {undefined} */ -Identity.create = function(opts, cb) { +Identity.create = function(opts) { opts = _.extend({}, opts); - var iden = new Identity(opts); - if (opts.noWallets) { - return cb(null, iden); - } else { - return iden.createDefaultWallet(opts, cb); - } + return new Identity(opts); }; -/** - * Create a wallet, 1-of-1 named general - * - * @param {Object} opts - * @param {Object} opts.walletDefaults - * @param {string} opts.walletDefaults.networkName - */ -Identity.prototype.createDefaultWallet = function(opts, callback) { - - var self = this; - var walletOptions = _.extend(opts.walletDefaults, { - nickname: this.fullName || this.email, - networkName: opts.networkName, - requiredCopayers: 1, - totalCopayers: 1, - password: this.password, - name: 'general' - }); - this.createWallet(walletOptions, function(err, wallet) { - if (err) { - return callback(err); - } - return callback(null, self); - }); -}; /** * Open an Identity from the given storage @@ -124,7 +94,6 @@ Identity.prototype.createDefaultWallet = function(opts, callback) { * @param {Function} cb */ Identity.open = function(opts, cb) { - var storage = opts.storage || opts.pluginManager.get('DB'); storage.setCredentials(opts.email, opts.password, opts); storage.getItem(Identity.getKeyForEmail(opts.email), function(err, data) { @@ -255,7 +224,7 @@ Identity.prototype.store = function(opts, cb) { self.storage.setItem(this.getId(), this.toObj(), function(err) { if (err) return cb(err); - if (opts.noWallets) + if (opts.noWallets) return cb(); async.map(self.wallets, self.storeWallet, cb); @@ -444,7 +413,7 @@ Identity.prototype.createWallet = function(opts, cb) { opts.txProposals = opts.txProposals || new TxProposals({ networkName: opts.networkName, }); - var walletClass = opts.walletClass || Wallet; + var walletClass = opts.walletClass || Wallet; log.debug('\t### TxProposals Initialized'); @@ -465,8 +434,10 @@ Identity.prototype.createWallet = function(opts, cb) { if (err) return cb(err); self.bindWallet(w); w.netStart(); - self.store({noWallets:true},function(err){ - return cb(err,w); + self.store({ + noWallets: true + }, function(err) { + return cb(err, w); }); }); }; diff --git a/js/services/identityService.js b/js/services/identityService.js index 117a3d078..5207e40d3 100644 --- a/js/services/identityService.js +++ b/js/services/identityService.js @@ -5,7 +5,7 @@ angular.module('copayApp.services') var root = {}; root.create = function(scope, form) { - copay.Identity.create({ + var iden = copay.Identity.create({ email: form.email.$modelValue, password: form.password.$modelValue, pluginManager: pluginManager, @@ -13,9 +13,24 @@ angular.module('copayApp.services') networkName: config.networkName, walletDefaults: config.wallet, passphraseConfig: config.passphraseConfig, - }, function(err, iden) { - var firstWallet = iden.getLastFocusedWallet(); - controllerUtils.bindProfile(scope, iden, firstWallet); + }); + + var walletOptions = { + nickname: iden.fullName, + networkName: config.networkName, + requiredCopayers: 1, + totalCopayers: 1, + password: iden.password, + name: 'My wallet', + }; + iden.createWallet(walletOptions, function(err, wallet) { + if (err) { + console.log('Error:' + err) + controllerUtils.onErrorDigest( + scope, 'Could not create default wallet'); + } else { + controllerUtils.bindProfile(scope, iden, wallet.id); + } scope.loading = false; }); }; diff --git a/test/Identity.js b/test/Identity.js index 72841d256..ce36aafba 100644 --- a/test/Identity.js +++ b/test/Identity.js @@ -123,17 +123,15 @@ describe('Identity model', function() { }); describe('Identity.create()', function() { - it('should create', function(done) { + it('should create', function() { var args = createIdentity(); args.blockchain.on = sinon.stub(); var old = Identity.prototype.createWallet; Identity.prototype.createWallet = sinon.stub().yields(null, getNewWallet()); - Identity.create(args.params, function(err, iden) { - should.not.exist(err); - should.exist(iden.wallets); - Identity.prototype.createWallet = old; - done(); - }); + var iden = Identity.create(args.params); + should.exist(iden); + should.exist(iden.wallets); + Identity.prototype.createWallet = old; }); }); @@ -168,16 +166,13 @@ describe('Identity model', function() { describe('#createWallet', function() { var iden = null; var args = null; - beforeEach(function(done) { + beforeEach(function() { args = createIdentity(); args.params.noWallets = true; var old = Identity.prototype.createWallet; Identity.prototype.createWallet = sinon.stub().yields(null, getNewWallet()); - Identity.create(args.params, function(err, identity) { - iden = identity; - Identity.prototype.createWallet = old; - done(); - }); + iden = Identity.create(args.params); + Identity.prototype.createWallet = old; }); it('should be able to create wallets with given pk', function(done) { var priv = 'tprv8ZgxMBicQKsPdEqHcA7RjJTayxA3gSSqeRTttS1JjVbgmNDZdSk9EHZK5pc52GY5xFmwcakmUeKWUDzGoMLGAhrfr5b3MovMUZUTPqisL2m'; @@ -234,13 +229,12 @@ describe('Identity model', function() { importWallet: sinon.stub().returns(getNewWallet()), }; - Identity.create(args.params, function(err, iden) { - iden.retrieveWalletFromStorage('dummy', opts, function(err, wallet) { - should.not.exist(err); - opts.importWallet.calledOnce.should.equal(true); - should.exist(wallet); - done(); - }); + var iden = Identity.create(args.params); + iden.retrieveWalletFromStorage('dummy', opts, function(err, wallet) { + should.not.exist(err); + opts.importWallet.calledOnce.should.equal(true); + should.exist(wallet); + done(); }); }); }); @@ -281,7 +275,7 @@ describe('Identity model', function() { var args = null; var net = null; - beforeEach(function(done) { + beforeEach(function() { args = createIdentity(); args.params.Async = net = sinon.stub(); @@ -290,12 +284,9 @@ describe('Identity model', function() { net.start = sinon.spy(); var old = Identity.prototype.createWallet; Identity.prototype.createWallet = sinon.stub().yields(null, getNewWallet()); - - Identity.create(args.params, function(err, identity) { - iden = identity; - Identity.prototype.createWallet = old; - done(); - }); + + iden = Identity.create(args.params); + Identity.prototype.createWallet = old; }); it('should yield bad network error', function(done) {