From 0dee1161a954317946b42bd1c663d266b1cd2982 Mon Sep 17 00:00:00 2001 From: FranckStone Date: Sun, 18 Sep 2022 18:25:53 +0800 Subject: [PATCH 01/15] init --- src/assets/images/etf-logo.png | Bin 0 -> 42108 bytes .../AccountDetails/TransactionSummary.tsx | 8 +- src/components/AccountDetailsV2/LogoView.tsx | 4 +- .../AccountDetailsV2/TransactionBody.tsx | 4 +- src/components/Header/NetworkSelector.tsx | 10 +- src/components/Header/Polling.tsx | 2 +- src/components/NavBar/SuggestionRow.tsx | 2 +- src/constants/chainInfo.ts | 4 +- src/constants/lists.ts | 36 +-- .../tokenLists/broken.tokenlist.json | 2 +- .../tokenLists/unsupported.tokenlist.json | 286 +++++++++--------- src/constants/tokens.ts | 10 +- src/locales/pt-BR.po | 4 +- 13 files changed, 186 insertions(+), 186 deletions(-) create mode 100644 src/assets/images/etf-logo.png diff --git a/src/assets/images/etf-logo.png b/src/assets/images/etf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..18960830aa19ffea2622f295b445175c8270e89d GIT binary patch literal 42108 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' '} - to {native?.symbol ?? 'ETH'} + to {native?.symbol ?? 'ETF'} ) } else { @@ -165,11 +165,11 @@ function WrapSummary({ info: { chainId, currencyAmountRaw, unwrapped } }: { info Wrap{' '} {' '} - to {native?.wrapped?.symbol ?? 'WETH'} + to {native?.wrapped?.symbol ?? 'WETF'} ) } diff --git a/src/components/AccountDetailsV2/LogoView.tsx b/src/components/AccountDetailsV2/LogoView.tsx index 8fafd06af18..57b4b1b2e51 100644 --- a/src/components/AccountDetailsV2/LogoView.tsx +++ b/src/components/AccountDetailsV2/LogoView.tsx @@ -48,8 +48,8 @@ const getCurrency = ({ info, chainId }: { info: TransactionInfo; chainId: number case TransactionType.WRAP: const { unwrapped } = info const native = info.chainId ? nativeOnChain(info.chainId) : undefined - const base = 'ETH' - const wrappedCurrency = native?.wrapped.address ?? 'WETH' + const base = 'ETF' + const wrappedCurrency = native?.wrapped.address ?? 'WETF' return { currencyId0: unwrapped ? wrappedCurrency : base, currencyId1: unwrapped ? base : wrappedCurrency } case TransactionType.COLLECT_FEES: const { currencyId0, currencyId1 } = info diff --git a/src/components/AccountDetailsV2/TransactionBody.tsx b/src/components/AccountDetailsV2/TransactionBody.tsx index 809687d59d3..bdffc0a4dc5 100644 --- a/src/components/AccountDetailsV2/TransactionBody.tsx +++ b/src/components/AccountDetailsV2/TransactionBody.tsx @@ -280,8 +280,8 @@ const WrapSummary = ({ transactionState: TransactionState }) => { const native = chainId ? nativeOnChain(chainId) : undefined - const from = unwrapped ? native?.wrapped.symbol ?? 'WETH' : native?.symbol ?? 'ETH' - const to = unwrapped ? native?.symbol ?? 'ETH' : native?.wrapped.symbol ?? 'WETH' + const from = unwrapped ? native?.wrapped.symbol ?? 'WETF' : native?.symbol ?? 'ETF' + const to = unwrapped ? native?.symbol ?? 'ETF' : native?.wrapped.symbol ?? 'WETF' const amount = formatAmount(currencyAmountRaw, 18, 6) const actionProps = unwrapped diff --git a/src/components/Header/NetworkSelector.tsx b/src/components/Header/NetworkSelector.tsx index aa0108a9ad2..bd20acc9c33 100644 --- a/src/components/Header/NetworkSelector.tsx +++ b/src/components/Header/NetworkSelector.tsx @@ -205,7 +205,7 @@ const ExplorerLabel = ({ chainId }: { chainId: SupportedChainId }) => { case SupportedChainId.CELO_ALFAJORES: return Blockscout default: - return Etherscan + return Blockscout } } @@ -273,10 +273,10 @@ function Row({ const NETWORK_SELECTOR_CHAINS = [ SupportedChainId.MAINNET, - SupportedChainId.POLYGON, - SupportedChainId.OPTIMISM, - SupportedChainId.ARBITRUM_ONE, - SupportedChainId.CELO, + // SupportedChainId.POLYGON, + // SupportedChainId.OPTIMISM, + // SupportedChainId.ARBITRUM_ONE, + // SupportedChainId.CELO, ] export default function NetworkSelector() { diff --git a/src/components/Header/Polling.tsx b/src/components/Header/Polling.tsx index 30041d89120..dfd6e86e2e7 100644 --- a/src/components/Header/Polling.tsx +++ b/src/components/Header/Polling.tsx @@ -147,7 +147,7 @@ export default function Polling() { text={ The current fast gas amount for sending a transaction on L1. Gas fees are paid in - Ethereum's native currency Ether (ETH) and denominated in GWEI. + Ethereum's native currency Ether (ETF) and denominated in GWEI. } > diff --git a/src/components/NavBar/SuggestionRow.tsx b/src/components/NavBar/SuggestionRow.tsx index d92acb7e7ee..db32e80e4c7 100644 --- a/src/components/NavBar/SuggestionRow.tsx +++ b/src/components/NavBar/SuggestionRow.tsx @@ -81,7 +81,7 @@ export const CollectionRow = ({ collection, isHovered, setHoveredIndex, toggleOp {collection.floorPrice ? ( - {ethNumberStandardFormatter(collection.floorPrice)} ETH + {ethNumberStandardFormatter(collection.floorPrice)} ETF Floor diff --git a/src/constants/chainInfo.ts b/src/constants/chainInfo.ts index a6d26472418..5913a0f61af 100644 --- a/src/constants/chainInfo.ts +++ b/src/constants/chainInfo.ts @@ -1,5 +1,5 @@ import celoCircleLogoUrl from 'assets/images/celoCircle.png' -import ethereumLogoUrl from 'assets/images/ethereum-logo.png' +import ethereumLogoUrl from 'assets/images/etf-logo.png' import optimismCircleLogoUrl from 'assets/images/optimismCircle.png' import polygonCircleLogoUrl from 'assets/images/polygonCircle.png' import { default as arbitrumCircleLogoUrl, default as arbitrumLogoUrl } from 'assets/svg/arbitrum_logo.svg' @@ -61,7 +61,7 @@ const CHAIN_INFO: ChainInfoMap = { infoLink: 'https://info.uniswap.org/#/', label: 'EthereumFair', logoUrl: ethereumLogoUrl, - nativeCurrency: { name: 'ETF', symbol: 'ETF', decimals: 18 }, + nativeCurrency: { name: 'Ethereum Fair', symbol: 'ETF', decimals: 18 }, color: colorsDark.chain_1, }, [SupportedChainId.RINKEBY]: { diff --git a/src/constants/lists.ts b/src/constants/lists.ts index d0fbdfc1f8b..31e01c11948 100644 --- a/src/constants/lists.ts +++ b/src/constants/lists.ts @@ -15,31 +15,31 @@ export const OPTIMISM_LIST = 'https://static.optimism.io/optimism.tokenlist.json export const ARBITRUM_LIST = 'https://bridge.arbitrum.io/token-list-42161.json' export const CELO_LIST = 'https://celo-org.github.io/celo-token-list/celo.tokenlist.json' -export const UNSUPPORTED_LIST_URLS: string[] = [BA_LIST] +export const UNSUPPORTED_LIST_URLS: string[] = [] // this is the default list of lists that are exposed to users // lower index == higher priority for token import const DEFAULT_LIST_OF_LISTS_TO_DISPLAY: string[] = [ - UNI_LIST, - UNI_EXTENDED_LIST, - COMPOUND_LIST, - AAVE_LIST, - CMC_ALL_LIST, - COINGECKO_LIST, - KLEROS_LIST, - GEMINI_LIST, - WRAPPED_LIST, - SET_LIST, - ROLL_LIST, - ARBITRUM_LIST, - OPTIMISM_LIST, - CELO_LIST, + // UNI_LIST, + // UNI_EXTENDED_LIST, + // COMPOUND_LIST, + // AAVE_LIST, + // CMC_ALL_LIST, + // COINGECKO_LIST, + // KLEROS_LIST, + // GEMINI_LIST, + // WRAPPED_LIST, + // SET_LIST, + // ROLL_LIST, + // ARBITRUM_LIST, + // OPTIMISM_LIST, + // CELO_LIST, ] export const DEFAULT_LIST_OF_LISTS: string[] = [ - ...DEFAULT_LIST_OF_LISTS_TO_DISPLAY, - ...UNSUPPORTED_LIST_URLS, // need to load dynamic unsupported tokens as well + // ...DEFAULT_LIST_OF_LISTS_TO_DISPLAY, + // ...UNSUPPORTED_LIST_URLS, // need to load dynamic unsupported tokens as well ] // default lists to be 'active' aka searched across -export const DEFAULT_ACTIVE_LIST_URLS: string[] = [UNI_LIST, GEMINI_LIST] +export const DEFAULT_ACTIVE_LIST_URLS: string[] = [] diff --git a/src/constants/tokenLists/broken.tokenlist.json b/src/constants/tokenLists/broken.tokenlist.json index 7c23a05ecb7..10f128fb9cd 100644 --- a/src/constants/tokenLists/broken.tokenlist.json +++ b/src/constants/tokenLists/broken.tokenlist.json @@ -15,7 +15,7 @@ "address": "0x4bf5dc91E2555449293D7824028Eb8Fe5879B689", "symbol": "UniH", "decimals": 18, - "chainId": 1, + "chainId": 513100, "logoURI": "" } ] diff --git a/src/constants/tokenLists/unsupported.tokenlist.json b/src/constants/tokenLists/unsupported.tokenlist.json index 7a4da91bb04..c742ead9b58 100644 --- a/src/constants/tokenLists/unsupported.tokenlist.json +++ b/src/constants/tokenLists/unsupported.tokenlist.json @@ -15,7 +15,7 @@ "address": "0x4922a015c4407F87432B179bb209e125432E4a2A", "symbol": "XAUt", "decimals": 6, - "chainId": 1, + "chainId": 513100, "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4922a015c4407F87432B179bb209e125432E4a2A/logo.png" }, { @@ -23,7 +23,7 @@ "address": "0x93B2FfF814FCaEFFB01406e80B4Ecd89Ca6A021b", "symbol": "GRUMPY", "decimals": 9, - "chainId": 1, + "chainId": 513100, "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4922a015c4407F87432B179bb209e125432E4a2A/logo.png" }, { @@ -31,123 +31,123 @@ "address": "0xfA5e27893aee4805283D86e4283Da64F8c72dd56", "symbol": "apeUSD-UMA-DEC21", "decimals": 18, - "chainId": 1, + "chainId": 513100, "logoURI": "" }, { - "chainId": 1, + "chainId": 513100, "address": "0xc6b11850241c5127eab73af4b6c68bc267cbbff4", "name": "oWETHp Put 360 DEC2520", "symbol": "oWETH-360P-12/25/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oYFIp Put 25000 OCT0220", "address": "0x452b421be5b30f0c6ad8c3f03c06bdaab4f5c56c", "symbol": "oYFI-25000P-10/02/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oWETHp Put 360 OCT3020", "address": "0x0578779e746d7186253a36cf651ea786acfcf087", "symbol": "oWETH-360P-10/30/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "ETHc Call 500 OCT3020", "address": "0xf9aba2e43fb19184408ea3b572a0fd672946f87b", "symbol": "oETH-500C-10/30/20", "decimals": 6 }, { - "chainId": 1, + "chainId": 513100, "name": "oBALp Put 22 OCT0220", "address": "0xdb0991dfc7e828b5a2837dc82d68e16490562c8d", "symbol": "oBAL-22P-10/02/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oCOMPp Put 150 SEP2520", "address": "0xe951ebe6b4420ab3f4844cf36dedd263d095b416", "symbol": "oCOMP-150P-09/25/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oCRVp Put 3 SEP252020", "address": "0x9215bd49b59748419eac6bad9dbe247df06ebdb9", "symbol": "oCRV-3P-09/25/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oETHp Put 180 SEP2520", "address": "0xE3A2c34Fa2F59ffa95C4ACd1E5663633d45Bc3AD", "symbol": "oETH-180P-09/25/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oETHc Call 400 SEP2520", "address": "0x05977EBC26825C0CD6097E0Ad7204721516711Eb", "symbol": "oETH-400C-09/25/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oWETHp Put 380 SEP1820", "address": "0x31f88266301b08631f9f0e33fd5c43c2a5d1e5b2", "symbol": "oWETH-380P-09/18/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oYFIp Put 8500 SEP1820", "address": "0xd1cec2f67fdc4c60e0963515dfc3343f31e32e47", "symbol": "oYFI-8500P-09/18/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oWETHp Put 370 SEP1120", "address": "0x15844029b2c2bf24506e9937739a9a912f1e4354", "symbol": "oWETH-370P-09/11/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oWETHp Put 400 SEP0420", "address": "0x5562c33c383f6386be4f6dcdbd35a3a99bbcfde6", "symbol": "oWETH-400P-09/04/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "oETHp Put 200 AUG2820", "address": "0x3CBFC1397deF0602c2d211c70A1c0c38CEDB5448", "symbol": "oWETH-400P-09/04/20", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "name": "Opyn cDai Insurance", "symbol": "ocDai", "address": "0x98cc3bd6af1880fcfda17ac477b2f612980e5e33", "decimals": 8 }, { - "chainId": 1, + "chainId": 513100, "name": "Opyn cUSDC Insurance", "symbol": "ocUSDC", "address": "0x8ED9f862363fFdFD3a07546e618214b6D59F03d4", "decimals": 8 }, { - "chainId": 1, + "chainId": 513100, "address": "0x176C674Ee533C6139B0dc8b458D72A93dCB3e705", "symbol": "iAAVE", "name": "Synth Inverse Aave", @@ -156,7 +156,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x8A8079c7149B8A1611e5C5d978DCA3bE16545F83", "symbol": "iADA", "name": "Synth Inverse Cardano", @@ -165,7 +165,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xAFD870F32CE54EfdBF677466B612bf8ad164454B", "symbol": "iBNB", "name": "Synth Inverse Binance Coin", @@ -174,7 +174,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xD6014EA05BDe904448B743833dDF07c3C7837481", "symbol": "iBTC", "name": "Synth Inverse Bitcoin", @@ -183,7 +183,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x336213e1DDFC69f4701Fc3F86F4ef4A160c1159d", "symbol": "iCEX", "name": "Synth Inverse Centralised Exchange Index", @@ -192,7 +192,7 @@ "tags": ["index", "inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x6345728B1ccE16E6f8C509950b5c84FFF88530d9", "symbol": "iCOMP", "name": "Synth Inverse Compound", @@ -201,7 +201,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xCB98f42221b2C251A4E74A1609722eE09f0cc08E", "symbol": "iDASH", "name": "Synth Inverse Dash", @@ -210,7 +210,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x14d10003807AC60d07BB0ba82cAeaC8d2087c157", "symbol": "iDEFI", "name": "Synth Inverse DeFi Index", @@ -219,7 +219,7 @@ "tags": ["index", "inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x46a97629C9C1F58De6EC18C7F536e7E6d6A6ecDe", "symbol": "iDOT", "name": "Synth Inverse Polkadot", @@ -228,7 +228,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xF4EebDD0704021eF2a6Bbe993fdf93030Cd784b4", "symbol": "iEOS", "name": "Synth Inverse EOS", @@ -237,7 +237,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xd50c1746D835d2770dDA3703B69187bFfeB14126", "symbol": "iETC", "name": "Synth Inverse Ethereum Classic", @@ -246,7 +246,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xA9859874e1743A32409f75bB11549892138BBA1E", "symbol": "iETH", "name": "Synth Inverse Ether", @@ -255,7 +255,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x2d7aC061fc3db53c39fe1607fB8cec1B2C162B01", "symbol": "iLINK", "name": "Synth Inverse Chainlink", @@ -264,7 +264,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x79da1431150C9b82D2E5dfc1C68B33216846851e", "symbol": "iLTC", "name": "Synth Inverse Litecoin", @@ -273,7 +273,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xA5a5DF41883Cdc00c4cCC6E8097130535399d9a3", "symbol": "iOIL", "name": "Synth Inverse Perpetual Oil Futures", @@ -282,7 +282,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x0fEd38108bdb8e62ef7b5680E8E0726E2F29e0De", "symbol": "iREN", "name": "Synth Inverse Ren", @@ -291,7 +291,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xC5807183a9661A533CB08CbC297594a0B864dc12", "symbol": "iTRX", "name": "Synth Inverse TRON", @@ -300,7 +300,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x36A00FF9072570eF4B9292117850B8FE08d96cce", "symbol": "iUNI", "name": "Synth Inverse Uniswap", @@ -309,7 +309,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x4AdF728E2Df4945082cDD6053869f51278fae196", "symbol": "iXMR", "name": "Synth Inverse Monero", @@ -318,7 +318,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x27269b3e45A4D3E79A3D6BFeE0C8fB13d0D711A6", "symbol": "iXRP", "name": "Synth Inverse Ripple", @@ -327,7 +327,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x8deef89058090ac5655A99EEB451a4f9183D1678", "symbol": "iXTZ", "name": "Synth Inverse Tezos", @@ -336,7 +336,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x592244301CeA952d6daB2fdC1fE6bd9E53917306", "symbol": "iYFI", "name": "Synth Inverse yearn.finance", @@ -345,7 +345,7 @@ "tags": ["inverse", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xcD39b5434a0A92cf47D1F567a7dF84bE356814F0", "symbol": "s1INCH", "name": "Synth 1inch", @@ -354,7 +354,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x7537AAe01f3B218DAE75e10d952473823F961B87", "symbol": "sAAPL", "name": "Synth Apple", @@ -363,7 +363,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xd2dF355C19471c8bd7D8A3aa27Ff4e26A21b4076", "symbol": "sAAVE", "name": "Synth Aave", @@ -372,7 +372,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xe36E2D3c7c34281FA3bC737950a68571736880A1", "symbol": "sADA", "name": "Synth Cardano", @@ -381,7 +381,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x9CF7E61853ea30A41b02169391b393B901eac457", "symbol": "sAMZN", "name": "Synth Amazon", @@ -390,7 +390,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xF48e200EAF9906362BB1442fca31e0835773b8B4", "symbol": "sAUD", "name": "Synth Australian Dollars", @@ -399,7 +399,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x617aeCB6137B5108D1E7D4918e3725C8cEbdB848", "symbol": "sBNB", "name": "Synth Binance Coin", @@ -408,7 +408,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", "symbol": "sBTC", "name": "Synth Bitcoin", @@ -417,7 +417,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xeABACD844A196D7Faf3CE596edeBF9900341B420", "symbol": "sCEX", "name": "Synth Centralised Exchange Index", @@ -426,7 +426,7 @@ "tags": ["index", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d", "symbol": "sCHF", "name": "Synth Swiss Franc", @@ -435,7 +435,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x9EeF4CA7aB9fa8bc0650127341C2d3F707a40f8A", "symbol": "sCOIN", "name": "Synth Coinbase", @@ -444,7 +444,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xEb029507d3e043DD6C87F2917C4E82B902c35618", "symbol": "sCOMP", "name": "Synth Compound", @@ -453,7 +453,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xD38aEb759891882e78E957c80656572503D8c1B1", "symbol": "sCRV", "name": "Synth Curve DAO Token", @@ -462,7 +462,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xfE33ae95A9f0DA8A845aF33516EDc240DCD711d6", "symbol": "sDASH", "name": "Synth Dash", @@ -471,7 +471,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xe1aFe1Fd76Fd88f78cBf599ea1846231B8bA3B6B", "symbol": "sDEFI", "name": "Synth DeFi Index", @@ -480,7 +480,7 @@ "tags": ["index", "synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x1715AC0743102BF5Cd58EfBB6Cf2dC2685d967b6", "symbol": "sDOT", "name": "Synth Polkadot", @@ -489,7 +489,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x88C8Cf3A212c0369698D13FE98Fcb76620389841", "symbol": "sEOS", "name": "Synth EOS", @@ -498,7 +498,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x22602469d704BfFb0936c7A7cfcD18f7aA269375", "symbol": "sETC", "name": "Synth Ethereum Classic", @@ -507,7 +507,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", "symbol": "sETH", "name": "Synth Ether", @@ -516,7 +516,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xD71eCFF9342A5Ced620049e616c5035F1dB98620", "symbol": "sEUR", "name": "Synth Euros", @@ -525,7 +525,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xf50B5e535F62a56A9BD2d8e2434204E726c027Fa", "symbol": "sFB", "name": "Synth Facebook", @@ -534,7 +534,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x23348160D7f5aca21195dF2b70f28Fce2B0be9fC", "symbol": "sFTSE", "name": "Synth FTSE 100 Index", @@ -543,7 +543,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F", "symbol": "sGBP", "name": "Synth Pound Sterling", @@ -552,7 +552,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xC63B8ECCE56aB9C46184eC6aB85e4771fEa4c8AD", "symbol": "sGOOG", "name": "Synth Alphabet", @@ -561,7 +561,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xF6b1C627e95BFc3c1b4c9B825a032Ff0fBf3e07d", "symbol": "sJPY", "name": "Synth Japanese Yen", @@ -570,7 +570,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x269895a3dF4D73b077Fc823dD6dA1B95f72Aaf9B", "symbol": "sKRW", "name": "Synth South Korean Won", @@ -579,7 +579,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xbBC455cb4F1B9e4bFC4B73970d360c8f032EfEE6", "symbol": "sLINK", "name": "Synth Chainlink", @@ -588,7 +588,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xC14103C2141E842e228FBaC594579e798616ce7A", "symbol": "sLTC", "name": "Synth Litecoin", @@ -597,7 +597,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x745a824D6aBBD236AA794b5530062778A6Ad7523", "symbol": "sMSFT", "name": "Synth Microsoft", @@ -606,7 +606,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x5A7E3c07604EB515C16b36cd51906a65f021F609", "symbol": "sNFLX", "name": "Synth Netflix", @@ -615,7 +615,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x757de3ac6B830a931eF178C6634c5C551773155c", "symbol": "sNIKKEI", "name": "Synth Nikkei 225 Index", @@ -624,7 +624,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x6d16cF3EC5F763d4d99cB0B0b110eefD93B11B56", "symbol": "sOIL", "name": "Synth Perpetual Oil Futures", @@ -633,7 +633,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xD31533E8d0f3DF62060e94B3F1318137bB6E3525", "symbol": "sREN", "name": "Synth Ren", @@ -642,7 +642,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x0352557B007A4Aae1511C114409b932F06F9E2f4", "symbol": "sRUNE", "name": "Synth THORChain", @@ -651,7 +651,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xf2E08356588EC5cd9E437552Da87C0076b4970B0", "symbol": "sTRX", "name": "Synth TRON", @@ -660,7 +660,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x918dA91Ccbc32B7a6A0cc4eCd5987bbab6E31e6D", "symbol": "sTSLA", "name": "Synth Tesla", @@ -669,7 +669,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x30635297E450b930f8693297eBa160D9e6c8eBcf", "symbol": "sUNI", "name": "Synth Uniswap", @@ -678,7 +678,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x6A22e5e94388464181578Aa7A6B869e00fE27846", "symbol": "sXAG", "name": "Synth Silver Ounce", @@ -687,7 +687,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x261EfCdD24CeA98652B9700800a13DfBca4103fF", "symbol": "sXAU", "name": "Synth Gold Ounce", @@ -696,7 +696,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x5299d6F7472DCc137D7f3C4BcfBBB514BaBF341A", "symbol": "sXMR", "name": "Synth Monero", @@ -705,7 +705,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0xa2B0fDe6D710e201d0d608e924A484d1A5fEd57c", "symbol": "sXRP", "name": "Synth Ripple", @@ -714,7 +714,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x2e59005c5c0f0a4D77CcA82653d48b46322EE5Cd", "symbol": "sXTZ", "name": "Synth Tezos", @@ -723,7 +723,7 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x992058B7DB08F9734d84485bfbC243C4ee6954A7", "symbol": "sYFI", "name": "Synth yearn.finance", @@ -732,322 +732,322 @@ "tags": ["synth"] }, { - "chainId": 1, + "chainId": 513100, "address": "0x81ab848898b5ffD3354dbbEfb333D5D183eEDcB5", "name": "yUSD Synthetic Expiring 1 September 2020", "symbol": "yUSDSEP20", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xB2FdD60AD80ca7bA89B9BAb3b5336c2601C020b4", "name": "yUSD Synthetic Expiring 1 October 2020", "symbol": "yUSDOCT20", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x208d174775dc39fe18b1b374972f77ddec6c0f73", "name": "uUSDrBTC Synthetic Expiring 1 Oct 2020", "symbol": "uUSDrBTC-OCT", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xf06ddacf71e2992e2122a1a0168c6967afdf63ce", "name": "uUSDrBTC Synthetic Expiring 31 Dec 2020", "symbol": "uUSDrBTC-DEC", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xd16c79c8a39d44b2f3eb45d2019cd6a42b03e2a9", "name": "uUSDwETH Synthetic Expiring 31 Dec 2020", "symbol": "uUSDwETH-DEC", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x3d995510f8d82c2ea341845932b5ddde0bead9a3", "name": "uGAS-JAN21 Token Expiring 31 Jan 2021", "symbol": "uGAS-JAN21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x90f802c7e8fb5d40b0de583e34c065a3bd2020d8", "name": "YD-ETH-MAR21 Token Expiring 31 Mar 2021", "symbol": "YD-ETH-MAR21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x002f0b1a71c5730cf2f4da1970a889207bdb6d0d", "name": "YD-BTC-MAR21 Token Expiring 31 Mar 2021", "symbol": "YD-BTC-MAR21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x1062ad0e59fa67fa0b27369113098cc941dd0d5f", "name": "UMA 35 Call Expirying 30 Apr 2021", "symbol": "UMAc35-0421", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xf93340b1a3adf7eedcaec25fae8171d4b736e89f", "name": "pxUSD Synthetic USD Expiring 1 April 2021", "symbol": "pxUSD_MAR2021", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x84bd083b1c8bf929f39c98bc17cf518f40154f58", "name": "Mario Cash Synthetic Token Expiring 15 January 2021", "symbol": "Mario Cash-JAN-2021", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x81fab276aec924fbde190cf379783526d413cf70", "name": "uGAS-FEB21 Token Expiring 28 Feb 2021", "symbol": "uGAS-FEB21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x4e110603e70b0b5f1c403ee543b37e1f1244cf28", "name": "uGAS-MAR21 Token Expiring 31 Mar 2021", "symbol": "uGAS-MAR21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xcf55a7f92d5e0c6683debbc1fc20c0a6e056df13", "name": "Zelda Elastic Cash", "symbol": "Zelda Elastic Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x654eebac62240e6c56bab5f6adf7cfa74a894510", "name": "Zelda Spring Nuts Cash", "symbol": "Zelda Spring Nuts Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xa48920cc1ad85d8ea13af5d7be180c0338c306dd", "name": "Zelda Summer Nuts Cash", "symbol": "Zelda Summer Nuts Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x249a198d59b57fda5dda90630febc86fd8c7594c", "name": "Zelda Whirlwind Cash", "symbol": "Zelda Whirlwind Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x5ed1406873c9eb91f6f9a67ac4e152387c1132e7", "name": "Zelda Reinforced Cash", "symbol": "Zelda Reinforced Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x8104c9f13118320eefe5fbea8a44d600b85981ef", "name": "Mini Mario Summer Cash", "symbol": "Mini Mario Summer Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x69746c719e59674b147df25f50e7cfa0673cb625", "name": "Mini Mario Spring Cash", "symbol": "Mini Mario Spring Cash", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x6b1257641d18791141f025eab36fb567c4b564ff", "name": "Bitcoin Dominance Token 31 March 2021", "symbol": "BTCDOM-MAR2021", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x4e83b6287588a96321b2661c5e041845ff7814af", "name": "Altcoin Dominance Token 31 March 2021", "symbol": "ALTDOM-MAR2021", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x59fec83ec709c893aedd1a144cf1828eb04127cd", "name": "pxGOLD Synthetic GOLD Expiring 31 May 2021", "symbol": "pxGOLD_MAY2021", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x89337BFb7938804c3776C9FB921EccAf5ab76758", "name": "Compound Annualized Rate Future Expiring 28 March 2021", "symbol": "CAR-USDC-MAR21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xec58d3aefc9aaa2e0036fa65f70d569f49d9d1ed", "name": "uSTONKS Index Token April 2021", "symbol": "uSTONKS_APR21", "decimals": 6 }, { - "chainId": 1, + "chainId": 513100, "address": "0xa6B9d7E3d76cF23549293Fb22c488E0Ea591A44e", "name": "uGAS-JUN21 Token Expiring 30 Jun 2021", "symbol": "uGAS-JUN21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xe813b65da6c38a04591aed3f082d32db7d53c382", "name": "Yield Dollar [WETH Dec 2021]", "symbol": "YD-ETH-DEC21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x4b606e9eb2228c70f44453afe5a73e1fea258ce1", "name": "pxUSD Synthetic USD Expiring 31 Mar 2022", "symbol": "pxUSD_MAR2022", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x5247c0db4044fb6f97f32c7e1b48758019a5a912", "name": "pxGOLD Synthetic Gold Expiring 31 Mar 2022", "symbol": "pxGOLD_MAR2022", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x56fb1acaff95c0b6ebcd17c8361a63d98b1a5a11", "name": "uForex CNYUSD Synthetic Token April 2021", "symbol": "uCNYUSD-APR", "decimals": 6 }, { - "chainId": 1, + "chainId": 513100, "address": "0xd49fa405dce086c65d66ca1ca41f8e98583812b4", "name": "uForex EURUSD Synthetic Token April 2021", "symbol": "uEURUSD-APR", "decimals": 6 }, { - "chainId": 1, + "chainId": 513100, "address": "0x29dddacba3b231ee8d673dd0f0fa759ea145561b", "name": "DEFI_PULSE_TOTAL_TVL Synthetic Token Expiring 15 April 2021", "symbol": "TVL_ALL_APRIL15", "decimals": 6 }, { - "chainId": 1, + "chainId": 513100, "address": "0xcbe430927370e95b4b10cfc702c6017ec7abefc3", "name": "Yield Dollar [WETH Jun 2021]", "symbol": "YD-ETH-JUN21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x4b7fb448df91c8ed973494f8c8c4f12daf3a8521", "name": "Yield Dollar [renBTC Jun 2021]", "symbol": "YD-BTC-JUN21", "decimals": 8 }, { - "chainId": 1, + "chainId": 513100, "address": "0x3108c33b6fb38efedaefd8b5f7ca01d5f5c7372d", "name": "Yield Dollar UMA 21", "symbol": "yUMA21", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x0cae9e4d663793c2a2A0b211c1Cf4bBca2B9cAa7", "name": "Mirrored Amazon", "symbol": "MAMZN", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x31c63146a635EB7465e5853020b39713AC356991", "name": "M US Oil", "symbol": "MUSO", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x59A921Db27Dd6d4d974745B7FfC5c33932653442", "name": "M Google", "symbol": "MGOOGL", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xf72FCd9DCF0190923Fadd44811E240Ef4533fc86", "name": "Mirrored ProShares", "symbol": "MVIXY", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x56aA298a19C93c6801FDde870fA63EF75Cc0aF72", "name": "Mirrored Alibaba", "symbol": "MBABA", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x0e99cC0535BB6251F6679Fa6E65d6d3b430e840B", "name": "Mirrored Facebook", "symbol": "MFB", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x13B02c8dE71680e71F0820c996E4bE43c2F57d15", "name": "Mirrored Invesco QQ", "symbol": "MQQQ", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x41BbEDd7286dAab5910a1f15d12CBda839852BD7", "name": "Mirrored Microsoft", "symbol": "MMSFT", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x9d1555d8cB3C846Bb4f7D5B1B1080872c3166676", "name": "Mirrored iShares Si", "symbol": "MSLV", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x21cA39943E91d704678F5D00b6616650F066fD63", "name": "Mirrored Tesla", "symbol": "MTSLA", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xe82bbB62fA81d0701643d1675FB50ec52fD3Df92", "name": "DYDX Token", "symbol": "DYDX", @@ -1075,91 +1075,91 @@ "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x6B60eE11b73230045cF9095E6e43AE9Ea638e172", "name": "Shatner", "symbol": "SHAT", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x7277a44D1325D81Ac58893002a1B40a41bea43fe", "name": "FAANG Index", "symbol": "FAANG", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x76175599887730786bdA1545D0D7AcE8737fEBB1", "name": "ENS DAO", "symbol": "ENS", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xa82AA729AE2F0d78e961D66db53949e27a9E866d", "name": "BMEX", "symbol": "BMEX", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x322A46E88fa3C78F9c9E3DBb0254b61664a06109", "name": "Ukraine DAO", "symbol": "Ukraine", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x8290D7a64F25e6b5002d98367E8367c1b532b534", "name": "oneUNI", "symbol": "oneUNI", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x26dE40bFFAFe73Ff4E37089B2C71e35Fd02eb1a7", "name": "EUULA", "symbol": "EUULA", "decimals": 2 }, { - "chainId": 1, + "chainId": 513100, "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", "name": "RvT", "symbol": "RVT", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0x10B35b348Fd49966f2BaF81df35A511c18bD1f80", "name": "Denaro", "symbol": "DNO", "decimals": 7 }, { - "chainId": 1, + "chainId": 513100, "address": "0x47bc01597798DCD7506DCCA36ac4302fc93a8cFb", "name": "Crowd Machine Compute Token", "symbol": "CMCT", "decimals": 8 }, { - "chainId": 1, + "chainId": 513100, "address": "0xc96DF921009B790dfFcA412375251ed1A2b75c60", "name": "Ormeus Coin", "symbol": "ORME", "decimals": 8 }, { - "chainId": 1, + "chainId": 513100, "address": "0xd6bD97a26232bA02172Ff86b055d5D7bE789335B", "name": "OrmeCash", "symbol": "OMC", "decimals": 18 }, { - "chainId": 1, + "chainId": 513100, "address": "0xa2B0fDe6D710e201d0d608e924A484d1A5fEd57c", "name": "Synth sXRP", "symbol": "sXRP", diff --git a/src/constants/tokens.ts b/src/constants/tokens.ts index 18ca8f26159..0f078d3ce7d 100644 --- a/src/constants/tokens.ts +++ b/src/constants/tokens.ts @@ -350,35 +350,35 @@ export const WRAPPED_NATIVE_CURRENCY: { [chainId: number]: Token | undefined } = SupportedChainId.MAINNET, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, - 'WETH', + 'WETF', 'Wrapped Ether' ), [SupportedChainId.OPTIMISM]: new Token( SupportedChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, - 'WETH', + 'WETF', 'Wrapped Ether' ), [SupportedChainId.OPTIMISTIC_KOVAN]: new Token( SupportedChainId.OPTIMISTIC_KOVAN, '0x4200000000000000000000000000000000000006', 18, - 'WETH', + 'WETF', 'Wrapped Ether' ), [SupportedChainId.ARBITRUM_ONE]: new Token( SupportedChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, - 'WETH', + 'WETF', 'Wrapped Ether' ), [SupportedChainId.ARBITRUM_RINKEBY]: new Token( SupportedChainId.ARBITRUM_RINKEBY, '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681', 18, - 'WETH', + 'WETF', 'Wrapped Ether' ), [SupportedChainId.POLYGON]: new Token( diff --git a/src/locales/pt-BR.po b/src/locales/pt-BR.po index 74d3db39980..6880b11e840 100644 --- a/src/locales/pt-BR.po +++ b/src/locales/pt-BR.po @@ -2704,8 +2704,8 @@ msgid "{0} Deposited" msgstr "{0} Depositados" #: src/components/earn/PoolCard.tsx -msgid "{0} ETH" -msgstr "{0} ETH" +msgid "{0} ETF" +msgstr "{0} ETF" #: src/pages/RemoveLiquidity/V3.tsx #: src/pages/RemoveLiquidity/V3.tsx From 9675e6a5ffaa17c2617eee2c27ade14a8859afde Mon Sep 17 00:00:00 2001 From: Franck Date: Mon, 26 Sep 2022 15:09:45 +0800 Subject: [PATCH 02/15] update remove --- src/pages/RemoveLiquidity/index.tsx | 802 ++++++++++++++-------------- 1 file changed, 401 insertions(+), 401 deletions(-) diff --git a/src/pages/RemoveLiquidity/index.tsx b/src/pages/RemoveLiquidity/index.tsx index 92cf2bd97cb..0280ce23209 100644 --- a/src/pages/RemoveLiquidity/index.tsx +++ b/src/pages/RemoveLiquidity/index.tsx @@ -77,16 +77,16 @@ export default function RemoveLiquidity() { const formattedAmounts = { [Field.LIQUIDITY_PERCENT]: parsedAmounts[Field.LIQUIDITY_PERCENT].equalTo('0') - ? '0' - : parsedAmounts[Field.LIQUIDITY_PERCENT].lessThan(new Percent('1', '100')) - ? '<1' - : parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0), + ? '0' + : parsedAmounts[Field.LIQUIDITY_PERCENT].lessThan(new Percent('1', '100')) + ? '<1' + : parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0), [Field.LIQUIDITY]: - independentField === Field.LIQUIDITY ? typedValue : parsedAmounts[Field.LIQUIDITY]?.toSignificant(6) ?? '', + independentField === Field.LIQUIDITY ? typedValue : parsedAmounts[Field.LIQUIDITY]?.toSignificant(6) ?? '', [Field.CURRENCY_A]: - independentField === Field.CURRENCY_A ? typedValue : parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) ?? '', + independentField === Field.CURRENCY_A ? typedValue : parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) ?? '', [Field.CURRENCY_B]: - independentField === Field.CURRENCY_B ? typedValue : parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) ?? '', + independentField === Field.CURRENCY_B ? typedValue : parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) ?? '', } const atMaxAmount = parsedAmounts[Field.LIQUIDITY_PERCENT]?.equalTo(new Percent('1')) @@ -98,8 +98,8 @@ export default function RemoveLiquidity() { // allowance handling const { gatherPermitSignature, signatureData } = useV2LiquidityTokenPermit( - parsedAmounts[Field.LIQUIDITY], - router?.address + parsedAmounts[Field.LIQUIDITY], + router?.address ) const [approval, approveCallback] = useApproveCallback(parsedAmounts[Field.LIQUIDITY], router?.address) @@ -108,39 +108,39 @@ export default function RemoveLiquidity() { const liquidityAmount = parsedAmounts[Field.LIQUIDITY] if (!liquidityAmount) throw new Error('missing liquidity amount') - if (gatherPermitSignature) { - try { - await gatherPermitSignature() - } catch (error) { - // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it - if (error?.code !== 4001) { - await approveCallback() - } - } - } else { - await approveCallback() - } + // if (gatherPermitSignature) { + // try { + // await gatherPermitSignature() + // } catch (error) { + // // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it + // if (error?.code !== 4001) { + // await approveCallback() + // } + // } + // } else { + await approveCallback() + // } } // wrapped onUserInput to clear signatures const onUserInput = useCallback( - (field: Field, typedValue: string) => { - return _onUserInput(field, typedValue) - }, - [_onUserInput] + (field: Field, typedValue: string) => { + return _onUserInput(field, typedValue) + }, + [_onUserInput] ) const onLiquidityInput = useCallback( - (typedValue: string): void => onUserInput(Field.LIQUIDITY, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.LIQUIDITY, typedValue), + [onUserInput] ) const onCurrencyAInput = useCallback( - (typedValue: string): void => onUserInput(Field.CURRENCY_A, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.CURRENCY_A, typedValue), + [onUserInput] ) const onCurrencyBInput = useCallback( - (typedValue: string): void => onUserInput(Field.CURRENCY_B, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.CURRENCY_B, typedValue), + [onUserInput] ) // tx sending @@ -236,18 +236,18 @@ export default function RemoveLiquidity() { } const safeGasEstimates: (BigNumber | undefined)[] = await Promise.all( - methodNames.map((methodName) => - router.estimateGas[methodName](...args) - .then((estimateGas) => calculateGasMargin(estimateGas)) - .catch((error) => { - console.error(`estimateGas failed`, methodName, args, error) - return undefined - }) - ) + methodNames.map((methodName) => + router.estimateGas[methodName](...args) + .then((estimateGas) => calculateGasMargin(estimateGas)) + .catch((error) => { + console.error(`estimateGas failed`, methodName, args, error) + return undefined + }) + ) ) const indexOfSuccessfulEstimation = safeGasEstimates.findIndex((safeGasEstimate) => - BigNumber.isBigNumber(safeGasEstimate) + BigNumber.isBigNumber(safeGasEstimate) ) // all estimations failed... @@ -261,162 +261,162 @@ export default function RemoveLiquidity() { await router[methodName](...args, { gasLimit: safeGasEstimate, }) - .then((response: TransactionResponse) => { - setAttemptingTxn(false) - - addTransaction(response, { - type: TransactionType.REMOVE_LIQUIDITY_V3, - baseCurrencyId: currencyId(currencyA), - quoteCurrencyId: currencyId(currencyB), - expectedAmountBaseRaw: parsedAmounts[Field.CURRENCY_A]?.quotient.toString() ?? '0', - expectedAmountQuoteRaw: parsedAmounts[Field.CURRENCY_B]?.quotient.toString() ?? '0', + .then((response: TransactionResponse) => { + setAttemptingTxn(false) + + addTransaction(response, { + type: TransactionType.REMOVE_LIQUIDITY_V3, + baseCurrencyId: currencyId(currencyA), + quoteCurrencyId: currencyId(currencyB), + expectedAmountBaseRaw: parsedAmounts[Field.CURRENCY_A]?.quotient.toString() ?? '0', + expectedAmountQuoteRaw: parsedAmounts[Field.CURRENCY_B]?.quotient.toString() ?? '0', + }) + + setTxHash(response.hash) + + sendEvent({ + category: 'Liquidity', + action: 'Remove', + label: [currencyA.symbol, currencyB.symbol].join('/'), + }) }) - - setTxHash(response.hash) - - sendEvent({ - category: 'Liquidity', - action: 'Remove', - label: [currencyA.symbol, currencyB.symbol].join('/'), + .catch((error: Error) => { + setAttemptingTxn(false) + // we only care if the error is something _other_ than the user rejected the tx + console.error(error) }) - }) - .catch((error: Error) => { - setAttemptingTxn(false) - // we only care if the error is something _other_ than the user rejected the tx - console.error(error) - }) } } function modalHeader() { return ( - - - - {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} - - - - - {currencyA?.symbol} + + + + {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} + + + + {currencyA?.symbol} + + + + + - - - - - - - {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} - - - - - {currencyB?.symbol} + + + {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} - - - - - - Output is estimated. If the price changes by more than {allowedSlippage.toSignificant(4)}% your transaction - will revert. - - - + + + + {currencyB?.symbol} + + + + + + + Output is estimated. If the price changes by more than {allowedSlippage.toSignificant(4)}% your transaction + will revert. + + + ) } function modalBottom() { return ( - <> - - - - UNI {currencyA?.symbol}/{currencyB?.symbol} Burned - - - - - - {parsedAmounts[Field.LIQUIDITY]?.toSignificant(6)} + <> + + + + UNI {currencyA?.symbol}/{currencyB?.symbol} Burned + - - - {pair && ( - <> - - - Price - - - 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} - - - -
- - 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} + + + + {parsedAmounts[Field.LIQUIDITY]?.toSignificant(6)} - - - )} - - - Confirm - - - + + + {pair && ( + <> + + + Price + + + 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} + + + +
+ + 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} + + + + )} + + + Confirm + + + ) } const pendingText = ( - - Removing {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} {currencyA?.symbol} and - {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} {currencyB?.symbol} - + + Removing {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} {currencyA?.symbol} and + {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} {currencyB?.symbol} + ) const liquidityPercentChangeCallback = useCallback( - (value: number) => { - onUserInput(Field.LIQUIDITY_PERCENT, value.toString()) - }, - [onUserInput] + (value: number) => { + onUserInput(Field.LIQUIDITY_PERCENT, value.toString()) + }, + [onUserInput] ) const oneCurrencyIsETH = currencyA?.isNative || currencyB?.isNative const oneCurrencyIsWETH = Boolean( - chainId && + chainId && WRAPPED_NATIVE_CURRENCY[chainId] && ((currencyA && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyA)) || - (currencyB && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyB))) + (currencyB && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyB))) ) const handleSelectCurrencyA = useCallback( - (currency: Currency) => { - if (currencyIdB && currencyId(currency) === currencyIdB) { - navigate(`/remove/v2/${currencyId(currency)}/${currencyIdA}`) - } else { - navigate(`/remove/v2/${currencyId(currency)}/${currencyIdB}`) - } - }, - [currencyIdA, currencyIdB, navigate] + (currency: Currency) => { + if (currencyIdB && currencyId(currency) === currencyIdB) { + navigate(`/remove/v2/${currencyId(currency)}/${currencyIdA}`) + } else { + navigate(`/remove/v2/${currencyId(currency)}/${currencyIdB}`) + } + }, + [currencyIdA, currencyIdB, navigate] ) const handleSelectCurrencyB = useCallback( - (currency: Currency) => { - if (currencyIdA && currencyId(currency) === currencyIdA) { - navigate(`/remove/v2/${currencyIdB}/${currencyId(currency)}`) - } else { - navigate(`/remove/v2/${currencyIdA}/${currencyId(currency)}`) - } - }, - [currencyIdA, currencyIdB, navigate] + (currency: Currency) => { + if (currencyIdA && currencyId(currency) === currencyIdA) { + navigate(`/remove/v2/${currencyIdB}/${currencyId(currency)}`) + } else { + navigate(`/remove/v2/${currencyIdA}/${currencyId(currency)}`) + } + }, + [currencyIdA, currencyIdB, navigate] ) const handleDismissConfirmation = useCallback(() => { @@ -429,259 +429,259 @@ export default function RemoveLiquidity() { }, [onUserInput, txHash]) const [innerLiquidityPercentage, setInnerLiquidityPercentage] = useDebouncedChangeHandler( - Number.parseInt(parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0)), - liquidityPercentChangeCallback + Number.parseInt(parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0)), + liquidityPercentChangeCallback ) return ( - <> - - - - ( - You will receive} + <> + + + + - )} - pendingText={pendingText} - /> - - - - - - Tip: Removing pool tokens converts your position back into underlying tokens at the current - rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive. - - - - - - - - - Remove Amount - - { - setShowDetailed(!showDetailed) - }} - > - {showDetailed ? Simple : Detailed} - - - - - {formattedAmounts[Field.LIQUIDITY_PERCENT]}% - - - {!showDetailed && ( + attemptingTxn={attemptingTxn} + hash={txHash ? txHash : ''} + content={() => ( + You will receive} + onDismiss={handleDismissConfirmation} + topContent={modalHeader} + bottomContent={modalBottom} + /> + )} + pendingText={pendingText} + /> + + + + + + Tip: Removing pool tokens converts your position back into underlying tokens at the current + rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive. + + + + + + + + + Remove Amount + + { + setShowDetailed(!showDetailed) + }} + > + {showDetailed ? Simple : Detailed} + + + + + {formattedAmounts[Field.LIQUIDITY_PERCENT]}% + + + {!showDetailed && ( + <> + + + onUserInput(Field.LIQUIDITY_PERCENT, '25')} width="20%"> + 25% + + onUserInput(Field.LIQUIDITY_PERCENT, '50')} width="20%"> + 50% + + onUserInput(Field.LIQUIDITY_PERCENT, '75')} width="20%"> + 75% + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} width="20%"> + Max + + + + )} + + + {!showDetailed && ( + <> + + + + + + + + {formattedAmounts[Field.CURRENCY_A] || '-'} + + + + + {currencyA?.symbol} + + + + + + {formattedAmounts[Field.CURRENCY_B] || '-'} + + + + + {currencyB?.symbol} + + + + {chainId && (oneCurrencyIsWETH || oneCurrencyIsETH) ? ( + + {oneCurrencyIsETH ? ( + + Receive WETH + + ) : oneCurrencyIsWETH ? ( + + Receive ETH + + ) : null} + + ) : null} + + + + )} + + {showDetailed && ( <> - + { + onUserInput(Field.LIQUIDITY_PERCENT, '100') + }} + showMaxButton={!atMaxAmount} + currency={pair?.liquidityToken} + pair={pair} + id="liquidity-amount" + /> + + + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} + showMaxButton={!atMaxAmount} + currency={currencyA} + label={'Output'} + onCurrencySelect={handleSelectCurrencyA} + id="remove-liquidity-tokena" + /> + + + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} + showMaxButton={!atMaxAmount} + currency={currencyB} + label={'Output'} + onCurrencySelect={handleSelectCurrencyB} + id="remove-liquidity-tokenb" + /> + + )} + {pair && ( +
- onUserInput(Field.LIQUIDITY_PERCENT, '25')} width="20%"> - 25% - - onUserInput(Field.LIQUIDITY_PERCENT, '50')} width="20%"> - 50% - - onUserInput(Field.LIQUIDITY_PERCENT, '75')} width="20%"> - 75% - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} width="20%"> - Max - + Price: +
+ 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} +
- - )} - - - {!showDetailed && ( - <> - - - - - - - {formattedAmounts[Field.CURRENCY_A] || '-'} - - - - - {currencyA?.symbol} - - +
+
+ 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} +
+
+ )} +
+ {!account ? ( + + + Connect Wallet + + + ) : ( - - {formattedAmounts[Field.CURRENCY_B] || '-'} - - - - - {currencyB?.symbol} + + {approval === ApprovalState.PENDING ? ( + + Approving + + ) : approval === ApprovalState.APPROVED || signatureData !== null ? ( + Approved + ) : ( + Approve + )} + + { + setShowConfirm(true) + }} + disabled={!isValid || (signatureData === null && approval !== ApprovalState.APPROVED)} + error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]} + > + + {error || Remove} - + - {chainId && (oneCurrencyIsWETH || oneCurrencyIsETH) ? ( - - {oneCurrencyIsETH ? ( - - Receive WETH - - ) : oneCurrencyIsWETH ? ( - - Receive ETH - - ) : null} - - ) : null} - - - - )} - - {showDetailed && ( - <> - { - onUserInput(Field.LIQUIDITY_PERCENT, '100') - }} - showMaxButton={!atMaxAmount} - currency={pair?.liquidityToken} - pair={pair} - id="liquidity-amount" - /> - - - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} - showMaxButton={!atMaxAmount} - currency={currencyA} - label={'Output'} - onCurrencySelect={handleSelectCurrencyA} - id="remove-liquidity-tokena" - /> - - - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} - showMaxButton={!atMaxAmount} - currency={currencyB} - label={'Output'} - onCurrencySelect={handleSelectCurrencyB} - id="remove-liquidity-tokenb" - /> - - )} - {pair && ( -
- - Price: -
- 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} -
-
- -
-
- 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} -
- + )}
- )} -
- {!account ? ( - - - Connect Wallet - - - ) : ( - - - {approval === ApprovalState.PENDING ? ( - - Approving - - ) : approval === ApprovalState.APPROVED || signatureData !== null ? ( - Approved - ) : ( - Approve - )} - - { - setShowConfirm(true) - }} - disabled={!isValid || (signatureData === null && approval !== ApprovalState.APPROVED)} - error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]} - > - - {error || Remove} - - - - )} -
- - - - - {pair ? ( - - - - ) : null} - + + + + + {pair ? ( + + + + ) : null} + ) } From 5e41ef85cb6493b075be20b8070fff0f49a786ee Mon Sep 17 00:00:00 2001 From: Andy <38134929+w982541479@users.noreply.github.com> Date: Tue, 27 Sep 2022 15:00:20 +0800 Subject: [PATCH 03/15] Replace links --- src/constants/chainInfo.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/constants/chainInfo.ts b/src/constants/chainInfo.ts index 5913a0f61af..6629ca2f7b2 100644 --- a/src/constants/chainInfo.ts +++ b/src/constants/chainInfo.ts @@ -58,7 +58,7 @@ const CHAIN_INFO: ChainInfoMap = { networkType: NetworkType.L1, docs: 'https://docs.uniswap.org/', explorer: 'https://explorer.etherfair.org/', - infoLink: 'https://info.uniswap.org/#/', + infoLink: 'https://dexscreener.com/ethereumfair', label: 'EthereumFair', logoUrl: ethereumLogoUrl, nativeCurrency: { name: 'Ethereum Fair', symbol: 'ETF', decimals: 18 }, @@ -68,7 +68,7 @@ const CHAIN_INFO: ChainInfoMap = { networkType: NetworkType.L1, docs: 'https://docs.uniswap.org/', explorer: 'https://rinkeby.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/', + infoLink: 'https://dexscreener.com/ethereumfair', label: 'Rinkeby', logoUrl: ethereumLogoUrl, nativeCurrency: { name: 'Rinkeby Ether', symbol: 'rETH', decimals: 18 }, @@ -78,7 +78,7 @@ const CHAIN_INFO: ChainInfoMap = { networkType: NetworkType.L1, docs: 'https://docs.uniswap.org/', explorer: 'https://ropsten.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/', + infoLink: 'https://dexscreener.com/ethereumfair', label: 'Ropsten', logoUrl: ethereumLogoUrl, nativeCurrency: { name: 'Ropsten Ether', symbol: 'ropETH', decimals: 18 }, @@ -88,7 +88,7 @@ const CHAIN_INFO: ChainInfoMap = { networkType: NetworkType.L1, docs: 'https://docs.uniswap.org/', explorer: 'https://kovan.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/', + infoLink: 'https://dexscreener.com/ethereumfair', label: 'Kovan', logoUrl: ethereumLogoUrl, nativeCurrency: { name: 'Kovan Ether', symbol: 'kovETH', decimals: 18 }, @@ -98,7 +98,7 @@ const CHAIN_INFO: ChainInfoMap = { networkType: NetworkType.L1, docs: 'https://docs.uniswap.org/', explorer: 'https://goerli.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/', + infoLink: 'https://dexscreener.com/ethereumfair', label: 'Görli', logoUrl: ethereumLogoUrl, nativeCurrency: { name: 'Görli Ether', symbol: 'görETH', decimals: 18 }, @@ -111,7 +111,7 @@ const CHAIN_INFO: ChainInfoMap = { defaultListUrl: OPTIMISM_LIST, docs: 'https://optimism.io/', explorer: 'https://optimistic.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/optimism/', + infoLink: 'https://dexscreener.com/optimism', label: 'Optimism', logoUrl: optimismLogoUrl, circleLogoUrl: optimismCircleLogoUrl, @@ -128,7 +128,7 @@ const CHAIN_INFO: ChainInfoMap = { defaultListUrl: OPTIMISM_LIST, docs: 'https://optimism.io/', explorer: 'https://optimistic.etherscan.io/', - infoLink: 'https://info.uniswap.org/#/optimism/', + infoLink: 'https://dexscreener.com/optimism', label: 'Optimistic Kovan', logoUrl: optimismLogoUrl, statusPage: 'https://optimism.io/status', @@ -142,7 +142,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://bridge.arbitrum.io/', docs: 'https://offchainlabs.com/', explorer: 'https://arbiscan.io/', - infoLink: 'https://info.uniswap.org/#/arbitrum', + infoLink: 'https://dexscreener.com/arbitrum', label: 'Arbitrum', logoUrl: arbitrumLogoUrl, circleLogoUrl: arbitrumCircleLogoUrl, @@ -158,7 +158,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://bridge.arbitrum.io/', docs: 'https://offchainlabs.com/', explorer: 'https://rinkeby-explorer.arbitrum.io/', - infoLink: 'https://info.uniswap.org/#/arbitrum/', + infoLink: 'https://dexscreener.com/arbitrum', label: 'Arbitrum Rinkeby', logoUrl: arbitrumLogoUrl, defaultListUrl: ARBITRUM_LIST, @@ -172,7 +172,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://wallet.polygon.technology/bridge', docs: 'https://polygon.io/', explorer: 'https://polygonscan.com/', - infoLink: 'https://info.uniswap.org/#/polygon/', + infoLink: 'https://dexscreener.com/polygon', label: 'Polygon', logoUrl: polygonMaticLogo, circleLogoUrl: polygonCircleLogoUrl, @@ -186,7 +186,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://wallet.polygon.technology/bridge', docs: 'https://polygon.io/', explorer: 'https://mumbai.polygonscan.com/', - infoLink: 'https://info.uniswap.org/#/polygon/', + infoLink: 'https://dexscreener.com/polygon', label: 'Polygon Mumbai', logoUrl: polygonMaticLogo, nativeCurrency: { name: 'Polygon Mumbai Matic', symbol: 'mMATIC', decimals: 18 }, @@ -197,7 +197,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://www.portalbridge.com/#/transfer', docs: 'https://docs.celo.org/', explorer: 'https://celoscan.io/', - infoLink: 'https://info.uniswap.org/#/celo', + infoLink: 'https://dexscreener.com/celo', label: 'Celo', logoUrl: celoLogo, circleLogoUrl: celoCircleLogoUrl, @@ -210,7 +210,7 @@ const CHAIN_INFO: ChainInfoMap = { bridge: 'https://www.portalbridge.com/#/transfer', docs: 'https://docs.celo.org/', explorer: 'https://alfajores-blockscout.celo-testnet.org/', - infoLink: 'https://info.uniswap.org/#/celo', + infoLink: 'https://dexscreener.com/celo', label: 'Celo Alfajores', logoUrl: celoLogo, nativeCurrency: { name: 'Celo', symbol: 'CELO', decimals: 18 }, From 3fc7a6e0ad8b514b2eaa3ef434dd141753550943 Mon Sep 17 00:00:00 2001 From: Andy <38134929+w982541479@users.noreply.github.com> Date: Tue, 27 Sep 2022 15:02:28 +0800 Subject: [PATCH 04/15] comment on useless code --- src/components/Menu/index.tsx | 80 +++++++++++++++++------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx index 1d01c8c11ef..54cfd89c855 100644 --- a/src/components/Menu/index.tsx +++ b/src/components/Menu/index.tsx @@ -9,15 +9,15 @@ import { useActiveLocale } from 'hooks/useActiveLocale' import { useLocationLinkProps } from 'hooks/useLocationLinkProps' import { FunctionComponent, PropsWithChildren, useEffect, useRef, useState } from 'react' import { - BookOpen, + // BookOpen, Check, ChevronLeft, - Coffee, - FileText, + // Coffee, + // FileText, Flag, Globe, HelpCircle, - Info, + // Info, MessageCircle, Moon, Sun, @@ -246,25 +246,25 @@ export default function Menu() { default: return ( - -
- About -
- -
+ {/**/} + {/*
*/} + {/* About*/} + {/*
*/} + {/* */} + {/*
*/}
Help Center
- -
- Request Features -
- -
- + {/**/} + {/*
*/} + {/* Request Features*/} + {/*
*/} + {/* */} + {/*
*/} +
Discord
@@ -280,34 +280,34 @@ export default function Menu() {
{darkMode ? Light Theme : Dark Theme}
{darkMode ? : } - -
- Docs -
- -
- togglePrivacyPolicy()}> -
- Legal & Privacy -
- -
+ {/**/} + {/*
*/} + {/* Docs*/} + {/*
*/} + {/* */} + {/*
*/} + {/* togglePrivacyPolicy()}>*/} + {/*
*/} + {/* Legal & Privacy*/} + {/*
*/} + {/* */} + {/*
*/} {(isDevelopmentEnv() || isStagingEnv()) && ( Feature Flags )} - {showUNIClaimOption && ( - - Claim UNI - - )} + {/*{showUNIClaimOption && (*/} + {/* */} + {/* Claim UNI*/} + {/* */} + {/*)}*/}
) } From 5465e039bfa4fd7b908a18ca1d3253b4cb7ee5e9 Mon Sep 17 00:00:00 2001 From: Andy <38134929+w982541479@users.noreply.github.com> Date: Tue, 27 Sep 2022 16:20:58 +0800 Subject: [PATCH 05/15] WETF-> WETHF --- src/constants/tokens.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/constants/tokens.ts b/src/constants/tokens.ts index 0f078d3ce7d..ab218bb00f8 100644 --- a/src/constants/tokens.ts +++ b/src/constants/tokens.ts @@ -350,35 +350,35 @@ export const WRAPPED_NATIVE_CURRENCY: { [chainId: number]: Token | undefined } = SupportedChainId.MAINNET, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, - 'WETF', + 'WETHF', 'Wrapped Ether' ), [SupportedChainId.OPTIMISM]: new Token( SupportedChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, - 'WETF', + 'WETHF', 'Wrapped Ether' ), [SupportedChainId.OPTIMISTIC_KOVAN]: new Token( SupportedChainId.OPTIMISTIC_KOVAN, '0x4200000000000000000000000000000000000006', 18, - 'WETF', + 'WETHF', 'Wrapped Ether' ), [SupportedChainId.ARBITRUM_ONE]: new Token( SupportedChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, - 'WETF', + 'WETHF', 'Wrapped Ether' ), [SupportedChainId.ARBITRUM_RINKEBY]: new Token( SupportedChainId.ARBITRUM_RINKEBY, '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681', 18, - 'WETF', + 'WETHF', 'Wrapped Ether' ), [SupportedChainId.POLYGON]: new Token( From eb1943aeb293669919a81a86f1962925dfe56050 Mon Sep 17 00:00:00 2001 From: Andy <38134929+w982541479@users.noreply.github.com> Date: Tue, 27 Sep 2022 16:48:39 +0800 Subject: [PATCH 06/15] eth -> ETHF --- src/constants/tokens.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/constants/tokens.ts b/src/constants/tokens.ts index ab218bb00f8..fcc64b11aec 100644 --- a/src/constants/tokens.ts +++ b/src/constants/tokens.ts @@ -415,6 +415,9 @@ function getCeloNativeCurrency(chainId: number) { function isMatic(chainId: number): chainId is SupportedChainId.POLYGON | SupportedChainId.POLYGON_MUMBAI { return chainId === SupportedChainId.POLYGON_MUMBAI || chainId === SupportedChainId.POLYGON } +function isEthf(chainId: number): chainId is SupportedChainId.MAINNET { + return chainId === SupportedChainId.MAINNET +} class MaticNativeCurrency extends NativeCurrency { equals(other: Currency): boolean { @@ -434,6 +437,24 @@ class MaticNativeCurrency extends NativeCurrency { } } +class EthfNativeCurrency extends NativeCurrency { + equals(other: Currency): boolean { + return other.isNative && other.chainId === this.chainId + } + + get wrapped(): Token { + if (!isEthf(this.chainId)) throw new Error('Not ethf') + const wrapped = WRAPPED_NATIVE_CURRENCY[this.chainId] + invariant(wrapped instanceof Token) + return wrapped + } + + public constructor(chainId: number) { + if (!isEthf(chainId)) throw new Error('Not ethf') + super(chainId, 18, 'ETHF', 'Ether') + } +} + export class ExtendedEther extends Ether { public get wrapped(): Token { const wrapped = WRAPPED_NATIVE_CURRENCY[this.chainId] @@ -449,11 +470,14 @@ export class ExtendedEther extends Ether { } const cachedNativeCurrency: { [chainId: number]: NativeCurrency | Token } = {} +// @ts-ignore export function nativeOnChain(chainId: number): NativeCurrency | Token { if (cachedNativeCurrency[chainId]) return cachedNativeCurrency[chainId] let nativeCurrency: NativeCurrency | Token if (isMatic(chainId)) { nativeCurrency = new MaticNativeCurrency(chainId) + } else if (isEthf(chainId)) { + nativeCurrency = new EthfNativeCurrency(chainId) } else if (isCelo(chainId)) { nativeCurrency = getCeloNativeCurrency(chainId) } else { From b5cf737c0e40fc2865804fedeedc3b476c6d73da Mon Sep 17 00:00:00 2001 From: wangxiaozheng Date: Tue, 27 Sep 2022 16:50:50 +0800 Subject: [PATCH 07/15] commit test --- src/constants/chainInfo.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/constants/chainInfo.ts b/src/constants/chainInfo.ts index 6629ca2f7b2..56703bab134 100644 --- a/src/constants/chainInfo.ts +++ b/src/constants/chainInfo.ts @@ -12,6 +12,7 @@ import { colorsDark } from 'theme/colors' import { SupportedChainId, SupportedL1ChainId, SupportedL2ChainId } from './chains' import { ARBITRUM_LIST, CELO_LIST, OPTIMISM_LIST } from './lists' + export enum NetworkType { L1, L2, From ded0ecb0c5a5655f2ba4cd828e1646e354486f4d Mon Sep 17 00:00:00 2001 From: FranckStone Date: Tue, 27 Sep 2022 16:59:09 +0800 Subject: [PATCH 08/15] update rpc --- src/constants/networks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/networks.ts b/src/constants/networks.ts index 3cd364215c9..3b405d5495d 100644 --- a/src/constants/networks.ts +++ b/src/constants/networks.ts @@ -11,7 +11,7 @@ if (typeof INFURA_KEY === 'undefined') { * These are the network URLs used by the interface when there is not another available source of chain data */ export const RPC_URLS: { [key in SupportedChainId]: string } = { - [SupportedChainId.MAINNET]: `https://rpc.etherfair.org`, + [SupportedChainId.MAINNET]: `https://rpc.etherfair.link/`, [SupportedChainId.RINKEBY]: `https://rinkeby.infura.io/v3/${INFURA_KEY}`, [SupportedChainId.ROPSTEN]: `https://ropsten.infura.io/v3/${INFURA_KEY}`, [SupportedChainId.GOERLI]: `https://goerli.infura.io/v3/${INFURA_KEY}`, From 2ef0407a6f36e5f0f263029c638ee7078ddecc96 Mon Sep 17 00:00:00 2001 From: FranckStone Date: Tue, 27 Sep 2022 17:11:41 +0800 Subject: [PATCH 09/15] update eslint --- src/pages/RemoveLiquidity/index.tsx | 778 ++++++++++++++-------------- 1 file changed, 389 insertions(+), 389 deletions(-) diff --git a/src/pages/RemoveLiquidity/index.tsx b/src/pages/RemoveLiquidity/index.tsx index 0280ce23209..9755d47deb3 100644 --- a/src/pages/RemoveLiquidity/index.tsx +++ b/src/pages/RemoveLiquidity/index.tsx @@ -77,16 +77,16 @@ export default function RemoveLiquidity() { const formattedAmounts = { [Field.LIQUIDITY_PERCENT]: parsedAmounts[Field.LIQUIDITY_PERCENT].equalTo('0') - ? '0' - : parsedAmounts[Field.LIQUIDITY_PERCENT].lessThan(new Percent('1', '100')) - ? '<1' - : parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0), + ? '0' + : parsedAmounts[Field.LIQUIDITY_PERCENT].lessThan(new Percent('1', '100')) + ? '<1' + : parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0), [Field.LIQUIDITY]: - independentField === Field.LIQUIDITY ? typedValue : parsedAmounts[Field.LIQUIDITY]?.toSignificant(6) ?? '', + independentField === Field.LIQUIDITY ? typedValue : parsedAmounts[Field.LIQUIDITY]?.toSignificant(6) ?? '', [Field.CURRENCY_A]: - independentField === Field.CURRENCY_A ? typedValue : parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) ?? '', + independentField === Field.CURRENCY_A ? typedValue : parsedAmounts[Field.CURRENCY_A]?.toSignificant(6) ?? '', [Field.CURRENCY_B]: - independentField === Field.CURRENCY_B ? typedValue : parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) ?? '', + independentField === Field.CURRENCY_B ? typedValue : parsedAmounts[Field.CURRENCY_B]?.toSignificant(6) ?? '', } const atMaxAmount = parsedAmounts[Field.LIQUIDITY_PERCENT]?.equalTo(new Percent('1')) @@ -98,8 +98,8 @@ export default function RemoveLiquidity() { // allowance handling const { gatherPermitSignature, signatureData } = useV2LiquidityTokenPermit( - parsedAmounts[Field.LIQUIDITY], - router?.address + parsedAmounts[Field.LIQUIDITY], + router?.address ) const [approval, approveCallback] = useApproveCallback(parsedAmounts[Field.LIQUIDITY], router?.address) @@ -124,23 +124,23 @@ export default function RemoveLiquidity() { // wrapped onUserInput to clear signatures const onUserInput = useCallback( - (field: Field, typedValue: string) => { - return _onUserInput(field, typedValue) - }, - [_onUserInput] + (field: Field, typedValue: string) => { + return _onUserInput(field, typedValue) + }, + [_onUserInput] ) const onLiquidityInput = useCallback( - (typedValue: string): void => onUserInput(Field.LIQUIDITY, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.LIQUIDITY, typedValue), + [onUserInput] ) const onCurrencyAInput = useCallback( - (typedValue: string): void => onUserInput(Field.CURRENCY_A, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.CURRENCY_A, typedValue), + [onUserInput] ) const onCurrencyBInput = useCallback( - (typedValue: string): void => onUserInput(Field.CURRENCY_B, typedValue), - [onUserInput] + (typedValue: string): void => onUserInput(Field.CURRENCY_B, typedValue), + [onUserInput] ) // tx sending @@ -236,18 +236,18 @@ export default function RemoveLiquidity() { } const safeGasEstimates: (BigNumber | undefined)[] = await Promise.all( - methodNames.map((methodName) => - router.estimateGas[methodName](...args) - .then((estimateGas) => calculateGasMargin(estimateGas)) - .catch((error) => { - console.error(`estimateGas failed`, methodName, args, error) - return undefined - }) - ) + methodNames.map((methodName) => + router.estimateGas[methodName](...args) + .then((estimateGas) => calculateGasMargin(estimateGas)) + .catch((error) => { + console.error(`estimateGas failed`, methodName, args, error) + return undefined + }) + ) ) const indexOfSuccessfulEstimation = safeGasEstimates.findIndex((safeGasEstimate) => - BigNumber.isBigNumber(safeGasEstimate) + BigNumber.isBigNumber(safeGasEstimate) ) // all estimations failed... @@ -261,162 +261,162 @@ export default function RemoveLiquidity() { await router[methodName](...args, { gasLimit: safeGasEstimate, }) - .then((response: TransactionResponse) => { - setAttemptingTxn(false) - - addTransaction(response, { - type: TransactionType.REMOVE_LIQUIDITY_V3, - baseCurrencyId: currencyId(currencyA), - quoteCurrencyId: currencyId(currencyB), - expectedAmountBaseRaw: parsedAmounts[Field.CURRENCY_A]?.quotient.toString() ?? '0', - expectedAmountQuoteRaw: parsedAmounts[Field.CURRENCY_B]?.quotient.toString() ?? '0', - }) - - setTxHash(response.hash) - - sendEvent({ - category: 'Liquidity', - action: 'Remove', - label: [currencyA.symbol, currencyB.symbol].join('/'), - }) + .then((response: TransactionResponse) => { + setAttemptingTxn(false) + + addTransaction(response, { + type: TransactionType.REMOVE_LIQUIDITY_V3, + baseCurrencyId: currencyId(currencyA), + quoteCurrencyId: currencyId(currencyB), + expectedAmountBaseRaw: parsedAmounts[Field.CURRENCY_A]?.quotient.toString() ?? '0', + expectedAmountQuoteRaw: parsedAmounts[Field.CURRENCY_B]?.quotient.toString() ?? '0', }) - .catch((error: Error) => { - setAttemptingTxn(false) - // we only care if the error is something _other_ than the user rejected the tx - console.error(error) + + setTxHash(response.hash) + + sendEvent({ + category: 'Liquidity', + action: 'Remove', + label: [currencyA.symbol, currencyB.symbol].join('/'), }) + }) + .catch((error: Error) => { + setAttemptingTxn(false) + // we only care if the error is something _other_ than the user rejected the tx + console.error(error) + }) } } function modalHeader() { return ( - - - - {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} + + + + {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} + + + + + {currencyA?.symbol} - - - - {currencyA?.symbol} - - - - - - - - {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} + + + + + + + {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} + + + + + {currencyB?.symbol} - - - - {currencyB?.symbol} - - - - - - - Output is estimated. If the price changes by more than {allowedSlippage.toSignificant(4)}% your transaction - will revert. - - - + + + + + + Output is estimated. If the price changes by more than {allowedSlippage.toSignificant(4)}% your transaction + will revert. + + + ) } function modalBottom() { return ( - <> - - - - UNI {currencyA?.symbol}/{currencyB?.symbol} Burned - + <> + + + + UNI {currencyA?.symbol}/{currencyB?.symbol} Burned + + + + + + {parsedAmounts[Field.LIQUIDITY]?.toSignificant(6)} - - - - {parsedAmounts[Field.LIQUIDITY]?.toSignificant(6)} + + + {pair && ( + <> + + + Price - - - {pair && ( - <> - - - Price - - - 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} - - - -
- - 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} - - - - )} - - - Confirm - - - + + 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} + + + +
+ + 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} + + + + )} + + + Confirm + + + ) } const pendingText = ( - - Removing {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} {currencyA?.symbol} and - {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} {currencyB?.symbol} - + + Removing {parsedAmounts[Field.CURRENCY_A]?.toSignificant(6)} {currencyA?.symbol} and + {parsedAmounts[Field.CURRENCY_B]?.toSignificant(6)} {currencyB?.symbol} + ) const liquidityPercentChangeCallback = useCallback( - (value: number) => { - onUserInput(Field.LIQUIDITY_PERCENT, value.toString()) - }, - [onUserInput] + (value: number) => { + onUserInput(Field.LIQUIDITY_PERCENT, value.toString()) + }, + [onUserInput] ) const oneCurrencyIsETH = currencyA?.isNative || currencyB?.isNative const oneCurrencyIsWETH = Boolean( - chainId && + chainId && WRAPPED_NATIVE_CURRENCY[chainId] && ((currencyA && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyA)) || - (currencyB && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyB))) + (currencyB && WRAPPED_NATIVE_CURRENCY[chainId]?.equals(currencyB))) ) const handleSelectCurrencyA = useCallback( - (currency: Currency) => { - if (currencyIdB && currencyId(currency) === currencyIdB) { - navigate(`/remove/v2/${currencyId(currency)}/${currencyIdA}`) - } else { - navigate(`/remove/v2/${currencyId(currency)}/${currencyIdB}`) - } - }, - [currencyIdA, currencyIdB, navigate] + (currency: Currency) => { + if (currencyIdB && currencyId(currency) === currencyIdB) { + navigate(`/remove/v2/${currencyId(currency)}/${currencyIdA}`) + } else { + navigate(`/remove/v2/${currencyId(currency)}/${currencyIdB}`) + } + }, + [currencyIdA, currencyIdB, navigate] ) const handleSelectCurrencyB = useCallback( - (currency: Currency) => { - if (currencyIdA && currencyId(currency) === currencyIdA) { - navigate(`/remove/v2/${currencyIdB}/${currencyId(currency)}`) - } else { - navigate(`/remove/v2/${currencyIdA}/${currencyId(currency)}`) - } - }, - [currencyIdA, currencyIdB, navigate] + (currency: Currency) => { + if (currencyIdA && currencyId(currency) === currencyIdA) { + navigate(`/remove/v2/${currencyIdB}/${currencyId(currency)}`) + } else { + navigate(`/remove/v2/${currencyIdA}/${currencyId(currency)}`) + } + }, + [currencyIdA, currencyIdB, navigate] ) const handleDismissConfirmation = useCallback(() => { @@ -429,259 +429,259 @@ export default function RemoveLiquidity() { }, [onUserInput, txHash]) const [innerLiquidityPercentage, setInnerLiquidityPercentage] = useDebouncedChangeHandler( - Number.parseInt(parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0)), - liquidityPercentChangeCallback + Number.parseInt(parsedAmounts[Field.LIQUIDITY_PERCENT].toFixed(0)), + liquidityPercentChangeCallback ) return ( - <> - - - - + + + + ( + You will receive} onDismiss={handleDismissConfirmation} - attemptingTxn={attemptingTxn} - hash={txHash ? txHash : ''} - content={() => ( - You will receive} - onDismiss={handleDismissConfirmation} - topContent={modalHeader} - bottomContent={modalBottom} - /> - )} - pendingText={pendingText} - /> - - - - - - Tip: Removing pool tokens converts your position back into underlying tokens at the current - rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive. - - - - - - - - - Remove Amount - - { - setShowDetailed(!showDetailed) - }} - > - {showDetailed ? Simple : Detailed} - - - - - {formattedAmounts[Field.LIQUIDITY_PERCENT]}% - - - {!showDetailed && ( - <> - - - onUserInput(Field.LIQUIDITY_PERCENT, '25')} width="20%"> - 25% - - onUserInput(Field.LIQUIDITY_PERCENT, '50')} width="20%"> - 50% - - onUserInput(Field.LIQUIDITY_PERCENT, '75')} width="20%"> - 75% - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} width="20%"> - Max - - - - )} - - - {!showDetailed && ( - <> - - - - - - - - {formattedAmounts[Field.CURRENCY_A] || '-'} - - - - - {currencyA?.symbol} - - - - - - {formattedAmounts[Field.CURRENCY_B] || '-'} - - - - - {currencyB?.symbol} - - - - {chainId && (oneCurrencyIsWETH || oneCurrencyIsETH) ? ( - - {oneCurrencyIsETH ? ( - - Receive WETH - - ) : oneCurrencyIsWETH ? ( - - Receive ETH - - ) : null} - - ) : null} - - - - )} - - {showDetailed && ( + topContent={modalHeader} + bottomContent={modalBottom} + /> + )} + pendingText={pendingText} + /> + + + + + + Tip: Removing pool tokens converts your position back into underlying tokens at the current + rate, proportional to your share of the pool. Accrued fees are included in the amounts you receive. + + + + + + + + + Remove Amount + + { + setShowDetailed(!showDetailed) + }} + > + {showDetailed ? Simple : Detailed} + + + + + {formattedAmounts[Field.LIQUIDITY_PERCENT]}% + + + {!showDetailed && ( <> - { - onUserInput(Field.LIQUIDITY_PERCENT, '100') - }} - showMaxButton={!atMaxAmount} - currency={pair?.liquidityToken} - pair={pair} - id="liquidity-amount" - /> - - - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} - showMaxButton={!atMaxAmount} - currency={currencyA} - label={'Output'} - onCurrencySelect={handleSelectCurrencyA} - id="remove-liquidity-tokena" - /> - - - - onUserInput(Field.LIQUIDITY_PERCENT, '100')} - showMaxButton={!atMaxAmount} - currency={currencyB} - label={'Output'} - onCurrencySelect={handleSelectCurrencyB} - id="remove-liquidity-tokenb" - /> - - )} - {pair && ( -
+ - Price: -
- 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} -
+ onUserInput(Field.LIQUIDITY_PERCENT, '25')} width="20%"> + 25% + + onUserInput(Field.LIQUIDITY_PERCENT, '50')} width="20%"> + 50% + + onUserInput(Field.LIQUIDITY_PERCENT, '75')} width="20%"> + 75% + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} width="20%"> + Max +
+ + )} + + + {!showDetailed && ( + <> + + + + + -
-
- 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} -
+ + {formattedAmounts[Field.CURRENCY_A] || '-'} + + + + + {currencyA?.symbol} + + -
- )} -
- {!account ? ( - - - Connect Wallet - - - ) : ( - - {approval === ApprovalState.PENDING ? ( - - Approving - - ) : approval === ApprovalState.APPROVED || signatureData !== null ? ( - Approved - ) : ( - Approve - )} - - { - setShowConfirm(true) - }} - disabled={!isValid || (signatureData === null && approval !== ApprovalState.APPROVED)} - error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]} - > - - {error || Remove} + + {formattedAmounts[Field.CURRENCY_B] || '-'} + + + + + {currencyB?.symbol} - + - )} + {chainId && (oneCurrencyIsWETH || oneCurrencyIsETH) ? ( + + {oneCurrencyIsETH ? ( + + Receive WETH + + ) : oneCurrencyIsWETH ? ( + + Receive ETH + + ) : null} + + ) : null} + + + + )} + + {showDetailed && ( + <> + { + onUserInput(Field.LIQUIDITY_PERCENT, '100') + }} + showMaxButton={!atMaxAmount} + currency={pair?.liquidityToken} + pair={pair} + id="liquidity-amount" + /> + + + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} + showMaxButton={!atMaxAmount} + currency={currencyA} + label={'Output'} + onCurrencySelect={handleSelectCurrencyA} + id="remove-liquidity-tokena" + /> + + + + onUserInput(Field.LIQUIDITY_PERCENT, '100')} + showMaxButton={!atMaxAmount} + currency={currencyB} + label={'Output'} + onCurrencySelect={handleSelectCurrencyB} + id="remove-liquidity-tokenb" + /> + + )} + {pair && ( +
+ + Price: +
+ 1 {currencyA?.symbol} = {tokenA ? pair.priceOf(tokenA).toSignificant(6) : '-'} {currencyB?.symbol} +
+
+ +
+
+ 1 {currencyB?.symbol} = {tokenB ? pair.priceOf(tokenB).toSignificant(6) : '-'} {currencyA?.symbol} +
+
- - - - - {pair ? ( - - - - ) : null} - + )} +
+ {!account ? ( + + + Connect Wallet + + + ) : ( + + + {approval === ApprovalState.PENDING ? ( + + Approving + + ) : approval === ApprovalState.APPROVED || signatureData !== null ? ( + Approved + ) : ( + Approve + )} + + { + setShowConfirm(true) + }} + disabled={!isValid || (signatureData === null && approval !== ApprovalState.APPROVED)} + error={!isValid && !!parsedAmounts[Field.CURRENCY_A] && !!parsedAmounts[Field.CURRENCY_B]} + > + + {error || Remove} + + + + )} +
+ + + + + {pair ? ( + + + + ) : null} + ) } From 44945e01a9d8c4eb56c2bc6fe6b40ad7969e53d2 Mon Sep 17 00:00:00 2001 From: xz Date: Tue, 27 Sep 2022 20:38:24 +0800 Subject: [PATCH 10/15] replace logo and fix bugs --- public/favicon.png | Bin 2668 -> 9696 bytes public/index.html | 8 +++---- src/assets/svg/logo.svg | 30 +++++++++++++++------------ src/components/Menu/index.tsx | 16 +++++++------- src/constants/lists.ts | 11 +++++----- src/lib/hooks/useCurrencyLogoURIs.ts | 8 +++++-- 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/public/favicon.png b/public/favicon.png index 47c6e1fa490d6d22833cf07850cd507ddf2ae559..b4ac588fc926f5ce241ea5417405e6653e8f62fa 100644 GIT binary patch literal 9696 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 T;T!nFtp>2ZU~f@v=1uw!@aGLY diff --git a/public/index.html b/public/index.html index 1974dddfd54..7b2b3fcb0ec 100644 --- a/public/index.html +++ b/public/index.html @@ -3,16 +3,16 @@ - Uniswap Interface + Ethereum Fair Dex - - - + + + diff --git a/src/assets/svg/logo.svg b/src/assets/svg/logo.svg index d93197e48b7..c0de1be3165 100644 --- a/src/assets/svg/logo.svg +++ b/src/assets/svg/logo.svg @@ -1,13 +1,17 @@ - - - - - - - - - - - - - + + + ETHF + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx index 54cfd89c855..729616e39d6 100644 --- a/src/components/Menu/index.tsx +++ b/src/components/Menu/index.tsx @@ -16,7 +16,7 @@ import { // FileText, Flag, Globe, - HelpCircle, + // HelpCircle, // Info, MessageCircle, Moon, @@ -252,19 +252,19 @@ export default function Menu() { {/*
*/} {/* */} {/**/} - -
- Help Center -
- -
+ {/**/} + {/*
*/} + {/* Help Center*/} + {/*
*/} + {/* */} + {/*
*/} {/**/} {/*
*/} {/* Request Features*/} {/*
*/} {/* */} {/*
*/} - +
Discord
diff --git a/src/constants/lists.ts b/src/constants/lists.ts index 31e01c11948..a4c83556c5e 100644 --- a/src/constants/lists.ts +++ b/src/constants/lists.ts @@ -10,7 +10,7 @@ const KLEROS_LIST = 't2crtokens.eth' const ROLL_LIST = 'https://app.tryroll.com/tokens.json' const SET_LIST = 'https://raw.githubusercontent.com/SetProtocol/uniswap-tokenlist/main/set.tokenlist.json' const WRAPPED_LIST = 'wrapped.tokensoft.eth' - +const ETHF_LIST = 'https://gateway.pinata.cloud/ipfs/QmdtYPXnT5CJXVuWuVpbHqh84bZJmTcQmkG43zya6WUdKY' export const OPTIMISM_LIST = 'https://static.optimism.io/optimism.tokenlist.json' export const ARBITRUM_LIST = 'https://bridge.arbitrum.io/token-list-42161.json' export const CELO_LIST = 'https://celo-org.github.io/celo-token-list/celo.tokenlist.json' @@ -20,8 +20,8 @@ export const UNSUPPORTED_LIST_URLS: string[] = [] // this is the default list of lists that are exposed to users // lower index == higher priority for token import const DEFAULT_LIST_OF_LISTS_TO_DISPLAY: string[] = [ - // UNI_LIST, - // UNI_EXTENDED_LIST, + UNI_LIST, + UNI_EXTENDED_LIST, // COMPOUND_LIST, // AAVE_LIST, // CMC_ALL_LIST, @@ -34,12 +34,13 @@ const DEFAULT_LIST_OF_LISTS_TO_DISPLAY: string[] = [ // ARBITRUM_LIST, // OPTIMISM_LIST, // CELO_LIST, + ETHF_LIST, ] export const DEFAULT_LIST_OF_LISTS: string[] = [ - // ...DEFAULT_LIST_OF_LISTS_TO_DISPLAY, + ...DEFAULT_LIST_OF_LISTS_TO_DISPLAY, // ...UNSUPPORTED_LIST_URLS, // need to load dynamic unsupported tokens as well ] // default lists to be 'active' aka searched across -export const DEFAULT_ACTIVE_LIST_URLS: string[] = [] +export const DEFAULT_ACTIVE_LIST_URLS: string[] = [ETHF_LIST] diff --git a/src/lib/hooks/useCurrencyLogoURIs.ts b/src/lib/hooks/useCurrencyLogoURIs.ts index 686d3c3aa97..e4635e4dafe 100644 --- a/src/lib/hooks/useCurrencyLogoURIs.ts +++ b/src/lib/hooks/useCurrencyLogoURIs.ts @@ -4,10 +4,10 @@ import useHttpLocations from 'hooks/useHttpLocations' import { useMemo } from 'react' import { WrappedTokenInfo } from 'state/lists/wrappedTokenInfo' -import EthereumLogo from '../../assets/images/ethereum-logo.png' +import EthereumLogo from '../../assets/images/etf-logo.png' import CeloLogo from '../../assets/svg/celo_logo.svg' import MaticLogo from '../../assets/svg/matic-token-icon.svg' -import { isCelo, nativeOnChain } from '../../constants/tokens' +import { isCelo, nativeOnChain, WRAPPED_NATIVE_CURRENCY } from '../../constants/tokens' type Network = 'ethereum' | 'arbitrum' | 'optimism' | 'polygon' @@ -42,6 +42,9 @@ export function getNativeLogoURI(chainId: SupportedChainId = SupportedChainId.MA function getTokenLogoURI(address: string, chainId: SupportedChainId = SupportedChainId.MAINNET): string | void { const networkName = chainIdToNetworkName(chainId) const networksWithUrls = [SupportedChainId.ARBITRUM_ONE, SupportedChainId.MAINNET, SupportedChainId.OPTIMISM] + if (address == WRAPPED_NATIVE_CURRENCY[chainId]?.address) { + return EthereumLogo + } if (networksWithUrls.includes(chainId)) { return `https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/${networkName}/assets/${address}/logo.png` } @@ -56,6 +59,7 @@ function getTokenLogoURI(address: string, chainId: SupportedChainId = SupportedC export default function useCurrencyLogoURIs(currency?: Currency | null): string[] { const locations = useHttpLocations(currency instanceof WrappedTokenInfo ? currency.logoURI : undefined) + console.log('locations ', currency, locations) return useMemo(() => { const logoURIs = [...locations] if (currency) { From b8b316235d0107d97cc554a976ad3ffcbf444271 Mon Sep 17 00:00:00 2001 From: FranckStone Date: Tue, 27 Sep 2022 21:50:25 +0800 Subject: [PATCH 11/15] update eslint --- src/constants/chainInfo.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/constants/chainInfo.ts b/src/constants/chainInfo.ts index 56703bab134..6629ca2f7b2 100644 --- a/src/constants/chainInfo.ts +++ b/src/constants/chainInfo.ts @@ -12,7 +12,6 @@ import { colorsDark } from 'theme/colors' import { SupportedChainId, SupportedL1ChainId, SupportedL2ChainId } from './chains' import { ARBITRUM_LIST, CELO_LIST, OPTIMISM_LIST } from './lists' - export enum NetworkType { L1, L2, From e609ecce23fce8d9a5a5a5cd610c244151d5c924 Mon Sep 17 00:00:00 2001 From: xz Date: Wed, 28 Sep 2022 09:49:57 +0800 Subject: [PATCH 12/15] fix bugs --- package.json | 1 + .../routing/clientSideSmartOrderRouter.ts | 4 +- src/state/routing/slice.ts | 48 +++++++++---------- src/state/routing/useRoutingAPITrade.ts | 2 +- .../transformSwapRouteToGetQuoteResult.ts | 2 +- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 6ed584a4143..11a362957f8 100644 --- a/package.json +++ b/package.json @@ -176,6 +176,7 @@ "copy-to-clipboard": "^3.2.0", "d3": "^7.6.1", "ethers": "^5.1.4", + "ethf-smart-order-router": "^2.14.3", "firebase": "^9.1.3", "focus-visible": "^5.2.0", "get-graphql-schema": "^2.1.2", diff --git a/src/lib/hooks/routing/clientSideSmartOrderRouter.ts b/src/lib/hooks/routing/clientSideSmartOrderRouter.ts index 44ec7cb3056..7e19a6f2a10 100644 --- a/src/lib/hooks/routing/clientSideSmartOrderRouter.ts +++ b/src/lib/hooks/routing/clientSideSmartOrderRouter.ts @@ -1,8 +1,8 @@ import { BigintIsh, CurrencyAmount, Token, TradeType } from '@uniswap/sdk-core' +import { SupportedChainId } from 'constants/chains' // This file is lazy-loaded, so the import of smart-order-router is intentional. // eslint-disable-next-line no-restricted-imports -import { AlphaRouter, AlphaRouterConfig, ChainId } from '@uniswap/smart-order-router' -import { SupportedChainId } from 'constants/chains' +import { AlphaRouter, AlphaRouterConfig, ChainId } from 'ethf-smart-order-router' import JSBI from 'jsbi' import { GetQuoteResult } from 'state/routing/types' import { transformSwapRouteToGetQuoteResult } from 'utils/transformSwapRouteToGetQuoteResult' diff --git a/src/state/routing/slice.ts b/src/state/routing/slice.ts index fa728c1d4ab..be5ad0d6786 100644 --- a/src/state/routing/slice.ts +++ b/src/state/routing/slice.ts @@ -1,11 +1,11 @@ import { createApi, fetchBaseQuery, FetchBaseQueryError } from '@reduxjs/toolkit/query/react' import { Protocol } from '@uniswap/router-sdk' -import { AlphaRouter, ChainId } from '@uniswap/smart-order-router' import { RPC_PROVIDERS } from 'constants/networks' +import { AlphaRouter, ChainId } from 'ethf-smart-order-router' import { getClientSideQuote, toSupportedChainId } from 'lib/hooks/routing/clientSideSmartOrderRouter' import ms from 'ms.macro' -import qs from 'qs' +// import qs from 'qs' import { GetQuoteResult } from './types' export enum RouterPreference { @@ -85,7 +85,7 @@ export const routingApi = createApi({ routerPreference: RouterPreference type: 'exactIn' | 'exactOut' } - >({ + >({ async queryFn(args, _api, _extraOptions, fetch) { const { tokenInAddress, tokenInChainId, tokenOutAddress, tokenOutChainId, amount, routerPreference, type } = args @@ -93,27 +93,27 @@ export const routingApi = createApi({ let result try { - if (routerPreference === RouterPreference.API) { - const query = qs.stringify({ - ...API_QUERY_PARAMS, - tokenInAddress, - tokenInChainId, - tokenOutAddress, - tokenOutChainId, - amount, - type, - }) - result = await fetch(`quote?${query}`) - } else { - const router = getRouter(args.tokenInChainId) - result = await getClientSideQuote( - args, - router, - // TODO(zzmp): Use PRICE_PARAMS for RouterPreference.PRICE. - // This change is intentionally being deferred to first see what effect router caching has. - CLIENT_PARAMS - ) - } + // if (routerPreference === RouterPreference.API) { + // const query = qs.stringify({ + // ...API_QUERY_PARAMS, + // tokenInAddress, + // tokenInChainId, + // tokenOutAddress, + // tokenOutChainId, + // amount, + // type, + // }) + // result = await fetch(`quote?${query}`) + // } else { + const router = getRouter(args.tokenInChainId) + result = await getClientSideQuote( + args, + router, + // TODO(zzmp): Use PRICE_PARAMS for RouterPreference.PRICE. + // This change is intentionally being deferred to first see what effect router caching has. + CLIENT_PARAMS + ) + // } return { data: result.data as GetQuoteResult } } catch (e) { diff --git a/src/state/routing/useRoutingAPITrade.ts b/src/state/routing/useRoutingAPITrade.ts index 5b1482e7158..a1a4c5dae77 100644 --- a/src/state/routing/useRoutingAPITrade.ts +++ b/src/state/routing/useRoutingAPITrade.ts @@ -1,7 +1,7 @@ import { skipToken } from '@reduxjs/toolkit/query/react' import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core' -import { IMetric, MetricLoggerUnit, setGlobalMetric } from '@uniswap/smart-order-router' import { sendTiming } from 'components/analytics' +import { IMetric, MetricLoggerUnit, setGlobalMetric } from 'ethf-smart-order-router' import { useStablecoinAmountFromFiatValue } from 'hooks/useStablecoinPrice' import { useRoutingAPIArguments } from 'lib/hooks/routing/useRoutingAPIArguments' import useIsValidBlock from 'lib/hooks/useIsValidBlock' diff --git a/src/utils/transformSwapRouteToGetQuoteResult.ts b/src/utils/transformSwapRouteToGetQuoteResult.ts index 6a1d8502ec7..b873f479703 100644 --- a/src/utils/transformSwapRouteToGetQuoteResult.ts +++ b/src/utils/transformSwapRouteToGetQuoteResult.ts @@ -1,7 +1,7 @@ import { Protocol } from '@uniswap/router-sdk' import { Currency, CurrencyAmount } from '@uniswap/sdk-core' -import { routeAmountsToString, SwapRoute } from '@uniswap/smart-order-router' import { Pool } from '@uniswap/v3-sdk' +import { routeAmountsToString, SwapRoute } from 'ethf-smart-order-router' import { GetQuoteResult, V2PoolInRoute, V3PoolInRoute } from 'state/routing/types' // from routing-api (https://github.com/Uniswap/routing-api/blob/main/lib/handlers/quote/quote.ts#L243-L311) From 7f2f3cf270e49e524ba912314bffb6ade471d3f4 Mon Sep 17 00:00:00 2001 From: FranckStone Date: Wed, 28 Sep 2022 10:19:58 +0800 Subject: [PATCH 13/15] update eslint --- src/state/routing/slice.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/routing/slice.ts b/src/state/routing/slice.ts index be5ad0d6786..c76df1a33a9 100644 --- a/src/state/routing/slice.ts +++ b/src/state/routing/slice.ts @@ -85,7 +85,7 @@ export const routingApi = createApi({ routerPreference: RouterPreference type: 'exactIn' | 'exactOut' } - >({ + >({ async queryFn(args, _api, _extraOptions, fetch) { const { tokenInAddress, tokenInChainId, tokenOutAddress, tokenOutChainId, amount, routerPreference, type } = args From 9aa97e4555a47bc77b3b8999172e8db9c87ac239 Mon Sep 17 00:00:00 2001 From: xz Date: Wed, 28 Sep 2022 16:29:19 +0800 Subject: [PATCH 14/15] fix bugs --- src/pages/MigrateV2/MigrateV2Pair.tsx | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/pages/MigrateV2/MigrateV2Pair.tsx b/src/pages/MigrateV2/MigrateV2Pair.tsx index b0edd64ddd5..3b88e2fd967 100644 --- a/src/pages/MigrateV2/MigrateV2Pair.tsx +++ b/src/pages/MigrateV2/MigrateV2Pair.tsx @@ -243,21 +243,21 @@ function V2PairMigration({ const isArgentWallet = useIsArgentWallet() const approve = useCallback(async () => { - if (isNotUniswap || isArgentWallet) { - // sushi has to be manually approved - await approveManually() - } else if (gatherPermitSignature) { - try { - await gatherPermitSignature() - } catch (error) { - // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it - if (error?.code !== 4001) { - await approveManually() - } - } - } else { - await approveManually() - } + // if (isNotUniswap || isArgentWallet) { + // // sushi has to be manually approved + // await approveManually() + // } else if (gatherPermitSignature) { + // try { + // await gatherPermitSignature() + // } catch (error) { + // // try to approve if gatherPermitSignature failed for any reason other than the user rejecting it + // if (error?.code !== 4001) { + // await approveManually() + // } + // } + // } else { + await approveManually() + // } }, [isNotUniswap, isArgentWallet, gatherPermitSignature, approveManually]) const addTransaction = useTransactionAdder() From 1fa177ed3b6756ddf9f1bca4d4db9c5a949ea2d3 Mon Sep 17 00:00:00 2001 From: FranckStone Date: Wed, 28 Sep 2022 17:39:53 +0800 Subject: [PATCH 15/15] update list --- src/constants/lists.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/lists.ts b/src/constants/lists.ts index a4c83556c5e..044d49db6ea 100644 --- a/src/constants/lists.ts +++ b/src/constants/lists.ts @@ -1,4 +1,4 @@ -export const UNI_LIST = 'https://tokens.uniswap.org' +export const UNI_LIST = 'https://tokens.etherfair.org' export const UNI_EXTENDED_LIST = 'https://gateway.pinata.cloud/ipfs/QmaQvV3pWKKaWJcHvSBuvQMrpckV3KKtGJ6p3HZjakwFtX' const AAVE_LIST = 'tokenlist.aave.eth' const BA_LIST = 'https://raw.githubusercontent.com/The-Blockchain-Association/sec-notice-list/master/ba-sec-list.json'