@tronweb3/tronwallet-adapter-okxwallet
Version:
Wallet adapter for Okx Wallet extension and Okx Wallet app.
105 lines (84 loc) • 3.42 kB
Markdown
# `/tronwallet-adapter-okxwallet`
This package provides an adapter to enable TRON DApps to connect to the [Okx Wallet extension](https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge) and [Okx Wallet App](https://www.okx.com/download).
## Demo
```typescript
import { OkxWalletAdapter } from '/tronwallet-adapter-okxwallet';
const adapter = new OkxWalletAdapter();
// connect to OkxWallet
await adapter.connect();
// then you can get address
console.log(adapter.address);
// create a send TRX transaction
const unSignedTransaction = await window.okxwallet.tronLink.tronWeb.transactionBuilder.sendTrx(
targetAddress,
100,
adapter.address
);
// using adapter to sign the transaction
const signedTransaction = await adapter.signTransaction(unSignedTransaction);
// broadcast the transaction
await window.okxwallet.tronLink.tronWeb.trx.sendRawTransaction(signedTransaction);
```
## Documentation
### API
- `Constructor(config: OkxWalletAdapterConfig)`
```typescript
interface OkxWalletAdapterConfig {
/**
* Set if open Wallet's website when wallet is not installed.
* Default is true.
*/
openUrlWhenWalletNotFound?: boolean;
/**
* Timeout in millisecond for checking if TokenPocket wallet is supported.
* Default is 2 * 1000ms
*/
checkTimeout?: number;
/**
* Set if open TokenPocket app using DeepLink on mobile device.
* Default is true.
*/
openAppWithDeeplink?: boolean;
}
```
- `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
`OkxWalletAdapter` 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 OkxWalletAdapter({
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
- OkxWallet App and Extension doesn't implement `multiSign()` and `switchChain()` and will throw error when call them.
- OkxWallet Extension only support these: `accountsChanged`,`connect`,`disconnect`.
- OkxWallet App does not support any events.
- Deeplink only works for OKX App **version 6.1.38 or later** on Android.
- OkxWallet Extension supports auto-reconnect after a page refresh, while the OkxWallet App does not.
For more information about tronwallet adapters, please refer to [`/tronwallet-adapters`](https://github.com/tronweb3/tronwallet-adapter/tree/main/packages/adapters/adapters)