From b4e957d4178b2e221370bc461ab17a3c76d949ce Mon Sep 17 00:00:00 2001 From: unclebill Date: Mon, 11 Jul 2022 11:51:30 +0800 Subject: [PATCH] fix: mf-1440 coin menu selecting doesn't work --- .../src/plugins/Trader/apis/trending/index.ts | 7 ++----- .../Trader/trending/useAvailableCoins.ts | 9 +++++---- .../web3-providers/src/CoinMarketCap/index.ts | 19 +++++++++---------- .../web3-providers/src/coingecko/index.ts | 5 +++-- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/mask/src/plugins/Trader/apis/trending/index.ts b/packages/mask/src/plugins/Trader/apis/trending/index.ts index 668a4243d19a..58ad01bf30b3 100644 --- a/packages/mask/src/plugins/Trader/apis/trending/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trending/index.ts @@ -170,11 +170,8 @@ export async function getAvailableDataProviders(chainId: ChainId, type?: TagType export async function getAvailableCoins(chainId: ChainId, keyword: string, type: TagType, dataProvider: DataProvider) { if (!(await checkAvailabilityOnDataProvider(chainId, keyword, type, dataProvider))) return [] const ids = coinNamespace.get(dataProvider)?.supportedSymbolIdsMap - return ( - ids - ?.get(resolveAlias(chainId, keyword, dataProvider).toLowerCase()) - ?.filter((x) => !isBlockedAddress(chainId, x.address || x.contract_address || '')) ?? [] - ) + const alias = resolveAlias(chainId, keyword, dataProvider).toLowerCase() + return ids?.get(alias)?.filter((x) => !isBlockedAddress(chainId, x.address || x.contract_address || '')) ?? [] } // #endregion diff --git a/packages/mask/src/plugins/Trader/trending/useAvailableCoins.ts b/packages/mask/src/plugins/Trader/trending/useAvailableCoins.ts index 21aca17966e0..f5e050678ab8 100644 --- a/packages/mask/src/plugins/Trader/trending/useAvailableCoins.ts +++ b/packages/mask/src/plugins/Trader/trending/useAvailableCoins.ts @@ -1,16 +1,17 @@ +import { useChainId } from '@masknet/plugin-infra/web3' +import type { DataProvider } from '@masknet/public-api' +import { EMPTY_LIST } from '@masknet/shared-base' +import { NetworkPluginID } from '@masknet/web3-shared-base' import { useAsync } from 'react-use' import type { AsyncState } from 'react-use/lib/useAsyncFn' import { PluginTraderRPC } from '../messages' import type { Coin, TagType } from '../types' -import type { DataProvider } from '@masknet/public-api' -import { useChainId } from '@masknet/plugin-infra/web3' -import { NetworkPluginID } from '@masknet/web3-shared-base' export function useAvailableCoins(type: TagType, keyword: string, dataProvider: DataProvider): AsyncState { const chainId = useChainId(NetworkPluginID.PLUGIN_EVM) return useAsync(async () => { - if (!keyword) return [] + if (!keyword) return EMPTY_LIST return PluginTraderRPC.getAvailableCoins(chainId, keyword, type, dataProvider) }, [dataProvider, type, keyword, chainId]) } diff --git a/packages/web3-providers/src/CoinMarketCap/index.ts b/packages/web3-providers/src/CoinMarketCap/index.ts index a28232ea527f..6913843bbb6f 100644 --- a/packages/web3-providers/src/CoinMarketCap/index.ts +++ b/packages/web3-providers/src/CoinMarketCap/index.ts @@ -222,17 +222,16 @@ export class CoinMarketCapAPI implements TrendingAPI.Provider { `${CMC_V1_BASE_URL}/cryptocurrency/map?aux=status,platform&listing_status=active,untracked&sort=cmc_rank`, { cache: 'force-cache' }, ) - return (response.data ?? []) + if (!response.data) return [] + return response.data .filter((x) => x.status === 'active') - .map( - (x) => - ({ - id: String(x.id), - name: x.name, - symbol: x.symbol, - contract_address: x.platform?.name === 'Ethereum' ? x.platform.token_address : undefined, - } as TrendingAPI.Coin), - ) + .map((x) => ({ + id: String(x.id), + name: x.name, + symbol: x.symbol, + type: TrendingCoinType.Fungible, + contract_address: x.platform?.name === 'Ethereum' ? x.platform.token_address : undefined, + })) } async getHistorical( id: string, diff --git a/packages/web3-providers/src/coingecko/index.ts b/packages/web3-providers/src/coingecko/index.ts index 50b10c0c47f6..e089dc47bb84 100644 --- a/packages/web3-providers/src/coingecko/index.ts +++ b/packages/web3-providers/src/coingecko/index.ts @@ -141,8 +141,9 @@ export class CoinGeckoAPI implements PriceAPI.Provider, TrendingAPI.Provider { - return getAllCoins() + async getCoins(): Promise { + const coins = await getAllCoins() + return coins.map((coin) => ({ ...coin, type: TrendingCoinType.Fungible })) } async getCurrencies(): Promise {