Skip to content

Commit

Permalink
Merge ad5224d into 65d146d
Browse files Browse the repository at this point in the history
  • Loading branch information
nivida committed Mar 26, 2019
2 parents 65d146d + ad5224d commit 1a05c39
Show file tree
Hide file tree
Showing 18 changed files with 650 additions and 396 deletions.
54 changes: 33 additions & 21 deletions packages/web3-bzz/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

71 changes: 58 additions & 13 deletions packages/web3-core-method/lib/factories/AbstractMethodFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ import {NewHeadsSubscription} from 'web3-core-subscriptions';
import GetBlockByNumberMethod from '../../src/methods/block/GetBlockByNumberMethod';
import GetTransactionReceiptMethod from '../../src/methods/transaction/GetTransactionReceiptMethod';
import TransactionObserver from '../../src/observers/TransactionObserver';
import GetTransactionCountMethod from '../../src/methods/account/GetTransactionCountMethod';
import SendRawTransactionMethod from '../../src/methods/transaction/SendRawTransactionMethod';
import ChainIdMethod from '../../src/methods/network/ChainIdMethod';

export default class AbstractMethodFactory {
/**
Expand Down Expand Up @@ -89,30 +92,72 @@ export default class AbstractMethodFactory {
const method = this.methods[name];

if (method.Type === 'observed-transaction-method') {
let timeout = moduleInstance.transactionBlockTimeout;
const providerName = moduleInstance.currentProvider.constructor.name;
// eslint-disable-next-line new-cap
return new method(
this.utils,
this.formatters,
moduleInstance,
this.createTransactionObserver(moduleInstance)
);
}

if (providerName === 'HttpProvider' || providerName === 'CustomProvider') {
timeout = moduleInstance.transactionPollingTimeout;
}
// TODO: Move this later to the eth module
if (method.Type === 'eth-send-transaction-method') {
const transactionObserver = this.createTransactionObserver(moduleInstance);

// eslint-disable-next-line new-cap
return new method(
this.utils,
this.formatters,
moduleInstance,
new TransactionObserver(
moduleInstance.currentProvider,
timeout,
moduleInstance.transactionConfirmationBlocks,
new GetTransactionReceiptMethod(this.utils, this.formatters, moduleInstance),
new GetBlockByNumberMethod(this.utils, this.formatters, moduleInstance),
new NewHeadsSubscription(this.utils, this.formatters, moduleInstance)
)
transactionObserver,
new ChainIdMethod(this.utils, this.formatters, moduleInstance),
new GetTransactionCountMethod(this.utils, this.formatters, moduleInstance),
new SendRawTransactionMethod(this.utils, this.formatters, moduleInstance, transactionObserver)
);
}

// eslint-disable-next-line new-cap
return new method(this.utils, this.formatters, moduleInstance);
}

/**
* Returns the correct timeout value
*
* @method getTimeout
*
* @param {AbstractWeb3Module} moduleInstance
*
* @returns {Number}
*/
getTimeout(moduleInstance) {
let timeout = moduleInstance.transactionBlockTimeout;
const providerName = moduleInstance.currentProvider.constructor.name;

if (providerName === 'HttpProvider' || providerName === 'CustomProvider') {
timeout = moduleInstance.transactionPollingTimeout;
}

return timeout;
}

/**
* Returns a object of type TransactionObserver
*
* @method createTransactionObserver
*
* @param {AbstractWeb3Module} moduleInstance
*
* @returns {TransactionObserver}
*/
createTransactionObserver(moduleInstance) {
return new TransactionObserver(
moduleInstance.currentProvider,
this.getTimeout(moduleInstance),
moduleInstance.transactionConfirmationBlocks,
new GetTransactionReceiptMethod(this.utils, this.formatters, moduleInstance),
new GetBlockByNumberMethod(this.utils, this.formatters, moduleInstance),
new NewHeadsSubscription(this.utils, this.formatters, moduleInstance)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ export default class EthSendTransactionMethod extends SendTransactionMethod {
this.sendRawTransactionMethod = sendRawTransactionMethod;
}

/**
* This type will be used in the AbstractMethodFactory.
*
* @returns {String}
*/
static get Type() {
return 'eth-send-transaction-method';
}

/**
* Checks if gasPrice is set, sends the request and returns a PromiEvent Object
*
Expand All @@ -63,7 +72,7 @@ export default class EthSendTransactionMethod extends SendTransactionMethod {
this.parameters[0]['gas'] = this.moduleInstance.defaultGas;
}

if (!this.parameters[0].gasPrice) {
if (!this.parameters[0].gasPrice && this.parameters[0].gasPrice !== 0) {
if (!this.moduleInstance.defaultGasPrice) {
this.moduleInstance.currentProvider
.send('eth_gasPrice', [])
Expand Down Expand Up @@ -125,7 +134,14 @@ export default class EthSendTransactionMethod extends SendTransactionMethod {
this.parameters[0].nonce = await this.getTransactionCountMethod.execute();
}

const response = await this.moduleInstance.transactionSigner.sign(this.parameters[0], privateKey);
let transaction = this.formatters.inputCallFormatter(this.parameters[0], this.moduleInstance);
transaction.to = transaction.to || '0x';
transaction.data = transaction.data || '0x';
transaction.value = transaction.value || '0x';
transaction.chainId = this.utils.numberToHex(transaction.chainId);
delete transaction.from;

const response = await this.moduleInstance.transactionSigner.sign(transaction, privateKey);

this.sendRawTransactionMethod.parameters = [response.rawTransaction];
this.sendRawTransactionMethod.callback = this.callback;
Expand Down Expand Up @@ -153,7 +169,7 @@ export default class EthSendTransactionMethod extends SendTransactionMethod {
* @returns {Boolean}
*/
hasAccounts() {
return this.moduleInstance.accounts && this.moduleInstance.accounts.accountsIndex > 0;
return this.moduleInstance.accounts && this.moduleInstance.accounts.wallet.accountsIndex > 0;
}

/**
Expand Down
Loading

0 comments on commit 1a05c39

Please sign in to comment.