Commit c2f51f3b authored by Ian Lapham's avatar Ian Lapham Committed by Noah Zinsmeister

create warning and disable add liquidity button for broken tokens (#491)

* create warning and disable add liquidity button for broken tokens

* fix mobile styles
parent 2c856d27
...@@ -83,5 +83,6 @@ ...@@ -83,5 +83,6 @@
"decimals": "Decimals", "decimals": "Decimals",
"enterTokenCont": "Enter a token address to continue", "enterTokenCont": "Enter a token address to continue",
"priceChange": "Expected price slippage", "priceChange": "Expected price slippage",
"forAtLeast": "for at least " "forAtLeast": "for at least ",
"brokenToken": "The selected token is not compatible with Uniswap V1. Adding liquidity will result in locked funds."
} }
...@@ -9,3 +9,10 @@ export const SUPPORTED_THEMES = { ...@@ -9,3 +9,10 @@ export const SUPPORTED_THEMES = {
DARK: 'DARK', DARK: 'DARK',
LIGHT: 'LIGHT' LIGHT: 'LIGHT'
} }
// list of tokens that lock fund on adding liquidity - used to disable button
export const brokenTokens = [
'0xb8c77482e45f1f44de1745f52c74426c631bdd52',
'0x95daaab98046846bf4b2853e23cba236fa394a31',
'0x55296f69f40ea6d20e478533c15a6b08b654e758'
]
...@@ -13,6 +13,7 @@ import ContextualInfo from '../../components/ContextualInfo' ...@@ -13,6 +13,7 @@ import ContextualInfo from '../../components/ContextualInfo'
import { ReactComponent as Plus } from '../../assets/images/plus-blue.svg' import { ReactComponent as Plus } from '../../assets/images/plus-blue.svg'
import { useExchangeContract } from '../../hooks' import { useExchangeContract } from '../../hooks'
import { brokenTokens } from '../../constants'
import { amountFormatter, calculateGasMargin } from '../../utils' import { amountFormatter, calculateGasMargin } from '../../utils'
import { useTransactionAdder } from '../../contexts/Transactions' import { useTransactionAdder } from '../../contexts/Transactions'
import { useTokenDetails } from '../../contexts/Tokens' import { useTokenDetails } from '../../contexts/Tokens'
...@@ -221,6 +222,8 @@ export default function AddLiquidity({ params }) { ...@@ -221,6 +222,8 @@ export default function AddLiquidity({ params }) {
const [inputError, setInputError] = useState() const [inputError, setInputError] = useState()
const [outputError, setOutputError] = useState() const [outputError, setOutputError] = useState()
const [brokenTokenWarning, setBrokenTokenWarning] = useState()
const { symbol, decimals, exchangeAddress } = useTokenDetails(outputCurrency) const { symbol, decimals, exchangeAddress } = useTokenDetails(outputCurrency)
const exchangeContract = useExchangeContract(exchangeAddress) const exchangeContract = useExchangeContract(exchangeAddress)
...@@ -352,8 +355,10 @@ export default function AddLiquidity({ params }) { ...@@ -352,8 +355,10 @@ export default function AddLiquidity({ params }) {
function renderSummary() { function renderSummary() {
let contextualInfo = '' let contextualInfo = ''
let isError = false let isError = false
if (brokenTokenWarning) {
if (inputError || outputError) { contextualInfo = t('brokenToken')
isError = true
} else if (inputError || outputError) {
contextualInfo = inputError || outputError contextualInfo = inputError || outputError
isError = true isError = true
} else if (!inputCurrency || !outputCurrency) { } else if (!inputCurrency || !outputCurrency) {
...@@ -414,7 +419,16 @@ export default function AddLiquidity({ params }) { ...@@ -414,7 +419,16 @@ export default function AddLiquidity({ params }) {
function formatBalance(value) { function formatBalance(value) {
return `Balance: ${value}` return `Balance: ${value}`
} } // check for broken tokens
useEffect(() => {
setBrokenTokenWarning(false)
for (let i = 0; i < brokenTokens.length; i++) {
if (brokenTokens[i].toLowerCase() === outputCurrency.toLowerCase()) {
setBrokenTokenWarning(true)
}
}
}, [outputCurrency])
useEffect(() => { useEffect(() => {
if (isNewExchange) { if (isNewExchange) {
...@@ -552,7 +566,7 @@ export default function AddLiquidity({ params }) { ...@@ -552,7 +566,7 @@ export default function AddLiquidity({ params }) {
}, [outputValueParsed, allowance, t]) }, [outputValueParsed, allowance, t])
const isActive = active && account const isActive = active && account
const isValid = (inputError === null || outputError === null) && !showUnlock const isValid = (inputError === null || outputError === null) && !showUnlock && !brokenTokenWarning
const allBalances = useFetchAllBalances() const allBalances = useFetchAllBalances()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment