Internal Wallet Services
Last updated
Last updated
Tomo provides a few internal wallet services to wallet users so developers can selectively embed these services into their applications with minimum effort. Currently, these features are only available for users using social login, and users can only operate through a pop-up Tomo UI component. We will add support for extension wallet users and provide more configurable ways to invoke these services.
Tomo supports the following basic service types:
enum WebWalletInvokeType {
SWAP = "swap", // Swap between selected token pairs
ONRAMP = "onramp", // Purchase Token by card
SEND = "send", // Send token to a given address
RECEIVE = "receive", // Display QR code and address for given token
}
import "@tomo-inc/tomo-web-sdk/style.css";
import { TomoContextProvider, useTomo,WebWalletInvokeType } from "@tomo-inc/tomo-web-sdk";
// Get tomo SDK instance
const { openConnectModal, tomoSDK } = useTomo();
const handleAction = async (type: WebWalletInvokeType) => {
tomoSDK?.handleWebWalletInvoke(type);
};
// your app logic
...
<button onClick={() => handleAction(WebWalletInvokeType.SWAP)}>
Swap
</button>
import "@tomo-inc/tomo-web-sdk/style.css";
import { TomoContextProvider, useTomo,WebWalletInvokeType } from "@tomo-inc/tomo-web-sdk";
const OrderComponent = () => {
const { openConnectModal, tomoSDK } = useTomo();
const handleAction = async (type: WebWalletInvokeType) => {
tomoSDK?.handleWebWalletInvoke(type);
};
return (
<div style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}>
<h1>WebSDK Demo</h1>
<button onClick={() => openConnectModal()}>Connect Wallet</button>
<button onClick={() => handleAction(WebWalletInvokeType.ONRAMP)}>Onramp</button>
<button onClick={() => handleAction(WebWalletInvokeType.SWAP)}>Swap</button>
<button onClick={() => handleAction(WebWalletInvokeType.SEND)}>Send</button>
<button onClick={() => handleAction(WebWalletInvokeType.RECEIVE)}>Receive</button>
</div>
);
};
export default function WebSDKPage() {
return (
<TomoContextProvider
theme="light"
chainTypes={["sui"]}
clientId="YOUR_CLIENT_ID"
>
<div style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}>
{/* Add your page content here */}
<OrderComponent />
</div>
</TomoContextProvider>
);
}