@r3l/app
Version:
113 lines (94 loc) • 3.81 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.logRevert = logRevert;
exports.calculateGasMargin = calculateGasMargin;
exports.getTxStatusString = exports.ERROR_STATES = exports.TX_STATUS = exports.TX_TYPE = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _ethRevertReason = require("./eth-revert-reason");
var _constants = require("./constants");
/* eslint-disable no-console */
var TX_TYPE = {
// This means we are in the process of approving a token
APPROVE_TOKEN: 'APPROVE_TOKEN',
DEFAULT: 'DEFAULT'
};
exports.TX_TYPE = TX_TYPE;
var TX_STATUS = {
// User needs to click confirm tx (for ex via metamask popup)
AWAITING_USER_ACTION: 'AWAITING_USER_ACTION',
// Waiting for transaction to go through
PENDING: 'PENDING',
// Success
CONFIRMED: 'CONFIRMED',
// ERROR
FAILED: 'FAILED'
};
exports.TX_STATUS = TX_STATUS;
var ERROR_STATES = {
CONFIRM_REJECTED: 'MetaMask Tx Signature: User denied transaction signature.',
GAS_EXCEEDED: 'gas required exceeds allowance (8000029) or always failing transaction'
}; // DEPRECATED (only used on dapp right now)
// TODO remove
exports.ERROR_STATES = ERROR_STATES;
var getTxStatusString = function getTxStatusString(txStatus, txMeta) {
if (!txMeta || !txStatus) return null;
var transactionHash = txMeta.transactionHash;
if (txStatus === TX_STATUS.AWAITING_USER_ACTION) return "awaiting user action";
if (txStatus === TX_STATUS.PENDING) return "pending tx: ".concat(transactionHash);
if (txStatus === TX_STATUS.CONFIRMED) return "confirmed tx: ".concat(transactionHash);
if (txStatus === TX_STATUS.FAILED) return "failed tx: ".concat(transactionHash);
return null;
};
exports.getTxStatusString = getTxStatusString;
function logRevert(_x) {
return _logRevert.apply(this, arguments);
}
function _logRevert() {
_logRevert = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
var contract, action, args, library, account, data, tx;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
contract = _ref.contract, action = _ref.action, args = _ref.args, library = _ref.library, account = _ref.account;
_context.prev = 1;
if (!(!contract || !contract.interface)) {
_context.next = 4;
break;
}
return _context.abrupt("return", null);
case 4:
data = contract === null || contract === void 0 ? void 0 : contract.interface.encodeFunctionData(action, args);
tx = {
to: contract.address,
data: data,
from: account
};
console.log(tx);
_context.next = 9;
return (0, _ethRevertReason.getRevertReason)(null, tx, _constants.PUBLIC_NETWORK, 'latest', library);
case 9:
return _context.abrupt("return", _context.sent);
case 12:
_context.prev = 12;
_context.t0 = _context["catch"](1);
console.error('revert error', _context.t0);
return _context.abrupt("return", null);
case 16:
case "end":
return _context.stop();
}
}
}, _callee, null, [[1, 12]]);
}));
return _logRevert.apply(this, arguments);
}
function calculateGasMargin(value) {
var offset = value.mul(_constants.GAS_MARGIN).div(_constants.PERCENT);
return value.add(offset);
}
//# sourceMappingURL=tx.js.map