Skip to Content
We're improving our docs. Share your experience and help shape what comes next.
DocumentationLedger WalletDiscoverIntegration walkthroughsWallet APIServerUsage examplesWith Constructor

Example usage of the walletAPIServer

Here’s how you can instantiate a new WalletAPIServer using its constructor

instantiation

const transport: Transport = { onMessage: undefined, send: (message: string) => { if (wapiView) { wapiView.webContents.postMessage("message", message); } }, }; const config = { appId: "fake-manifest-id", // should be the real manifest id, used in the storage handler code wallet: { name: "browserview-wallet", version: "0.1.0", }, tracking: false, userId: "fake", }; const wapiServer = new WalletAPIServer(transport, config);

two required arguments are passed, transport and config.

setup accounts, currencies and permissions via setters

wapiServer.setAccounts(accounts); wapiServer.setCurrencies(currencies); wapiServer.setPermissions({ currencyIds: ["**"], methodIds: ["account.list", "account.receive", "account.request"], });

Call setters to set the accounts, currencies, and permissions

set wallet handlers

wapiServer.setHandler("account.request", async ({ accounts$, currencies$ }) => { return new Promise((resolve, reject) => { uiAccountRequest({ accounts$, currencies: currencies.map({id} => id), onSuccess: (account: AccountLike, parentAccount: Account | undefined) => { resolve(accountToWalletAPIAccount(account, parentAccount)); }, onCancel: () => { reject(new Error("Canceled by user")); }, }); }); })

Set a walletHandler to handle actions that would request an account from the wallet.

wire up transport

import { ipcMain } from "electron"; ipcMain.on("walletAPI:postMessage", (_, data) => { transport.onMessage?.(data); });

Set up the transport’s onMessage value, which will allow APP -> SERVER communication.

More on transport here.

Last updated on
Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Stax, Ledger Flex, Ledger Nano, Ledger Nano S, Ledger OS, Ledger Wallet, [LEDGER] (logo), [L] (logo) are trademarks owned by Ledger SAS.