@pooltogether/bnc-onboard
Version:
Onboard users to web3 by allowing them to select a wallet, get that wallet ready to transact and have access to synced wallet state.
101 lines (88 loc) • 5.68 kB
JavaScript
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); }); }; }
import { m as mobileWalletInstallMessage } from './content-60ae07c5.js';
var imTokenIcon = "\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 93 93\">\n\t\t<defs>\n\t\t\t\t<linearGradient id=\"a\" x1=\"97.185%\" x2=\"-.038%\" y1=\"3.105%\" y2=\"99.699%\">\n\t\t\t\t\t\t<stop offset=\"0%\" stop-color=\"#11C4D1\"/>\n\t\t\t\t\t\t<stop offset=\"100%\" stop-color=\"#0062AD\"/>\n\t\t\t\t</linearGradient>\n\t\t</defs>\n\t\t<g fill=\"none\" fill-rule=\"nonzero\">\n\t\t\t\t<path fill=\"url(#a)\" d=\"M92.755 63.804s0 9.64-1.028 13.78c-1.028 4.187-2.985 7.06-5.09 9.202-2.154 2.142-4.993 4.09-9.3 5.112-4.356 1.023-13.754.974-13.754.974H29.417s-9.642 0-13.803-1.022c-4.16-1.071-7.097-2.97-9.25-5.113-2.155-2.142-4.112-4.966-5.091-9.3-1.028-4.333-.98-13.682-.98-13.682V29.671s0-9.64 1.029-13.78c1.027-4.187 2.985-7.06 5.09-9.202 2.154-2.142 4.993-4.09 9.3-5.113C20.068.554 29.466.603 29.466.603h34.166s9.642 0 13.803 1.022c4.16 1.071 7.097 2.97 9.25 5.113 2.154 2.142 4.112 4.966 5.091 9.3.98 4.333.98 13.682.98 13.682v34.084z\"/>\n\t\t\t\t<path fill=\"#FFF\" d=\"M78.267 28.795c1.909 26.244-15.614 38.71-31.326 40.073-14.587 1.265-28.292-7.304-29.467-20.597-.979-10.955 6.07-15.678 11.6-16.117 5.679-.486 10.427 3.263 10.867 7.84.392 4.382-2.447 6.427-4.454 6.573-1.566.146-3.524-.78-3.72-2.727-.147-1.704.538-1.899.342-3.7-.293-3.214-3.181-3.555-4.747-3.409-1.91.146-5.385 2.338-4.944 7.694.49 5.404 5.874 9.69 12.922 9.056 7.636-.682 12.971-6.378 13.363-14.412 0-.439.098-.828.293-1.218.098-.146.147-.292.294-.438.196-.292.392-.536.636-.779l.686-.682c3.328-3.019 15.37-10.225 26.676-7.985.098 0 .196.049.245.097.44 0 .685.341.734.73\"/>\n\t\t</g>\n\t</svg>\n";
function imtoken(options) {
var preferred = options.preferred,
label = options.label,
iconSrc = options.iconSrc,
svg = options.svg,
rpcUrl = options.rpcUrl;
return {
name: label || 'imToken',
iconSrc: iconSrc,
svg: svg || imTokenIcon,
wallet: function () {
var _wallet = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(helpers) {
var getProviderName, getBalance, imTokenProvider, isImToken, createProvider, provider, warned;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
getProviderName = helpers.getProviderName, getBalance = helpers.getBalance;
imTokenProvider = window.ethereum;
isImToken = getProviderName(imTokenProvider) === 'imToken';
if (!(isImToken && rpcUrl)) {
_context.next = 7;
break;
}
_context.next = 6;
return import('./providerEngine-c4c55454.js');
case 6:
createProvider = _context.sent["default"];
case 7:
provider = createProvider ? createProvider({
rpcUrl: rpcUrl
}) : null;
warned = false;
return _context.abrupt("return", {
provider: imTokenProvider,
"interface": isImToken ? {
address: {
get: function get() {
return Promise.resolve(imTokenProvider.selectedAddress);
}
},
network: {
get: function get() {
return Promise.resolve(Number(imTokenProvider.networkVersion));
}
},
balance: {
get: function get() {
if (!provider) {
if (!warned) {
console.warn('The imToken provider does not allow rpc calls preventing Onboard.js from getting the balance. You can pass in a "rpcUrl" to the imToken wallet initialization object to get the balance.');
warned = true;
}
return Promise.resolve(null);
}
return getBalance(provider, imTokenProvider.selectedAddress);
}
},
name: getProviderName(imTokenProvider),
connect: function connect() {
return imTokenProvider.enable();
}
} : null
});
case 10:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function wallet(_x) {
return _wallet.apply(this, arguments);
}
return wallet;
}(),
type: 'injected',
link: "imtokenv2://navigate?screen=DappView&url=".concat(window.location.href),
installMessage: mobileWalletInstallMessage,
mobile: true,
preferred: preferred
};
}
export default imtoken;