47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
import { ZeroEx } from '0x.js';
|
|
import { BigNumber } from '@0xproject/utils';
|
|
import * as _ from 'lodash';
|
|
|
|
import { configs } from './configs';
|
|
import { errorReporter } from './error_reporter';
|
|
import { RequestQueue } from './request_queue';
|
|
import { utils } from './utils';
|
|
|
|
// HACK: web3 leaks XMLHttpRequest into the global scope and causes requests to hang
|
|
// because they are using the wrong XHR package.
|
|
// Filed issue: https://github.com/ethereum/web3.js/issues/844
|
|
// tslint:disable-next-line:ordered-imports
|
|
import * as Web3 from 'web3';
|
|
|
|
const DISPENSE_AMOUNT_ZRX = new BigNumber(0.1);
|
|
const QUEUE_INTERVAL_MS = 5000;
|
|
|
|
export class ZRXRequestQueue extends RequestQueue {
|
|
private _zeroEx: ZeroEx;
|
|
constructor(web3: Web3, networkId: number) {
|
|
super(web3);
|
|
this._queueIntervalMs = QUEUE_INTERVAL_MS;
|
|
const zeroExConfig = {
|
|
networkId,
|
|
};
|
|
this._zeroEx = new ZeroEx(web3.currentProvider, zeroExConfig);
|
|
}
|
|
protected async _processNextRequestFireAndForgetAsync(recipientAddress: string) {
|
|
utils.consoleLog(`Processing ZRX ${recipientAddress}`);
|
|
const baseUnitAmount = ZeroEx.toBaseUnitAmount(DISPENSE_AMOUNT_ZRX, 18);
|
|
try {
|
|
const zrxTokenAddress = this._zeroEx.exchange.getZRXTokenAddress();
|
|
const txHash = await this._zeroEx.token.transferAsync(
|
|
zrxTokenAddress,
|
|
configs.DISPENSER_ADDRESS,
|
|
recipientAddress,
|
|
baseUnitAmount,
|
|
);
|
|
utils.consoleLog(`Sent ${DISPENSE_AMOUNT_ZRX} ZRX to ${recipientAddress} tx: ${txHash}`);
|
|
} catch (err) {
|
|
utils.consoleLog(`Unexpected err: ${err} - ${JSON.stringify(err)}`);
|
|
await errorReporter.reportAsync(err);
|
|
}
|
|
}
|
|
}
|