Handling Transactions
Process crypto transaction requests from the widget
When the user initiates a crypto transaction, the SDK calls onTransactionRequested with a TransactionRequest object. Your app should navigate the user to a confirmation screen where they can review and approve the transaction.
The onTransactionRequested Callback
onTransactionRequested Callbackimport { WidgetSDK, TransactionRequest } from '@oobit/react-native-sdk';
function WidgetScreen() {
const navigation = useNavigation();
const handleTransactionRequested = (transaction: TransactionRequest) => {
// Navigate to your transaction confirmation screen
navigation.navigate('TransactionConfirmation', { transaction });
};
return (
<WidgetSDK
accessToken={accessToken}
userWalletAddress={walletAddress}
onTransactionRequested={handleTransactionRequested}
onClose={() => navigation.goBack()}
/>
);
}TransactionRequest Type
The TransactionRequest is a union type that can be either an EVM or Solana transaction. Use the type field to discriminate between chains.
type TransactionRequest = EvmTransactionRequest | SolanaTransactionRequest;Discriminating by Chain
function handleTransaction(transaction: TransactionRequest) {
switch (transaction.type) {
case 'evm':
// Handle EVM transaction (Ethereum, Polygon, BSC, etc.)
handleEvmTransaction(transaction);
break;
case 'solana':
// Handle Solana transaction
handleSolanaTransaction(transaction);
break;
}
}EVM Transactions
EVM transactions are used for Ethereum-compatible blockchains.
interface EvmTransactionRequest {
type: 'evm';
chainId: number;
transaction: EvmTransactionData;
tokenMetadata: TransactionTokenMetadata;
}
interface EvmTransactionData {
to: string;
data: string;
value: string;
}| Field | Type | Description |
|---|---|---|
type | 'evm' | Identifies this as an EVM transaction |
chainId | number | Network identifier (1 = Ethereum, 137 = Polygon, etc.) |
transaction.to | string | Destination address |
transaction.data | string | Encoded transaction data (hex) |
transaction.value | string | Native token value in wei (hex) |
tokenMetadata | TransactionTokenMetadata | Token info for display |
Solana Transactions
Solana transactions are used for the Solana blockchain.
interface SolanaTransactionRequest {
type: 'solana';
transaction: string;
tokenMetadata: TransactionTokenMetadata;
}| Field | Type | Description |
|---|---|---|
type | 'solana' | Identifies this as a Solana transaction |
transaction | string | Serialized transaction (base64 encoded) |
tokenMetadata | TransactionTokenMetadata | Token info for display |
Token Metadata
Both transaction types include tokenMetadata for displaying transaction details to the user.
interface TransactionTokenMetadata {
symbol: string;
amount: string;
decimals: number;
}| Field | Type | Description |
|---|---|---|
symbol | string | Token symbol (e.g., "USDC", "ETH", "SOL") |
amount | string | Human-readable amount to send |
decimals | number | Token decimal places |
See Also
- SDK Component Reference -
onTransactionRequestedcallback details - TypeScript Types - Complete type definitions
Updated about 8 hours ago
