good morning!!!!

Skip to content
Snippets Groups Projects
Commit e45db42e authored by Marek Kotewicz's avatar Marek Kotewicz
Browse files

fixed contract.js

parent 0202b05a
Branches
Tags
No related merge requests found
...@@ -456,12 +456,24 @@ var abi = require('./abi'); ...@@ -456,12 +456,24 @@ var abi = require('./abi');
* @returns contract object * @returns contract object
*/ */
var contract = function contract (address, desc) { var contract = function (address, desc) {
var inputParser = abi.inputParser(desc); var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc); var outputParser = abi.outputParser(desc);
var result = {}; var result = {};
result.call = function (options) {
result._isTransact = false;
result._options = options;
return result;
};
result.transact = function (options) {
result._isTransact = true;
result._options = options;
return result;
};
desc.forEach(function (method) { desc.forEach(function (method) {
var displayName = abi.methodDisplayName(method.name); var displayName = abi.methodDisplayName(method.name);
...@@ -472,12 +484,12 @@ var contract = function contract (address, desc) { ...@@ -472,12 +484,12 @@ var contract = function contract (address, desc) {
var signature = abi.methodSignature(method.name); var signature = abi.methodSignature(method.name);
var parsed = inputParser[displayName][typeName].apply(null, params); var parsed = inputParser[displayName][typeName].apply(null, params);
var options = contract._options || {}; var options = result._options || {};
options.to = address; options.to = address;
options.data = signature + parsed; options.data = signature + parsed;
var output = ""; var output = "";
if (contract._isTransact) { if (result._isTransact) {
// it's used byt natspec.js // it's used byt natspec.js
// TODO: figure out better way to solve this // TODO: figure out better way to solve this
web3._currentContractAbi = desc; web3._currentContractAbi = desc;
...@@ -488,6 +500,10 @@ var contract = function contract (address, desc) { ...@@ -488,6 +500,10 @@ var contract = function contract (address, desc) {
output = web3.eth.call(options); output = web3.eth.call(options);
} }
// reset
result._options = {};
result._isTransact = false;
return outputParser[displayName][typeName](output); return outputParser[displayName][typeName](output);
}; };
...@@ -498,24 +514,10 @@ var contract = function contract (address, desc) { ...@@ -498,24 +514,10 @@ var contract = function contract (address, desc) {
result[displayName][typeName] = impl; result[displayName][typeName] = impl;
}); });
return result;
};
var transact = function (options) {
contract._isTransact = true;
contract._options = options;
return contract;
};
var call = function (options) { return result;
contract._isTransact = false;
contract._options = options;
return contract;
}; };
contract.transact = transact;
contract.call = call;
module.exports = contract; module.exports = contract;
......
This diff is collapsed.
This diff is collapsed.
...@@ -45,12 +45,24 @@ var abi = require('./abi'); ...@@ -45,12 +45,24 @@ var abi = require('./abi');
* @returns contract object * @returns contract object
*/ */
var contract = function contract (address, desc) { var contract = function (address, desc) {
var inputParser = abi.inputParser(desc); var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc); var outputParser = abi.outputParser(desc);
var result = {}; var result = {};
result.call = function (options) {
result._isTransact = false;
result._options = options;
return result;
};
result.transact = function (options) {
result._isTransact = true;
result._options = options;
return result;
};
desc.forEach(function (method) { desc.forEach(function (method) {
var displayName = abi.methodDisplayName(method.name); var displayName = abi.methodDisplayName(method.name);
...@@ -61,12 +73,12 @@ var contract = function contract (address, desc) { ...@@ -61,12 +73,12 @@ var contract = function contract (address, desc) {
var signature = abi.methodSignature(method.name); var signature = abi.methodSignature(method.name);
var parsed = inputParser[displayName][typeName].apply(null, params); var parsed = inputParser[displayName][typeName].apply(null, params);
var options = contract._options || {}; var options = result._options || {};
options.to = address; options.to = address;
options.data = signature + parsed; options.data = signature + parsed;
var output = ""; var output = "";
if (contract._isTransact) { if (result._isTransact) {
// it's used byt natspec.js // it's used byt natspec.js
// TODO: figure out better way to solve this // TODO: figure out better way to solve this
web3._currentContractAbi = desc; web3._currentContractAbi = desc;
...@@ -77,6 +89,10 @@ var contract = function contract (address, desc) { ...@@ -77,6 +89,10 @@ var contract = function contract (address, desc) {
output = web3.eth.call(options); output = web3.eth.call(options);
} }
// reset
result._options = {};
result._isTransact = false;
return outputParser[displayName][typeName](output); return outputParser[displayName][typeName](output);
}; };
...@@ -87,23 +103,9 @@ var contract = function contract (address, desc) { ...@@ -87,23 +103,9 @@ var contract = function contract (address, desc) {
result[displayName][typeName] = impl; result[displayName][typeName] = impl;
}); });
return result;
};
var transact = function (options) {
contract._isTransact = true;
contract._options = options;
return contract;
};
var call = function (options) { return result;
contract._isTransact = false;
contract._options = options;
return contract;
}; };
contract.transact = transact;
contract.call = call;
module.exports = contract; module.exports = contract;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment