From 64aa3212bca4efa786391b48f27f31925ce43f70 Mon Sep 17 00:00:00 2001 From: letier3110 <38981658+letier3110@users.noreply.github.com> Date: Thu, 9 Jun 2022 11:46:26 +0100 Subject: [PATCH] Testnet tokens isolation (#668) * remove bcd * add whitelist only for mainnet * fix logs --- src/lib/better-call-dev/base.ts | 16 ----- src/lib/better-call-dev/index.ts | 2 - src/lib/better-call-dev/tokens.ts | 66 -------------------- src/lib/temple/activity/helpers.ts | 6 -- src/lib/temple/front/sync-tokens.ts | 31 ++++----- src/lib/templewallet-api/whitelist-tokens.ts | 6 +- 6 files changed, 16 insertions(+), 111 deletions(-) delete mode 100644 src/lib/better-call-dev/base.ts delete mode 100644 src/lib/better-call-dev/index.ts delete mode 100644 src/lib/better-call-dev/tokens.ts diff --git a/src/lib/better-call-dev/base.ts b/src/lib/better-call-dev/base.ts deleted file mode 100644 index 74ce4c532..000000000 --- a/src/lib/better-call-dev/base.ts +++ /dev/null @@ -1,16 +0,0 @@ -import makeBuildQueryFn from 'lib/makeBuildQueryFn'; -import { TempleChainId } from 'lib/temple/types'; - -export const BASE_URL = 'https://api.better-call.dev/v1'; -export const BCD_NETWORKS_NAMES = new Map([ - [TempleChainId.Mainnet, 'mainnet'], - [TempleChainId.Ithacanet, 'ithacanet'] -]); - -export const buildQuery = makeBuildQueryFn, any>(BASE_URL); - -/** - * Types - */ - -export type BcdNetwork = 'mainnet' | 'ithacanet'; diff --git a/src/lib/better-call-dev/index.ts b/src/lib/better-call-dev/index.ts deleted file mode 100644 index 9e20f304a..000000000 --- a/src/lib/better-call-dev/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './base'; -export * from './tokens'; diff --git a/src/lib/better-call-dev/tokens.ts b/src/lib/better-call-dev/tokens.ts deleted file mode 100644 index 7ac46da9d..000000000 --- a/src/lib/better-call-dev/tokens.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { buildQuery, BcdNetwork } from './base'; - -/** - * Queries - */ - -export type BcdTokenTransfersParams = { - network: BcdNetwork; - address: string; - last_id?: string; - size?: number; - sort?: 'asc' | 'desc'; - start?: number; - end?: number; - contracts?: string; - token_id?: number; -}; - -export const getTokenTransfers = buildQuery( - 'GET', - params => `/tokens/${params.network}/transfers/${params.address}`, - ['last_id', 'size', 'sort', 'start', 'end', 'contracts', 'token_id'] -); - -/** - * Types - */ - -export interface BcdTokenTransfers { - last_id?: string; - total: number; - transfers: BcdTokenTransfer[]; -} - -export interface BcdTokenTransfer { - alias?: string; - amount: string; - contract: string; - counter: number; - from: string; - from_alias?: string; - hash: string; - indexed_time: number; - initiator: string; - initiator_alias?: string; - level: number; - network: BcdNetwork; - nonce: number; - parent: string; - status: string; - timestamp: string; - to: string; - to_alias?: string; - token: { - contract: string; - decimals?: number; - level?: number; - name?: string; - network: string; - symbol?: string; - token_id: number; - token_info?: any; - volume_24_hours?: number; - }; - token_id?: number; -} diff --git a/src/lib/temple/activity/helpers.ts b/src/lib/temple/activity/helpers.ts index 2db2bbb1b..8544eddea 100644 --- a/src/lib/temple/activity/helpers.ts +++ b/src/lib/temple/activity/helpers.ts @@ -1,7 +1,5 @@ import BigNumber from 'bignumber.js'; -import { BcdTokenTransfer } from 'lib/better-call-dev'; - export function tryParseTokenTransfers( parameters: any, destination: string, @@ -26,10 +24,6 @@ export function toTokenId(contractAddress: string, tokenId: string | number = 0) return `${contractAddress}_${tokenId}`; } -export function getBcdTokenTransferId(tokenTrans: BcdTokenTransfer) { - return `${tokenTrans.hash}_${tokenTrans.nonce}`; -} - export function getTzktTokenTransferId(hash: string, nonce?: number) { const nonceStr = nonce ? `_${nonce}` : ''; return `${hash}${nonceStr}`; diff --git a/src/lib/temple/front/sync-tokens.ts b/src/lib/temple/front/sync-tokens.ts index c750b2beb..692cf85d4 100644 --- a/src/lib/temple/front/sync-tokens.ts +++ b/src/lib/temple/front/sync-tokens.ts @@ -1,10 +1,9 @@ -import { useCallback, useEffect, useMemo, useRef } from 'react'; +import { useCallback, useEffect, useRef } from 'react'; import BigNumber from 'bignumber.js'; import constate from 'constate'; import { trigger } from 'swr'; -import { BCD_NETWORKS_NAMES, BcdNetwork } from 'lib/better-call-dev'; import { useChainId, useAccount, @@ -24,6 +23,8 @@ import { getTokensMetadata } from 'lib/templewallet-api'; import { fetchWhitelistTokenSlugs } from 'lib/templewallet-api/whitelist-tokens'; import { getTokenBalances, getTokenBalancesCount, TzktAccountTokenBalance, TZKT_API_BASE_URLS } from 'lib/tzkt'; +import { TempleChainId } from '../types'; + export const [SyncTokensProvider] = constate(() => { const chainId = useChainId(true)!; const { publicKeyHash: accountPkh } = useAccount(); @@ -32,15 +33,9 @@ export const [SyncTokensProvider] = constate(() => { useTokensMetadata(); const usdPrices = useUSDPrices(); - const networkId = useMemo( - () => (isKnownChainId(chainId) ? BCD_NETWORKS_NAMES.get(chainId) : undefined) ?? null, - [chainId] - ); - const sync = useCallback(async () => { makeSync( accountPkh, - networkId, chainId, allTokensBaseMetadataRef, setTokensBaseMetadata, @@ -50,7 +45,6 @@ export const [SyncTokensProvider] = constate(() => { ); }, [ accountPkh, - networkId, chainId, allTokensBaseMetadataRef, setTokensBaseMetadata, @@ -64,17 +58,17 @@ export const [SyncTokensProvider] = constate(() => { syncRef.current = sync; }, [sync]); - const networkIdRef = useRef(networkId); - if (networkIdRef.current !== networkId) { - networkIdRef.current = networkId; + const networkIdRef = useRef(chainId); + if (networkIdRef.current !== chainId) { + networkIdRef.current = chainId; } useEffect(() => { - if (!networkId) { + if (!chainId) { return; } - const isTheSameNetwork = () => networkId === networkIdRef.current; + const isTheSameNetwork = () => chainId === networkIdRef.current; let timeoutId: any; const syncAndDefer = async () => { @@ -92,7 +86,7 @@ export const [SyncTokensProvider] = constate(() => { syncAndDefer(); return () => clearTimeout(timeoutId); - }, [networkId, accountPkh]); + }, [chainId, accountPkh]); }); async function fetchTzktTokenBalances(chainId: string, address: string) { @@ -130,7 +124,6 @@ async function fetchTzktTokenBalances(chainId: string, address: string) { const makeSync = async ( accountPkh: string, - networkId: BcdNetwork | null, chainId: string, allTokensBaseMetadataRef: any, setTokensBaseMetadata: any, @@ -138,14 +131,14 @@ const makeSync = async ( usdPrices: Record, fetchMetadata: any ) => { - if (!networkId) return; - const mainnet = networkId === 'mainnet'; + if (!chainId) return; + const mainnet = chainId === TempleChainId.Mainnet; const [tzktTokens, displayedFungibleTokens, displayedCollectibleTokens, whitelistTokenSlugs] = await Promise.all([ fetchTzktTokenBalances(chainId, accountPkh), fetchDisplayedFungibleTokens(chainId, accountPkh), fetchCollectibleTokens(chainId, accountPkh, true), - fetchWhitelistTokenSlugs() + fetchWhitelistTokenSlugs(chainId) ]); const tzktTokensMap = new Map( diff --git a/src/lib/templewallet-api/whitelist-tokens.ts b/src/lib/templewallet-api/whitelist-tokens.ts index e72c3c51d..a544a7402 100644 --- a/src/lib/templewallet-api/whitelist-tokens.ts +++ b/src/lib/templewallet-api/whitelist-tokens.ts @@ -1,5 +1,7 @@ import axios from 'axios'; +import { TempleChainId } from 'lib/temple/types'; + interface TokenListItem { contractAddress: 'tez' | string; fa2TokenId?: number; @@ -30,11 +32,11 @@ const WHITELIST_TOKENS_BASE_URL = 'https://raw.githubusercontent.com/madfish-sol const api = axios.create({ baseURL: WHITELIST_TOKENS_BASE_URL }); -export const fetchWhitelistTokenSlugs = () => +export const fetchWhitelistTokenSlugs = (chainId: string) => api .get('tokens/quipuswap.whitelist.json') .then(response => - response.data.tokens + response.data.tokens && chainId === TempleChainId.Mainnet ? response.data.tokens .map(token => token.contractAddress === 'tez' ? 'tez' : `${token.contractAddress}_${token.fa2TokenId ?? 0}`