UNPKG

@tronweb3/tronwallet-adapter-tronlink

Version:

Wallet adapter for TronLink Wallet extension and TronLink app.

80 lines 3.61 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.supportTron = supportTron; exports.supportTronLink = supportTronLink; exports.isInTronLinkApp = isInTronLinkApp; exports.openTronLink = openTronLink; exports.waitTronwebReady = waitTronwebReady; const tronwallet_abstract_adapter_1 = require("@tronweb3/tronwallet-abstract-adapter"); function supportTron() { return (0, tronwallet_abstract_adapter_1.isInBrowser)() && !!(window.tron && window.tron.isTronLink); } function supportTronLink() { return (0, tronwallet_abstract_adapter_1.isInBrowser)() && !!(supportTron() || window.tronLink || window.tronWeb); } /** * Detect if in TronLinkApp * Tron DApp running in the DApp Explorer injects iTron objects automatically to offer customized App service. * See [here](https://docs.tronlink.org/tronlink-app/dapp-support/dapp-explorer) */ function isInTronLinkApp() { return (0, tronwallet_abstract_adapter_1.isInBrowser)() && typeof window.iTron !== 'undefined'; } function openTronLink({ dappIcon, dappName } = { dappIcon: '', dappName: '' }) { if (!supportTronLink() && (0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && !isInTronLinkApp()) { let defaultDappName = '', defaultDappIcon = ''; try { defaultDappName = document.title; const link = document.querySelector('link[rel*="icon"]'); if (link) { defaultDappIcon = new URL(link.getAttribute('href') || '', location.href).toString(); } } catch (_a) { // console.error(e); } const { origin, pathname, search, hash } = window.location; const url = origin + pathname + search + (hash.includes('?') ? hash : `${hash}?_=1`); const params = { action: 'open', actionId: Date.now() + '', callbackUrl: 'http://someurl.com', // no need callback dappIcon: dappIcon || defaultDappIcon, dappName: dappName || defaultDappName, url, protocol: 'TronLink', version: '1.0', chainId: '0x2b6653dc', }; window.location.href = `tronlinkoutside://pull.activity?param=${encodeURIComponent(JSON.stringify(params))}`; return true; } return false; } function waitTronwebReady(tronObj) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const interval = setInterval(() => { if (tronObj.tronWeb) { clearInterval(interval); clearTimeout(timeout); resolve(); } }, 50); const timeout = setTimeout(() => { clearInterval(interval); reject('`window.tron.tronweb` is not ready.'); }, 2000); }); }); } //# sourceMappingURL=utils.js.map