@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
304 lines (299 loc) • 9.17 kB
text/typescript
import { useMemo } from "react";
import { CryptoCurrencyId } from "@ledgerhq/types-cryptoassets";
import { Feature } from "@ledgerhq/types-live";
import { useFeature } from "../../featureFlags";
import useEnv from "../../hooks/useEnv";
export function useCurrenciesUnderFeatureFlag() {
const mock = useEnv("MOCK");
const adi = useFeature("currencyAdi");
const aleo = useFeature("currencyAleo");
const aleoTestnet = useFeature("currencyAleoTestnet");
const aptos = useFeature("currencyAptos");
const aptosTestnet = useFeature("currencyAptosTestnet");
const axelar = useFeature("currencyAxelar");
const stargaze = useFeature("currencyStargaze");
const secretNetwork = useFeature("currencySecretNetwork");
const umee = useFeature("currencyUmee");
const desmos = useFeature("currencyDesmos");
const dydx = useFeature("currencyDydx");
const quicksilver = useFeature("currencyQuicksilver");
const persistence = useFeature("currencyPersistence");
const avaxCChain = useFeature("currencyAvalancheCChain");
const avaxCChainFuji = useFeature("currencyAvalancheCChainFuji");
const stacks = useFeature("currencyStacks");
const optimism = useFeature("currencyOptimism");
const optimismSepolia = useFeature("currencyOptimismSepolia");
const arbitrum = useFeature("currencyArbitrum");
const arbitrumSepolia = useFeature("currencyArbitrumSepolia");
const rsk = useFeature("currencyRsk");
const bittorrent = useFeature("currencyBittorrent");
const energyWeb = useFeature("currencyEnergyWeb");
const astar = useFeature("currencyAstar");
const metis = useFeature("currencyMetis");
const mantle = useFeature("currencyMantle");
const mantleSepolia = useFeature("currencyMantleSepolia");
const boba = useFeature("currencyBoba");
const moonriver = useFeature("currencyMoonriver");
const velasEvm = useFeature("currencyVelasEvm");
const syscoin = useFeature("currencySyscoin");
const internetComputer = useFeature("currencyInternetComputer");
const telosEvm = useFeature("currencyTelosEvm");
const coreum = useFeature("currencyCoreum");
const polygonAmoy = useFeature("currencyPolygonAmoy");
const polygonZkEvm = useFeature("currencyPolygonZkEvm");
const polygonZkEvmTestnet = useFeature("currencyPolygonZkEvmTestnet");
const base = useFeature("currencyBase");
const baseSepolia = useFeature("currencyBaseSepolia");
const bitlayer = useFeature("currencyBitlayer");
const klaytn = useFeature("currencyKlaytn");
const klaytnBaobab = useFeature("currencyKlaytnBaobab");
const injective = useFeature("currencyInjective");
const vechain = useFeature("currencyVechain");
const casper = useFeature("currencyCasper");
const neonEvm = useFeature("currencyNeonEvm");
const lukso = useFeature("currencyLukso");
const linea = useFeature("currencyLinea");
const lineaSepolia = useFeature("currencyLineaSepolia");
const blast = useFeature("currencyBlast");
const blastSepolia = useFeature("currencyBlastSepolia");
const scroll = useFeature("currencyScroll");
const scrollSepolia = useFeature("currencyScrollSepolia");
const shape = useFeature("currencyShape");
const story = useFeature("currencyStory");
const icon = useFeature("currencyIcon");
const ton = useFeature("currencyTon");
const etherlink = useFeature("currencyEtherlink");
const zksync = useFeature("currencyZkSync");
const zksyncSepolia = useFeature("currencyZkSyncSepolia");
const mantra = useFeature("currencyMantra");
const xion = useFeature("currencyXion");
const zenrock = useFeature("currencyZenrock");
const sonic = useFeature("currencySonic");
const sonicBlaze = useFeature("currencySonicBlaze");
const sui = useFeature("currencySui");
const suiTestnet = useFeature("currencySuiTestnet");
const mina = useFeature("currencyMina");
const babylon = useFeature("currencyBabylon");
const seiNetworkEvm = useFeature("currencySeiNetworkEvm");
const berachain = useFeature("currencyBerachain");
const hyperevm = useFeature("currencyHyperevm");
const canton = useFeature("currencyCantonNetwork");
const cantonDevnet = useFeature("currencyCantonNetworkDevnet");
const cantonTestnet = useFeature("currencyCantonNetworkTestnet");
const kaspa = useFeature("currencyKaspa");
const core = useFeature("currencyCore");
const ethereumHoodi = useFeature("currencyEthereumHoodi");
const westend = useFeature("currencyWestend");
const assetHubWestend = useFeature("currencyAssetHubWestend");
const assetHubPolkadot = useFeature("currencyAssetHubPolkadot");
const polkadot = useFeature("currencyPolkadot");
const monad = useFeature("currencyMonad");
const monadTestnet = useFeature("currencyMonadTestnet");
const somnia = useFeature("currencySomnia");
const zeroGravity = useFeature("currencyZeroGravity");
const concordium = useFeature("currencyConcordium");
const concordiumTestnet = useFeature("currencyConcordiumTestnet");
const unichain = useFeature("currencyUnichain");
const unichainSepolia = useFeature("currencyUnichainSepolia");
const featureFlaggedCurrencies = useMemo(
(): Partial<Record<CryptoCurrencyId, Feature<unknown> | null>> => ({
adi,
aleo,
aleo_testnet: aleoTestnet,
aptos,
aptos_testnet: aptosTestnet,
axelar,
stargaze,
secret_network: secretNetwork,
umee,
desmos,
dydx,
quicksilver,
persistence,
avalanche_c_chain: avaxCChain,
avalanche_c_chain_fuji: avaxCChainFuji,
stacks,
optimism,
optimism_sepolia: optimismSepolia,
arbitrum,
arbitrum_sepolia: arbitrumSepolia,
rsk,
bittorrent,
energy_web: energyWeb,
astar,
metis,
mantle,
mantle_sepolia: mantleSepolia,
boba,
moonriver,
velas_evm: velasEvm,
syscoin,
internet_computer: internetComputer,
telos_evm: telosEvm,
sei_evm: seiNetworkEvm,
berachain: berachain,
hyperevm: hyperevm,
coreum,
polygon_amoy: polygonAmoy,
polygon_zk_evm: polygonZkEvm,
polygon_zk_evm_testnet: polygonZkEvmTestnet,
base,
base_sepolia: baseSepolia,
bitlayer,
klaytn,
klaytn_baobab: klaytnBaobab,
injective,
vechain,
casper,
neon_evm: neonEvm,
lukso,
linea,
ton,
linea_sepolia: lineaSepolia,
blast,
blast_sepolia: blastSepolia,
scroll,
scroll_sepolia: scrollSepolia,
shape,
story,
icon,
etherlink,
zksync,
zksync_sepolia: zksyncSepolia,
mantra,
xion,
zenrock,
sonic,
sonic_blaze: sonicBlaze,
sui,
sui_testnet: suiTestnet,
mina,
babylon,
canton_network: canton,
canton_network_devnet: cantonDevnet,
canton_network_testnet: cantonTestnet,
kaspa,
core,
ethereum_hoodi: ethereumHoodi,
westend,
assethub_westend: assetHubWestend,
assethub_polkadot: assetHubPolkadot,
polkadot,
monad,
monad_testnet: monadTestnet,
somnia,
zero_gravity: zeroGravity,
concordium,
concordium_testnet: concordiumTestnet,
unichain,
unichain_sepolia: unichainSepolia,
}),
[
adi,
aleo,
aleoTestnet,
aptos,
aptosTestnet,
axelar,
stargaze,
secretNetwork,
umee,
desmos,
dydx,
quicksilver,
persistence,
avaxCChain,
avaxCChainFuji,
stacks,
optimism,
optimismSepolia,
arbitrum,
arbitrumSepolia,
rsk,
bittorrent,
energyWeb,
astar,
metis,
mantle,
mantleSepolia,
boba,
moonriver,
velasEvm,
syscoin,
internetComputer,
telosEvm,
seiNetworkEvm,
berachain,
hyperevm,
coreum,
polygonAmoy,
polygonZkEvm,
polygonZkEvmTestnet,
base,
baseSepolia,
bitlayer,
klaytn,
klaytnBaobab,
injective,
vechain,
casper,
neonEvm,
lukso,
linea,
ton,
lineaSepolia,
blast,
blastSepolia,
scroll,
scrollSepolia,
shape,
story,
icon,
etherlink,
zksync,
zksyncSepolia,
mantra,
xion,
zenrock,
sonic,
sonicBlaze,
sui,
suiTestnet,
mina,
babylon,
canton,
cantonDevnet,
cantonTestnet,
kaspa,
core,
ethereumHoodi,
westend,
assetHubWestend,
assetHubPolkadot,
polkadot,
monad,
monadTestnet,
somnia,
zeroGravity,
concordium,
concordiumTestnet,
unichain,
unichainSepolia,
],
);
const deactivatedCurrencyIds = useMemo(
() =>
new Set(
mock
? [] // mock mode: all currencies are available for playwrigth tests
: Object.entries(featureFlaggedCurrencies)
.filter(([, feature]) => !feature?.enabled)
.map(([id]) => id),
),
[mock, featureFlaggedCurrencies],
);
return {
featureFlaggedCurrencies,
deactivatedCurrencyIds,
};
}