UNPKG

@ledgerhq/live-common

Version:
304 lines (299 loc) • 9.17 kB
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, }; }