UNPKG

@tronweb3/tronwallet-adapter-tronlink

Version:

Wallet adapter for TronLink Wallet extension and TronLink app.

73 lines 3.19 kB
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()); }); }; import { isInBrowser, isInMobileBrowser } from '@tronweb3/tronwallet-abstract-adapter'; export function supportTron() { return !!(window.tron && window.tron.isTronLink); } export function supportTronLink() { return !!(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) */ export function isInTronLinkApp() { return isInBrowser() && typeof window.iTron !== 'undefined'; } export function openTronLink({ dappIcon, dappName } = { dappIcon: '', dappName: '' }) { if (!supportTronLink() && 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 (e) { // 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; } export 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