return upgrade_needed for legacy clients
This commit is contained in:
parent
0bb043d034
commit
3f35d8f141
|
@ -136,7 +136,7 @@ WalletService.shutDown = function(cb) {
|
|||
WalletService.getInstance = function(opts) {
|
||||
opts = opts || {};
|
||||
var server = new WalletService();
|
||||
server.clientVersion = opts.clientVersion;
|
||||
server._setClientVersion(opts.clientVersion);
|
||||
return server;
|
||||
};
|
||||
|
||||
|
@ -163,7 +163,7 @@ WalletService.getInstanceWithAuth = function(opts, cb) {
|
|||
|
||||
server.copayerId = opts.copayerId;
|
||||
server.walletId = copayer.walletId;
|
||||
server.clientVersion = opts.clientVersion;
|
||||
server._setClientVersion(opts.clientVersion);
|
||||
return cb(null, server);
|
||||
});
|
||||
};
|
||||
|
@ -509,6 +509,11 @@ WalletService.prototype.addAccess = function(opts, cb) {
|
|||
});
|
||||
};
|
||||
|
||||
WalletService.prototype._setClientVersion = function(version) {
|
||||
delete this.parsedClientVersion;
|
||||
this.clientVersion = version;
|
||||
};
|
||||
|
||||
WalletService.prototype._parseClientVersion = function() {
|
||||
function parse(version) {
|
||||
var v = {};
|
||||
|
@ -543,6 +548,14 @@ WalletService.prototype._clientSupportsTXPv2 = function() {
|
|||
return true;
|
||||
};
|
||||
|
||||
WalletService.prototype._clientSupportsTXPv3 = function() {
|
||||
var version = this._parseClientVersion();
|
||||
if (!version) return false;
|
||||
if (version.agent != 'bwc') return true; // Asume 3rd party clients are up-to-date
|
||||
if (version.major < 2) return false;
|
||||
return true;
|
||||
};
|
||||
|
||||
WalletService._getCopayerHash = function(name, xPubKey, requestPubKey) {
|
||||
return [name, xPubKey, requestPubKey].join('|');
|
||||
};
|
||||
|
@ -1833,6 +1846,13 @@ WalletService.prototype.getPendingTxs = function(opts, cb) {
|
|||
self.storage.fetchPendingTxs(self.walletId, function(err, txps) {
|
||||
if (err) return cb(err);
|
||||
|
||||
var v3Txps = _.any(txps, function(txp) {
|
||||
return txp.version >= 3;
|
||||
});
|
||||
if (v3Txps && !self._clientSupportsTXPv3()) {
|
||||
return cb(new ClientError(Errors.codes.UPGRADE_NEEDED, 'To view some of the pending proposals you need to upgrade your client app.'));
|
||||
}
|
||||
|
||||
_.each(txps, function(txp) {
|
||||
txp.deleteLockTime = self.getRemainingDeleteLockTime(txp);
|
||||
});
|
||||
|
|
|
@ -26,9 +26,11 @@ var TestData = require('../testdata');
|
|||
|
||||
var storage, blockchainExplorer;
|
||||
|
||||
var useMongoDb = !!process.env.USE_MONGO_DB;
|
||||
|
||||
var helpers = {};
|
||||
|
||||
var useMongoDb = !!process.env.USE_MONGO_DB;
|
||||
helpers.CLIENT_VERSION = 'bwc-2.0.0';
|
||||
|
||||
helpers.before = function(cb) {
|
||||
function getDb(cb) {
|
||||
|
@ -96,7 +98,7 @@ helpers.getAuthServer = function(copayerId, cb) {
|
|||
copayerId: copayerId,
|
||||
message: 'dummy',
|
||||
signature: 'dummy',
|
||||
clientVersion: 'bwc-0.1.0',
|
||||
clientVersion: helpers.CLIENT_VERSION,
|
||||
}, function(err, server) {
|
||||
verifyStub.restore();
|
||||
if (err || !server) throw new Error('Could not login as copayerId ' + copayerId);
|
||||
|
|
|
@ -25,7 +25,6 @@ var TestData = require('../testdata');
|
|||
var helpers = require('./helpers');
|
||||
var storage, blockchainExplorer;
|
||||
|
||||
var CLIENT_VERSION = 'bwc-0.1.1';
|
||||
|
||||
describe('Wallet service', function() {
|
||||
before(function(done) {
|
||||
|
@ -1260,7 +1259,7 @@ describe('Wallet service', function() {
|
|||
copayerId: copayerId,
|
||||
message: msg,
|
||||
signature: sig,
|
||||
clientVersion: CLIENT_VERSION,
|
||||
clientVersion: helpers.CLIENT_VERSION,
|
||||
}, function(err, server) {
|
||||
return cb(err, server);
|
||||
});
|
||||
|
@ -2579,6 +2578,38 @@ describe('Wallet service', function() {
|
|||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail to list pending proposals from legacy client', function(done) {
|
||||
helpers.stubUtxos(server, wallet, [1, 2], function() {
|
||||
var txOpts = helpers.createProposalOpts2([{
|
||||
toAddress: '18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7',
|
||||
amount: 0.8
|
||||
}], {
|
||||
message: 'some message',
|
||||
customData: 'some custom data',
|
||||
});
|
||||
server.createTx(txOpts, function(err, txp) {
|
||||
should.not.exist(err);
|
||||
should.exist(txp);
|
||||
var sendOpts = helpers.getProposalSignatureOpts(txp, TestData.copayers[0].privKey_1H_0);
|
||||
server.sendTx(sendOpts, function(err) {
|
||||
should.not.exist(err);
|
||||
server.getPendingTxs({}, function(err, txs) {
|
||||
should.not.exist(err);
|
||||
txs.length.should.equal(1);
|
||||
|
||||
server._setClientVersion('bwc-1.1.8');
|
||||
server.getPendingTxs({}, function(err, txs) {
|
||||
should.exist(err);
|
||||
err.code.should.equal('UPGRADE_NEEDED');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue