mirror of https://github.com/BTCPrivate/copay.git
Storing the backup flag
This commit is contained in:
parent
d0c5e16865
commit
52fb680658
|
@ -14,7 +14,7 @@ angular.module('copayApp.controllers').controller('ProfileController', function(
|
|||
$scope.backupProfilePlainText = backupService.profileEncrypted($rootScope.iden);
|
||||
$scope.hideViewProfileBackup = true;
|
||||
};
|
||||
|
||||
|
||||
$scope.deleteWallet = function(w) {
|
||||
if (!w) return;
|
||||
identityService.deleteWallet(w, function(err) {
|
||||
|
@ -28,8 +28,8 @@ angular.module('copayApp.controllers').controller('ProfileController', function(
|
|||
|
||||
$scope.init = function() {
|
||||
if ($rootScope.quotaPerItem) {
|
||||
$scope.perItem = $filter('noFractionNumber')($rootScope.quotaPerItem/1000,1);
|
||||
$scope.nrWallets =parseInt($rootScope.quotaItems) - 1;
|
||||
$scope.perItem = $filter('noFractionNumber')($rootScope.quotaPerItem / 1000, 1);
|
||||
$scope.nrWallets = parseInt($rootScope.quotaItems) - 1;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -37,13 +37,13 @@ angular.module('copayApp.controllers').controller('ProfileController', function(
|
|||
if (!$rootScope.iden) return;
|
||||
|
||||
var wallets = $rootScope.iden.listWallets();
|
||||
var max =$rootScope.quotaPerItem;
|
||||
var max = $rootScope.quotaPerItem;
|
||||
|
||||
_.each(wallets, function(w) {
|
||||
var bits = w.sizes().total;
|
||||
w.kb = $filter('noFractionNumber')(bits/1000, 1);
|
||||
w.kb = $filter('noFractionNumber')(bits / 1000, 1);
|
||||
if (max) {
|
||||
w.usage = $filter('noFractionNumber')(bits/max * 100, 0);
|
||||
w.usage = $filter('noFractionNumber')(bits / max * 100, 0);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -73,15 +73,15 @@ angular.module('copayApp.controllers').controller('ProfileController', function(
|
|||
});
|
||||
};
|
||||
|
||||
$scope.deleteProfile = function () {
|
||||
identityService.deleteProfile(function (err, res) {
|
||||
$scope.deleteProfile = function() {
|
||||
identityService.deleteProfile(function(err, res) {
|
||||
if (err) {
|
||||
log.warn(err);
|
||||
notification.error('Error', 'Could not delete profile');
|
||||
return;
|
||||
}
|
||||
$location.path('/');
|
||||
setTimeout(function () {
|
||||
$location.path('/');
|
||||
setTimeout(function() {
|
||||
notification.error('Success', 'Profile successfully deleted');
|
||||
}, 1);
|
||||
});
|
||||
|
|
|
@ -274,10 +274,17 @@ Identity.prototype.toObj = function() {
|
|||
|
||||
Identity.prototype.exportEncryptedWithWalletInfo = function(opts) {
|
||||
var crypto = opts.cryptoUtil || cryptoUtil;
|
||||
this.backupNeeded = false;
|
||||
|
||||
return crypto.encrypt(this.password, this.exportWithWalletInfo(opts));
|
||||
};
|
||||
|
||||
Identity.prototype.setBackupDone = function() {
|
||||
this.backupNeeded = false;
|
||||
this.store({
|
||||
noWallets: true
|
||||
}, function() {});
|
||||
}
|
||||
|
||||
Identity.prototype.exportWithWalletInfo = function(opts) {
|
||||
return _.extend({
|
||||
wallets: _.map(this.wallets, function(wallet) {
|
||||
|
@ -295,12 +302,13 @@ Identity.prototype.exportWithWalletInfo = function(opts) {
|
|||
Identity.prototype.store = function(opts, cb) {
|
||||
var self = this;
|
||||
opts = opts || {};
|
||||
opts.backupNeeded = false;
|
||||
|
||||
var storeFunction = opts.failIfExists ? self.storage.createItem : self.storage.setItem;
|
||||
|
||||
storeFunction.call(self.storage, this.getId(), this.toObj(), function(err) {
|
||||
if (err) return cb(err);
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
if (opts.noWallets)
|
||||
return cb();
|
||||
|
|
|
@ -38,6 +38,7 @@ BackupService.prototype.profileEncrypted = function(iden) {
|
|||
|
||||
BackupService.prototype.profileDownload = function(iden) {
|
||||
var ew = this.profileEncrypted(iden);
|
||||
iden.setBackupDone();
|
||||
var name = iden.fullName;
|
||||
var filename = name + '-profile.json';
|
||||
this._download(ew, name, filename)
|
||||
|
|
|
@ -48,6 +48,7 @@ angular.module('copayApp.services')
|
|||
passphraseConfig: config.passphraseConfig,
|
||||
failIfExists: true,
|
||||
}, function(err, iden) {
|
||||
|
||||
if (err) return cb(err);
|
||||
preconditions.checkState(iden);
|
||||
root.bind(iden);
|
||||
|
@ -68,19 +69,19 @@ angular.module('copayApp.services')
|
|||
};
|
||||
|
||||
root.setServerStatus = function(headers) {
|
||||
if (!headers)
|
||||
if (!headers)
|
||||
return;
|
||||
|
||||
if (headers['X-Email-Needs-Validation'])
|
||||
$rootScope.needsEmailConfirmation = true;
|
||||
if (headers['X-Email-Needs-Validation'])
|
||||
$rootScope.needsEmailConfirmation = true;
|
||||
else
|
||||
$rootScope.needsEmailConfirmation = null;
|
||||
$rootScope.needsEmailConfirmation = null;
|
||||
|
||||
if (headers['X-Quota-Per-Item'])
|
||||
$rootScope.quotaPerItem = parseInt(headers['X-Quota-Per-Item']);
|
||||
if (headers['X-Quota-Per-Item'])
|
||||
$rootScope.quotaPerItem = parseInt(headers['X-Quota-Per-Item']);
|
||||
|
||||
if (headers['X-Quota-Items-Limit'])
|
||||
$rootScope.quotaItems = parseInt(headers['X-Quota-Items-Limit']);
|
||||
if (headers['X-Quota-Items-Limit'])
|
||||
$rootScope.quotaItems = parseInt(headers['X-Quota-Items-Limit']);
|
||||
};
|
||||
|
||||
root.open = function(email, password, cb) {
|
||||
|
@ -102,7 +103,7 @@ angular.module('copayApp.services')
|
|||
});
|
||||
};
|
||||
|
||||
root.deleteProfile = function (cb) {
|
||||
root.deleteProfile = function(cb) {
|
||||
$rootScope.iden.remove(null, cb);
|
||||
};
|
||||
|
||||
|
|
|
@ -498,79 +498,4 @@ describe('Identity model', function() {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe.only('Identity backupNeeded', function() {
|
||||
|
||||
it('should create Profile with backupNeeded set to true', function(done) {
|
||||
var args = createIdentity();
|
||||
Identity.create(args.params, function(err, iden) {
|
||||
should.not.exist(err);
|
||||
iden.backupNeeded.should.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('making a backup should set backupNeeded set to false', function(done) {
|
||||
var args = createIdentity();
|
||||
Identity.create(args.params, function(err, iden) {
|
||||
should.not.exist(err);
|
||||
iden.exportEncryptedWithWalletInfo(iden.password)
|
||||
iden.backupNeeded.should.be.false;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('adding a wallet should set backupNeeded to true', function(done) {
|
||||
var args = createIdentity();
|
||||
Identity.create(args.params, function(err, iden) {
|
||||
should.not.exist(err);
|
||||
iden.exportEncryptedWithWalletInfo(iden.password);
|
||||
iden.createWallet({
|
||||
walletClass: walletClass,
|
||||
}, function(err, w2) {
|
||||
iden.backupNeeded.should.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('joining a wallet should set backupNeeded to true', function(done) {
|
||||
var args = createIdentity();
|
||||
var net = null;
|
||||
var opts = {
|
||||
secret: '8WtTuiFTkhP5ao7AF2QErSwV39Cbur6pdMebKzQXFqL59RscXM',
|
||||
nickname: 'test',
|
||||
password: 'pass'
|
||||
};
|
||||
args.params.Async = net = sinon.stub();
|
||||
net = sinon.stub();
|
||||
net.on = sinon.stub();
|
||||
net.start = sinon.stub();
|
||||
net.start.onFirstCall().callsArg(1);
|
||||
net.greet = sinon.stub();
|
||||
|
||||
Identity.create(args.params, function(err, iden) {
|
||||
iden.createWallet = sinon.stub();
|
||||
should.not.exist(err);
|
||||
iden.exportEncryptedWithWalletInfo(iden.password);
|
||||
|
||||
var fakeWallet = {
|
||||
sendWalletReady: _.noop
|
||||
};
|
||||
iden.createWallet.onFirstCall().yields(null, fakeWallet);
|
||||
opts.privHex = 'tprv8ZgxMBicQKsPf7MCvCjnhnr4uiR2Z2gyNC27vgd9KUu98F9mM1tbaRrWMyddVju36GxLbeyntuSadBAttriwGGMWUkRgVmUUCg5nFioGZsd';
|
||||
opts.Async = net;
|
||||
iden.joinWallet(opts, function(err, w) {
|
||||
console.log('err', err);
|
||||
console.log('w', w);
|
||||
|
||||
console.log('join Wallet');
|
||||
iden.backupNeeded.should.be.true;
|
||||
done();
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -76,6 +76,7 @@ describe("Angular services", function() {
|
|||
a[Waddr] = 200;
|
||||
w.getBalance = sinon.stub().yields(null, 100000001, a, 90000002, 5);
|
||||
|
||||
|
||||
//retuns values in DEFAULT UNIT(bits)
|
||||
balanceService.update(w, function() {
|
||||
var b = w.balanceInfo;
|
||||
|
@ -90,7 +91,7 @@ describe("Angular services", function() {
|
|||
expect(b.balanceByAddr[Waddr]).to.equal(2);
|
||||
expect(b.safeUnspentCount).to.equal(5);
|
||||
expect(b.topAmount).to.equal(899800.02);
|
||||
},false);
|
||||
}, false);
|
||||
}));
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue