replaced last opened with last focused wallet

This commit is contained in:
Ivan Socolsky 2014-10-20 18:33:21 -03:00 committed by Matias Alejo Garcia
parent 404016cfb5
commit 37526b554e
7 changed files with 46 additions and 38 deletions

View File

@ -25,13 +25,13 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
networkName: config.networkName,
walletDefaults: config.wallet,
passphraseConfig: config.passphraseConfig,
}, function(err, iden, firstWallet) {
}, function(err, iden, lastFocusedWallet) {
if (err && !iden) {
console.log('Error:' + err)
controllerUtils.onErrorDigest(
$scope, (err.toString() || '').match('PNOTFOUND') ? 'Profile not found' : 'Unknown error');
} else {
controllerUtils.bindProfile($scope, iden, firstWallet);
controllerUtils.bindProfile($scope, iden, lastFocusedWallet);
}
});
}

View File

@ -207,10 +207,8 @@ Identity.open = function(email, password, opts, cb) {
wallets.push(w);
}
if (--remaining == 0) {
var firstWallet = _.findWhere(wallets, {
id: wids[0]
});
return cb(err, iden, firstWallet);
var lastFocused = iden.profile.getLastFocusedWallet();
return cb(err, iden, lastFocused);
}
})
});
@ -350,7 +348,7 @@ Identity.prototype.toEncryptedObj = function() {
ret.iterations = this.storage.iterations;
ret.wallets = {};
_.each(this.openWallets, function(w){
_.each(this.openWallets, function(w) {
ret.wallets[w.getId()] = w.toEncryptedObj();
});
@ -437,11 +435,8 @@ Identity.prototype.createWallet = function(opts, cb) {
this.addWallet(w, function(err) {
if (err) return cb(err);
self.openWallets.push(w);
self.profile.setLastOpenedTs(w.id, function(err) {
w.netStart();
return cb(err, w);
});
w.netStart();
return cb(err, w);
});
};
@ -511,10 +506,8 @@ Identity.prototype.openWallet = function(walletId, cb) {
self.openWallets.push(w);
w.store(function(err) {
self.profile.setLastOpenedTs(walletId, function() {
w.netStart();
return cb(err, w);
});
w.netStart();
return cb(err, w);
});
});
// });

View File

@ -76,7 +76,7 @@ Profile.prototype.getWallet = function(walletId, cb) {
Profile.prototype.listWallets = function() {
return _.sortBy(this.walletInfos, function(winfo) {
return -winfo.lastOpenedTs || -winfo.createdTs;
return winfo.createdTs;
});
};
@ -121,12 +121,21 @@ Profile.prototype.addWallet = function(walletId, info, cb) {
};
Profile.prototype.setLastOpenedTs = function(walletId, cb) {
Profile.prototype.setLastFocusedTs = function(walletId, cb) {
return this.addToWallet(walletId, {
lastOpenedTs: Date.now()
lastFocusedTs: Date.now()
}, cb);
};
Profile.prototype.getLastFocusedWallet = function() {
var self = this;
var maxTs = _.max(_.pluck(self.walletInfos, 'lastFocusedTs'));
var last = _.findWhere(_.values(self.walletInfos), {
lastFocusedTs: maxTs
});
return last ? last.id : null;
};
Profile.prototype.store = function(opts, cb) {
var self = this;
var val = self.toObj();

View File

@ -25,7 +25,6 @@ function TxProposal(opts) {
this.version = opts.version;
this.builder = opts.builder;
this.createdTs = opts.createdTs;
this.createdTs = opts.createdTs;
this._inputSigners = [];
// CopayerIds

View File

@ -209,10 +209,12 @@ angular.module('copayApp.services')
preconditions.checkState(w && _.isObject(w));
$rootScope.wallet = w;
root.redirIfLogged();
root.updateBalance(w, function() {
$rootScope.$digest();
})
$rootScope.iden.profile.setLastFocusedTs(w.id, function() {
root.redirIfLogged();
root.updateBalance(w, function() {
$rootScope.$digest();
})
});
};
root.bindProfile = function($scope, iden, w) {

View File

@ -134,6 +134,7 @@ describe('Identity model', function() {
profile.listWallets = sinon.stub().returns([{
id: 'walletid'
}]);
profile.getLastFocusedWallet = sinon.stub().returns(null);
Identity._openProfile = sinon.stub().callsArgWith(3, null, profile);
Identity._walletRead = sinon.stub().callsArgWith(2, null, wallet);
});
@ -147,7 +148,7 @@ describe('Identity model', function() {
});
});
it('should return last used wallet', function(done) {
it('should return last focused wallet', function(done) {
var wallets = [{
id: 'wallet1',
store: sinon.stub().yields(null),
@ -162,13 +163,14 @@ describe('Identity model', function() {
netStart: sinon.stub(),
}];
profile.listWallets = sinon.stub().returns(wallets);
profile.getLastFocusedWallet = sinon.stub().returns(wallets[1]);
Identity._walletRead = sinon.stub();
Identity._walletRead.onCall(0).callsArgWith(2, null, wallets[0]);
Identity._walletRead.onCall(1).callsArgWith(2, null, wallets[1]);
Identity._walletRead.onCall(2).callsArgWith(2, null, wallets[2]);
Identity.open(email, password, config, function(err, iden, w) {
w.id.should.equal('wallet1');
w.id.should.equal('wallet2');
done();
});
});
@ -270,12 +272,11 @@ describe('Identity model', function() {
Identity._walletRead = sinon.stub().callsArgWith(2, null, wallet);
});
it('should return wallet and call .store, .setLastOpenedTs & .migrateWallet', function(done) {
it('should return wallet and call .store & .migrateWallet', function(done) {
iden.openWallet('dummy', function(err, w) {
should.not.exist(err);
w.store.calledOnce.should.equal(true);
iden.profile.setLastOpenedTs.calledTwice.should.equal(true);
// iden.migrateWallet.calledOnce.should.equal(true);
done();
});

View File

@ -15,7 +15,7 @@ describe('Profile model', function() {
var storage = new FakeStorage();
var opts = {
email: email,
hash:hash,
hash: hash,
};
beforeEach(function() {
@ -87,7 +87,9 @@ describe('Profile model', function() {
describe('#addToWallet', function() {
it('should warn if wallet does not exist', function(done) {
var p = new Profile(opts, storage);
p.addToWallet('234',{1:1}, function(err) {
p.addToWallet('234', {
1: 1
}, function(err) {
err.toString().should.contain('WNOEXIST');
done();
});
@ -95,7 +97,9 @@ describe('Profile model', function() {
it('should add info to a wallet', function(done) {
var p = new Profile(opts, storage);
p.addWallet('234', {}, function(err) {
p.addToWallet('234',{'hola':1}, function(err) {
p.addToWallet('234', {
'hola': 1
}, function(err) {
var w = p.getWallet('234');
should.exist(w);
w.hola.should.equal(1);
@ -105,19 +109,19 @@ describe('Profile model', function() {
})
});
});
describe('#listWallets', function() {
it('should list wallets in order', function(done) {
var p = new Profile(opts, storage);
p.addWallet('123', {}, function(err) {
setTimeout(function() {
p.addWallet('234', {}, function(err) {
_.pluck(p.listWallets(), 'id').should.deep.equal(['234', '123']);
done();
})
},10);
setTimeout(function() {
p.addWallet('234', {}, function(err) {
_.pluck(p.listWallets(), 'id').should.deep.equal(['123', '234']);
done();
})
}, 10);
});
});
});