@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
47 lines (38 loc) • 1.2 kB
text/typescript
import { useCallback } from "react";
import { assetsDataApi } from "../state-manager/api";
import useEnv from "../../hooks/useEnv";
import { selectCurrency } from "../utils/currencySelection";
interface Currency {
id?: string;
ledgerIds?: string[];
}
interface LazyLedgerCurrencyOptions {
product: "lld" | "llm";
version: string;
}
export function useLazyLedgerCurrency(
options: LazyLedgerCurrencyOptions,
currency?: Currency | null,
) {
const devMode = useEnv("MANAGER_DEV_MODE");
const [triggerGetAssetData] = assetsDataApi.useLazyGetAssetDataQuery();
const getLedgerCurrency = useCallback(async () => {
if (!currency?.ledgerIds || currency.ledgerIds.length === 0) return undefined;
try {
const result = await triggerGetAssetData(
{
currencyIds: currency.ledgerIds,
product: options.product,
version: options.version,
isStaging: false,
includeTestNetworks: devMode,
},
true, // prefer cached data
).unwrap();
return selectCurrency(result);
} catch {
return undefined;
}
}, [currency, devMode, options, triggerGetAssetData]);
return { getLedgerCurrency };
}