Using the useCapabilities Hook
â The renaming of âLedger Liveâ to âLedger Walletâ and âwalletâ (in the hardware sense) to âsignerâ is still in progress. This page may contain legacy references that will be updated.
The useCapabilities hook is part of the @ledgerhq/wallet-api-client-react package (current version: 1.4.x). It lets you fetch the list of Wallet API methods your Live App is allowed to call for the connected user, so you can check what you can do with the userâs account before calling a method that might be rejected.
Package versions change frequently. Check the npm page for the latest release before pinning a version in your Live App.
Sample code
Here is an example that shows how to use the useCapabilities hook inside a React component:
Required permission: wallet.capabilities
import { useState } from "react";
import { useCapabilities } from "@ledgerhq/wallet-api-client-react";
function App() {
const { capabilities } = useCapabilities();
return (
<>
<h1>Capabilities</h1>
<button onClick={() => {console.log(capabilities)}}> log Capabilities </button>
</>
);
}
export default App;In this example:
-
We import the
useCapabilitieshook from the@ledgerhq/wallet-api-client-reactpackage. -
We use the hook to get the
capabilitiesarray. -
When the button is clicked, it log the list of capabilities.
Understanding the response
Here is an example of a partial response from the useCapabilities hook:
[
'account.list',
'account.receive',
'account.request',
'bitcoin.getXPub',
'currency.list',
'device.close',
'device.exchange',
'device.transport',
'exchange.complete',
'exchange.start',
'message.sign',
'storage.get',
'storage.set',
'transaction.sign',
'transaction.signAndBroadcast',
'wallet.capabilities',
'wallet.info',
'wallet.userId'
]Each string in the array represents a capability.
They are composed in two part group.method :
group: Specifies in which area does the permission belong.
wallet, currency, account, exchange, bitcoin, device, transaction, storage, message, accountmethod: Specifies the method that you can call with this specific user.
Other fields
const capabilitiesHook = useCapabilities();loading : Loading state of capabilities field
if (capabilitiesHook.loading){
...
};error : State of the request
if (capabilitiesHook.error){
...
};updateData : Function that update the updateData
capabilitiesHook.updateData();updatedAt : Last update of capabilities
Related hooks
useAccounts: list the userâs accounts once youâve confirmedaccount.listis availableuseWalletInfo: check the wallet version and tracking settingsuseUserId: fetch the user ID ifwallet.userIdis available
Related
- Manifest permissions reference : declare the permissions your Live App requests