Methods


description: Detailed documentation for all window.xrpl methods

API Methods

🔌 Connection Methods

connect()

Requests connection to the user's wallet.

javascript
window.xrpl.connect(data?: object): Promise<string>

Parameters:

  • data (optional): Additional connection data

Returns:

  • Promise<string>: Connected wallet address

Example:

javascript
try { const address = await window.xrpl.connect(); console.log('Connected to:', address); } catch (error) { if (error.code === 4001) { console.log('User rejected connection'); } }

disconnect()

Disconnects the wallet from the DApp.

javascript
window.xrpl.disconnect(address?: string): Promise<void>

Parameters:

  • address (optional): Specific address to disconnect

Example:

javascript
await window.xrpl.disconnect(); console.log('Wallet disconnected');

changeAccount()

Switches to a different connected account.

javascript
window.xrpl.changeAccount(account: string): Promise<string>

Parameters:

  • account: Address to switch to

Returns:

  • Promise<string>: New active address

Example:

javascript
const newAddress = await window.xrpl.changeAccount('rNewAddress...'); console.log('Switched to:', newAddress);

📝 Signing Methods

signMessage()

Signs an arbitrary message with the user's private key.

javascript
window.xrpl.signMessage(message: string): Promise<string>

Parameters:

  • message: Message to sign

Returns:

  • Promise<string>: Hex-encoded signature

Example:

javascript
const message = 'Authenticate with DropFi'; const signature = await window.xrpl.signMessage(message); console.log('Signature:', signature);

sendTransaction()

Signs and optionally submits a transaction.

javascript
window.xrpl.sendTransaction(tx: object): Promise<object>

Parameters:

  • tx: XRPL transaction object

Returns:

  • Promise<object>: Transaction result

Example:

javascript
const payment = { TransactionType: 'Payment', Account: window.xrpl.selectedAddress, Destination: 'rDestination...', Amount: '1000000', // 1 XRP in drops Fee: '12', // Optional, auto-calculated if omitted Sequence: 12345, // Optional, auto-filled if omitted LastLedgerSequence: 12345678 // Optional }; try { const result = await window.xrpl.sendTransaction(payment); console.log('Transaction hash:', result.hash); console.log('Result code:', result.resultCode); } catch (error) { console.error('Transaction failed:', error); }

🌐 Network Methods

switchNetwork()

Changes the active XRPL network.

javascript
window.xrpl.switchNetwork(network: string): Promise<object>

Parameters:

  • network: Network name ('mainnet', 'testnet', 'devnet')

Returns:

  • Promise<object>: Network details

Example:

javascript
const result = await window.xrpl.switchNetwork('testnet'); console.log('Switched to:', result.network); console.log('Endpoint:', result.endpoint);

initialize()

Gets the current wallet state and connection info.

javascript
window.xrpl.initialize(): Promise<object>

Returns:

javascript
{ selectedAddress: string | null, connectedAccounts: string[], network: string, endpoint: string }

Example:

javascript
const state = await window.xrpl.initialize(); if (state.selectedAddress) { console.log('Already connected:', state.selectedAddress); console.log('Network:', state.network); }

🔧 Utility Methods

isConnected()

Checks if a wallet is currently connected.

javascript
window.xrpl.isConnected(): boolean

Returns:

  • boolean: Connection status

Example:

javascript
if (window.xrpl.isConnected()) { showConnectedUI(); } else { showConnectButton(); }

📊 Transaction Types

Payment Transaction

javascript
const payment = { TransactionType: 'Payment', Account: address, Destination: recipient, Amount: '1000000', // XRP in drops DestinationTag: 12345, // Optional Memos: [{ // Optional Memo: { MemoType: '74657374', // "test" in hex MemoData: '48656C6C6F' // "Hello" in hex } }] };

Trust Line Transaction

javascript
const trustLine = { TransactionType: 'TrustSet', Account: address, LimitAmount: { currency: 'USD', issuer: 'rIssuerAddress...', value: '1000' }, Flags: 262144 // Optional: NoRipple flag };

NFT Mint Transaction

javascript
const nftMint = { TransactionType: 'NFTokenMint', Account: address, URI: '697066733A2F2F...', // IPFS URI in hex Flags: 8, // Transferable TransferFee: 5000, // 5% royalty NFTokenTaxon: 0 };

AMM Deposit Transaction

javascript
const ammDeposit = { TransactionType: 'AMMDeposit', Account: address, Asset: {currency: 'XRP'}, Asset2: { currency: 'USD', issuer: 'rIssuer...' }, Amount: '10000000', // 10 XRP LPTokenOut: '500000' // Expected LP tokens };

⚠️ Error Handling

Common Error Codes

Code Description
4001 User rejected request
4100 Unauthorized - not connected
4200 Unsupported method
4900 Disconnected during operation
5000 Internal wallet error

Error Response Format

javascript
{ code: 4001, message: "User rejected the request", data: {} // Additional error data }

Handling Errors

javascript
try { const result = await window.xrpl.sendTransaction(tx); } catch (error) { switch (error.code) { case 4001: showMessage('Transaction cancelled'); break; case 4100: await connectWallet(); break; default: showError(error.message); } }

💡 Best Practice: Always handle errors gracefully and provide clear feedback to users about what went wrong and how to proceed.