UNPKG

@foreverrbum/ethsign

Version:

This package will allow you to electronically sign documents within your application

234 lines (188 loc) 8.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getContract = exports.default = void 0; var _chains = require("./chains"); var _EthSign = _interopRequireDefault(require("../artifacts/EthSign.json")); var _mexa = require("@biconomy/mexa"); var _ethers = require("ethers"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var fortmatic_key = 'pk_live_6D2FFF6E41301BF0'; var fortmatic_test_key = 'pk_test_F4BDDED1F885923E'; var getContract = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_ref) { var fortmatic, torus, provider, biconomy, innerNetwork, _provider, originalProvider, _originalProvider, _originalProvider2, signer, account, networkId, deployedNetwork, contract, alias, resolver, avatar; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: fortmatic = _ref.fortmatic, torus = _ref.torus, provider = _ref.provider; if (provider) { _context2.next = 3; break; } return _context2.abrupt("return"); case 3: biconomy = null; //set innerNetwork to chainId of provider innerNetwork = provider.getNetwork().chainId; if (!fortmatic) { _context2.next = 9; break; } if ((0, _chains.getChain)(innerNetwork).biconomySupport) { originalProvider = new _ethers.ethers.providers.Web3Provider(fortmatic.getProvider()); biconomy = new _mexa.Biconomy(originalProvider, { apiKey: (0, _chains.getChain)(innerNetwork).biconomyKey, strictMode: false }); _provider = new _ethers.ethers.providers.Web3Provider(biconomy); } else { _provider = new _ethers.ethers.providers.Web3Provider(fortmatic.getProvider()); } _context2.next = 33; break; case 9: if (!torus) { _context2.next = 13; break; } if ((0, _chains.getChain)(innerNetwork).biconomySupport) { _originalProvider = new _ethers.ethers.providers.Web3Provider(torus.ethereum); biconomy = new _mexa.Biconomy(_originalProvider, { apiKey: (0, _chains.getChain)(innerNetwork).biconomyKey, strictMode: false }); _provider = new _ethers.ethers.providers.Web3Provider(biconomy); } else { _provider = new _ethers.ethers.providers.Web3Provider(torus.ethereum); } _context2.next = 33; break; case 13: if (!window.ethereum) { _context2.next = 33; break; } _context2.t0 = _chains.getChain; _context2.next = 17; return window.ethereum.request({ method: 'eth_chainId' }); case 17: _context2.t1 = _context2.sent; if (!(0, _context2.t0)(_context2.t1).biconomySupport) { _context2.next = 32; break; } _originalProvider2 = new _ethers.ethers.providers.Web3Provider(window.ethereum); _context2.t2 = _mexa.Biconomy; _context2.t3 = _originalProvider2; _context2.t4 = _chains.getChain; _context2.next = 25; return window.ethereum.request({ method: 'eth_chainId' }); case 25: _context2.t5 = _context2.sent; _context2.t6 = (0, _context2.t4)(_context2.t5).biconomyKey; _context2.t7 = { apiKey: _context2.t6, strictMode: false }; biconomy = new _context2.t2(_context2.t3, _context2.t7); _provider = new _ethers.ethers.providers.Web3Provider(biconomy); _context2.next = 33; break; case 32: _provider = new _ethers.ethers.providers.Web3Provider(window.ethereum); case 33: signer = _provider.getSigner(); // signer == current logged in user _context2.next = 36; return signer.getAddress(); case 36: account = _context2.sent; _context2.next = 39; return _provider.getNetwork(); case 39: networkId = _context2.sent.chainId; deployedNetwork = _EthSign.default.networks[networkId]; contract = null; if (!(biconomy == null)) { _context2.next = 47; break; } contract = new _ethers.ethers.Contract(deployedNetwork.address, _EthSign.default.abi, _provider); console.log("EthSign: Initialized normally."); _context2.next = 49; break; case 47: _context2.next = 49; return new Promise(function (resolve, reject) { biconomy.onEvent(biconomy.READY, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: contract = new _ethers.ethers.Contract(deployedNetwork.address, _EthSign.default.abi, biconomy.getSignerByAddress(account)); console.log("EthSign: Initialized with Mexa."); resolve(); case 3: case "end": return _context.stop(); } } }, _callee); }))).onEvent(biconomy.ERROR, function (error, message) { console.log("EthSign: Failed to initialize with Mexa."); console.log(message); console.log(error); reject(); }); }); case 49: _context2.next = 51; return provider.lookupAddress(account); case 51: alias = _context2.sent; if (!alias) { _context2.next = 59; break; } _context2.next = 55; return provider.getResolver(alias); case 55: resolver = _context2.sent; _context2.next = 58; return resolver.getText("avatar"); case 58: avatar = _context2.sent; case 59: return _context2.abrupt("return", { provider: _provider, fortmatic: fortmatic, torus: torus, ethAccount: account === null || account === void 0 ? void 0 : account.toLowerCase(), ethAlias: alias, ethAvatar: avatar, networkId: networkId, contract: contract }); case 60: case "end": return _context2.stop(); } } }, _callee2); })); return function getContract(_x) { return _ref2.apply(this, arguments); }; }(); exports.getContract = getContract; var _default = { getContract: getContract }; exports.default = _default;