|
|
@ -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); |
|
|
|
}); |
|
|
|