UNPKG

@tronweb3/tronwallet-adapter-tronlink

Version:

Wallet adapter for TronLink Wallet extension and TronLink app.

112 lines (92 loc) 3.96 kB
# `@tronweb3/tronwallet-adapter-tronlink` This package provides an adapter to enable TRON DApps to connect to the [TronLink Wallet extension](https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec) and [TronLink Wallet App](https://www.tronlink.org/). ## Demo ```typescript import { TronLinkAdapter } from '@tronweb3/tronwallet-adapter-tronlink'; import TronWeb from 'tronweb'; const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', headers: { 'TRON-PRO-API-KEY': 'your api key' }, }); const adapter = new TronLinkAdapter(); // connect await adapter.connect(); // then you can get address console.log(adapter.address); // create a send TRX transaction const unSignedTransaction = await tronWeb.transactionBuilder.sendTrx(targetAddress, 100, adapter.address); // using adapter to sign the transaction const signedTransaction = await adapter.signTransaction(unSignedTransaction); // broadcast the transaction await tronWeb.trx.sendRawTransaction(signedTransaction); ``` ## Documentation ### API - `Constructor(config: TronLinkAdapterConfig)` ```typescript interface TronLinkAdapterConfig { /** * Set if open Wallet's website url when wallet is not installed. * Default is true. */ openUrlWhenWalletNotFound?: boolean; /** * Timeout in millisecond for checking if TronLink wallet exists. * Default is 30 * 1000ms */ checkTimeout?: number; /** * Set if open TronLink app using DeepLink on mobile device. * Default is true. */ openAppWithDeeplink?: boolean; /** * The icon of your dapp. Used when open TronLink app in mobile device browsers. * Default is current website icon. */ dappIcon?: string; /** * The name of your dapp. Used when open TronLink app in mobile device browsers. * Default is `document.title`. */ dappName?: string; } ``` - `network()` method is supported to get current network information. The type of returned value is `Network` as follows: ```typescript export enum NetworkType { Mainnet = 'Mainnet', Shasta = 'Shasta', Nile = 'Nile', /** * When use custom node */ Unknown = 'Unknown', } export type Network = { networkType: NetworkType; chainId: string; fullNode: string; solidityNode: string; eventServer: string; }; ``` ### Security Check `TronLinkAdapter` supports an optional `securityOptions` field for detecting wallet risks before `connect()`. When enabled, the adapter fetches a remote risk configuration and calls `onRiskDetected` if the wallet is flagged. ```typescript const adapter = new TronLinkAdapter({ securityOptions: { enabled: true, configUrls: ['https://your-server.com/security-config.json'], onRiskDetected: async ({ risks }) => { // Throw to block the connection, or log a warning throw new Error(`Wallet risk detected: ${risks[0].title}`); }, }, }); ``` For the full `SecurityOptions` API reference, see [walletadapter.org/docs](https://walletadapter.org/docs/index.html). ### Caveats - **TronLink Doesn't support `disconnect` by DApp**. As TronLinkAdapter doesn't support disconnect by DApp website, call `adapter.disconnect()` won't disconnect from TronLink extension really. - **Desktop discovery is asynchronous**. On desktop, the adapter requests TIP-6963 providers first and then falls back to legacy `window.tron` / `window.tronLink` detection before `checkTimeout`, so `readyState` may stay `Loading` briefly after construction. For more information about tronwallet adapters, please refer to [`@tronweb3/tronwallet-adapters`](https://github.com/tronweb3/tronwallet-adapter/tree/main/packages/adapters/adapters)