make my code work with the latest interface changes

...to Wallet and WalletFactory
This commit is contained in:
Ryan X. Charles 2014-04-16 21:02:53 -03:00
parent 5f8deb7d0b
commit 96a6203bb0
7 changed files with 37 additions and 42 deletions

23
API.js
View File

@ -10,26 +10,13 @@ API.prototype._init = function(opts) {
opts = opts || {};
self.opts = opts;
var Wallet = require('soop').load('./js/models/core/Wallet', {
var WalletFactory = require('soop').load('./js/models/core/WalletFactory', {
Storage: opts.Storage || require('./test/mocks/FakeStorage'),
Network: opts.Network || require('./js/models/network/Base'),
Blockchain: opts.Blockchain || require('./js/models/blockchain/Insight')
});
var config = {
wallet: {
requiredCopayers: opts.requiredCopayers || 3,
totalCopayers: opts.totalCopayers || 5,
},
storage: {
filename: 'copaywallet.json'
}
};
var walletConfig = opts.walletConfig || config;
var walletOpts = opts.walletOpts || {};
self.wallet = self.opts.wallet || Wallet.factory.create(walletConfig, walletOpts);
this.walletFactory = new WalletFactory(opts);
};
API._coerceArgTypes = function(args, argTypes) {
@ -182,13 +169,13 @@ API.prototype.getCommands = decorate('getCommands', [
['callback', 'function']
]);
API.prototype._cmd_getPublicKeyRingId = function(callback) {
API.prototype._cmd_getWalletIds = function(callback) {
var self = this;
return callback(null, self.wallet.publicKeyRing.walletId);
return callback(null, self.walletFactory.getWalletIds());
};
API.prototype.getPublicKeyRingId = decorate('getPublicKeyRingId', [
API.prototype.getWalletIds = decorate('getWalletIds', [
['callback', 'function']
]);

View File

@ -110,7 +110,6 @@ WalletFactory.prototype.create = function(opts) {
opts.totalCopayers = totalCopayers;
var w = new Wallet(opts);
w.store();
this.addWalletId(w.id);
return w;
};
@ -156,28 +155,11 @@ WalletFactory.prototype.openRemote = function(peedId) {
};
WalletFactory.prototype.getWalletIds = function() {
var ids = this.storage.getGlobal('walletIds');
return ids || [];
return this.storage.getWalletIds();
}
WalletFactory.prototype._delWalletId = function(walletId) {
var ids = this.getWalletIds();
var index = ids.indexOf(walletId);
if (index === -1) return;
ids.splice(index, 1); // removes walletId
this.storage.setGlobal('walletIds', ids);
};
WalletFactory.prototype.remove = function(walletId) {
WalletFactory._delWalletId(walletId);
// TODO remove wallet contents, not only the id (Wallet.remove?)
};
WalletFactory.prototype.addWalletId = function(walletId) {
var ids = this.getWalletIds();
if (ids.indexOf(walletId) !== -1) return;
ids.push(walletId);
this.storage.setGlobal('walletIds', ids);
// TODO remove wallet contents
};

View File

@ -17,6 +17,9 @@ Storage.prototype.set = function(walletId,v) {
Storage.prototype.remove = function(walletId, k) {
};
Storage.prototype.getWalletIds = function() {
};
// remove all values
Storage.prototype.clearAll = function() {
};

View File

@ -89,6 +89,10 @@ Storage.prototype.remove = function(walletId, k, callback) {
this.removeGlobal(this._key(walletId, k), callback);
};
Storage.prototype.getWalletIds = function() {
return [];
};
// remove all values
Storage.prototype.clearAll = function(callback) {
this.data = {};

View File

@ -52,6 +52,21 @@ Storage.prototype.remove = function(walletId, k) {
this.removeGlobal(this._key(walletId,k));
};
Storage.prototype.getWalletIds = function() {
var walletIds = [];
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
var split = key.split('::');
if (split.length == 2) {
var walletId = split[0];
walletIds.push(walletId);
}
}
return walletIds;
};
// remove all values
Storage.prototype.clearAll = function() {
localStorage.clear();

View File

@ -23,4 +23,8 @@ FakeStorage.prototype.clear = function() {
delete this['storage'];
}
FakeStorage.prototype.getWalletIds = function() {
return [];
};
module.exports = require('soop')(FakeStorage);

View File

@ -110,11 +110,11 @@ describe('API', function() {
});
});
describe('#getPublicKeyRingId', function() {
it('should get a public key ring ID', function(done) {
describe('#getWalletIds', function() {
it('should get the wallet ids', function(done) {
var api = new API({Storage: Storage});
api.getPublicKeyRingId(function(err, result) {
result.length.should.be.greaterThan(5);
api.getWalletIds(function(err, result) {
result.length.should.be.greaterThan(-1);
done();
});
});