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

import { 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;
}
FieldTypeDescription
type'evm'Identifies this as an EVM transaction
chainIdnumberNetwork identifier (1 = Ethereum, 137 = Polygon, etc.)
transaction.tostringDestination address
transaction.datastringEncoded transaction data (hex)
transaction.valuestringNative token value in wei (hex)
tokenMetadataTransactionTokenMetadataToken info for display

Solana Transactions

Solana transactions are used for the Solana blockchain.

interface SolanaTransactionRequest {
  type: 'solana';
  transaction: string;
  tokenMetadata: TransactionTokenMetadata;
}
FieldTypeDescription
type'solana'Identifies this as a Solana transaction
transactionstringSerialized transaction (base64 encoded)
tokenMetadataTransactionTokenMetadataToken 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;
}
FieldTypeDescription
symbolstringToken symbol (e.g., "USDC", "ETH", "SOL")
amountstringHuman-readable amount to send
decimalsnumberToken decimal places

See Also