Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b08bb7eaff | ||
|
|
3a36ac5538 | ||
|
|
2962cd0e14 |
18
.github/workflows/release.yaml
vendored
18
.github/workflows/release.yaml
vendored
@@ -59,15 +59,15 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
cidv0: ${{ steps.upload.outputs.hash }}
|
cidv0: ${{ steps.upload.outputs.hash }}
|
||||||
|
|
||||||
# - name: Update DNS with new IPFS hash
|
- name: Update DNS with new IPFS hash
|
||||||
# env:
|
env:
|
||||||
# CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
||||||
# RECORD_DOMAIN: 'uniswap.org'
|
RECORD_DOMAIN: 'uniswap.org'
|
||||||
# RECORD_NAME: '_dnslink.app'
|
RECORD_NAME: '_dnslink.app'
|
||||||
# CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
|
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
|
||||||
# uses: textileio/cloudflare-update-dnslink@0fe7b7a1ffc865db3a4da9773f0f987447ad5848
|
uses: textileio/cloudflare-update-dnslink@0fe7b7a1ffc865db3a4da9773f0f987447ad5848
|
||||||
# with:
|
with:
|
||||||
# cid: ${{ steps.upload.outputs.hash }}
|
cid: ${{ steps.upload.outputs.hash }}
|
||||||
|
|
||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
id: create_release
|
id: create_release
|
||||||
|
|||||||
8
cypress/integration/migrate-v1.test.ts
Normal file
8
cypress/integration/migrate-v1.test.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
describe('Migrate V1 Liquidity', () => {
|
||||||
|
describe('Remove V1 liquidity', () => {
|
||||||
|
it('renders the correct page', () => {
|
||||||
|
cy.visit('/remove/v1/0x93bB63aFe1E0180d0eF100D774B473034fd60C36')
|
||||||
|
cy.get('#remove-v1-exchange').should('contain', 'MKR/ETH')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -80,11 +80,11 @@ export default function App() {
|
|||||||
<Route exact path="/add" component={AddLiquidity} />
|
<Route exact path="/add" component={AddLiquidity} />
|
||||||
<Route exact path="/add/:currencyIdA" component={RedirectOldAddLiquidityPathStructure} />
|
<Route exact path="/add/:currencyIdA" component={RedirectOldAddLiquidityPathStructure} />
|
||||||
<Route exact path="/add/:currencyIdA/:currencyIdB" component={RedirectDuplicateTokenIds} />
|
<Route exact path="/add/:currencyIdA/:currencyIdB" component={RedirectDuplicateTokenIds} />
|
||||||
|
<Route exact strict path="/remove/v1/:address" component={RemoveV1Exchange} />
|
||||||
<Route exact strict path="/remove/:tokens" component={RedirectOldRemoveLiquidityPathStructure} />
|
<Route exact strict path="/remove/:tokens" component={RedirectOldRemoveLiquidityPathStructure} />
|
||||||
<Route exact strict path="/remove/:currencyIdA/:currencyIdB" component={RemoveLiquidity} />
|
<Route exact strict path="/remove/:currencyIdA/:currencyIdB" component={RemoveLiquidity} />
|
||||||
<Route exact strict path="/migrate/v1" component={MigrateV1} />
|
<Route exact strict path="/migrate/v1" component={MigrateV1} />
|
||||||
<Route exact strict path="/migrate/v1/:address" component={MigrateV1Exchange} />
|
<Route exact strict path="/migrate/v1/:address" component={MigrateV1Exchange} />
|
||||||
<Route exact strict path="/remove/v1/:address" component={RemoveV1Exchange} />
|
|
||||||
<Route component={RedirectPathToSwapOnly} />
|
<Route component={RedirectPathToSwapOnly} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</Web3ReactManager>
|
</Web3ReactManager>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { TransactionResponse } from '@ethersproject/abstract-provider'
|
import { TransactionResponse } from '@ethersproject/abstract-provider'
|
||||||
import { AddressZero } from '@ethersproject/constants'
|
import { AddressZero } from '@ethersproject/constants'
|
||||||
import { Currency, Fraction, JSBI, Percent, Token, TokenAmount, WETH } from '@uniswap/sdk'
|
import { Currency, CurrencyAmount, Fraction, JSBI, Percent, Token, TokenAmount, WETH } from '@uniswap/sdk'
|
||||||
import React, { useCallback, useMemo, useState } from 'react'
|
import React, { useCallback, useMemo, useState } from 'react'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
import { Redirect, RouteComponentProps } from 'react-router'
|
import { Redirect, RouteComponentProps } from 'react-router'
|
||||||
@@ -28,21 +28,21 @@ import { getEtherscanLink, isAddress } from '../../utils'
|
|||||||
import { BodyWrapper } from '../AppBody'
|
import { BodyWrapper } from '../AppBody'
|
||||||
import { EmptyState } from './EmptyState'
|
import { EmptyState } from './EmptyState'
|
||||||
|
|
||||||
const POOL_TOKEN_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000))
|
const POOL_CURRENCY_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000))
|
||||||
const WEI_DENOM = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18))
|
const WEI_DENOM = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18))
|
||||||
const ZERO = JSBI.BigInt(0)
|
const ZERO = JSBI.BigInt(0)
|
||||||
const ONE = JSBI.BigInt(1)
|
const ONE = JSBI.BigInt(1)
|
||||||
const ZERO_FRACTION = new Fraction(ZERO, ONE)
|
const ZERO_FRACTION = new Fraction(ZERO, ONE)
|
||||||
const ALLOWED_OUTPUT_MIN_PERCENT = new Percent(JSBI.BigInt(10000 - INITIAL_ALLOWED_SLIPPAGE), JSBI.BigInt(10000))
|
const ALLOWED_OUTPUT_MIN_PERCENT = new Percent(JSBI.BigInt(10000 - INITIAL_ALLOWED_SLIPPAGE), JSBI.BigInt(10000))
|
||||||
|
|
||||||
function FormattedPoolTokenAmount({ tokenAmount }: { tokenAmount: TokenAmount }) {
|
function FormattedPoolCurrencyAmount({ currencyAmount }: { currencyAmount: CurrencyAmount }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{tokenAmount.equalTo(JSBI.BigInt(0))
|
{currencyAmount.equalTo(JSBI.BigInt(0))
|
||||||
? '0'
|
? '0'
|
||||||
: tokenAmount.greaterThan(POOL_TOKEN_AMOUNT_MIN)
|
: currencyAmount.greaterThan(POOL_CURRENCY_AMOUNT_MIN)
|
||||||
? tokenAmount.toSignificant(4)
|
? currencyAmount.toSignificant(4)
|
||||||
: `<${POOL_TOKEN_AMOUNT_MIN.toSignificant(1)}`}
|
: `<${POOL_CURRENCY_AMOUNT_MIN.toSignificant(1)}`}
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ export function V1LiquidityInfo({
|
|||||||
token: Token
|
token: Token
|
||||||
liquidityTokenAmount: TokenAmount
|
liquidityTokenAmount: TokenAmount
|
||||||
tokenWorth: TokenAmount
|
tokenWorth: TokenAmount
|
||||||
ethWorth: Fraction
|
ethWorth: CurrencyAmount
|
||||||
}) {
|
}) {
|
||||||
const { chainId } = useActiveWeb3React()
|
const { chainId } = useActiveWeb3React()
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ export function V1LiquidityInfo({
|
|||||||
<CurrencyLogo size="24px" currency={token} />
|
<CurrencyLogo size="24px" currency={token} />
|
||||||
<div style={{ marginLeft: '.75rem' }}>
|
<div style={{ marginLeft: '.75rem' }}>
|
||||||
<TYPE.mediumHeader>
|
<TYPE.mediumHeader>
|
||||||
{<FormattedPoolTokenAmount tokenAmount={liquidityTokenAmount} />}{' '}
|
{<FormattedPoolCurrencyAmount currencyAmount={liquidityTokenAmount} />}{' '}
|
||||||
{token.equals(WETH[chainId]) ? 'WETH' : token.symbol}/ETH
|
{token.equals(WETH[chainId]) ? 'WETH' : token.symbol}/ETH
|
||||||
</TYPE.mediumHeader>
|
</TYPE.mediumHeader>
|
||||||
</div>
|
</div>
|
||||||
@@ -89,7 +89,7 @@ export function V1LiquidityInfo({
|
|||||||
</Text>
|
</Text>
|
||||||
<RowFixed>
|
<RowFixed>
|
||||||
<Text fontSize={16} fontWeight={500} marginLeft={'6px'}>
|
<Text fontSize={16} fontWeight={500} marginLeft={'6px'}>
|
||||||
{ethWorth.toSignificant(4)}
|
<FormattedPoolCurrencyAmount currencyAmount={ethWorth} />
|
||||||
</Text>
|
</Text>
|
||||||
<CurrencyLogo size="20px" style={{ marginLeft: '8px' }} currency={Currency.ETHER} />
|
<CurrencyLogo size="20px" style={{ marginLeft: '8px' }} currency={Currency.ETHER} />
|
||||||
</RowFixed>
|
</RowFixed>
|
||||||
@@ -114,9 +114,9 @@ function V1PairMigration({ liquidityTokenAmount, token }: { liquidityTokenAmount
|
|||||||
|
|
||||||
const shareFraction: Fraction = totalSupply ? new Percent(liquidityTokenAmount.raw, totalSupply.raw) : ZERO_FRACTION
|
const shareFraction: Fraction = totalSupply ? new Percent(liquidityTokenAmount.raw, totalSupply.raw) : ZERO_FRACTION
|
||||||
|
|
||||||
const ethWorth: Fraction = exchangeETHBalance
|
const ethWorth: CurrencyAmount = exchangeETHBalance
|
||||||
? new Fraction(shareFraction.multiply(exchangeETHBalance).quotient, WEI_DENOM)
|
? CurrencyAmount.ether(exchangeETHBalance.multiply(shareFraction).multiply(WEI_DENOM).quotient)
|
||||||
: ZERO_FRACTION
|
: CurrencyAmount.ether(ZERO)
|
||||||
|
|
||||||
const tokenWorth: TokenAmount = exchangeTokenBalance
|
const tokenWorth: TokenAmount = exchangeTokenBalance
|
||||||
? new TokenAmount(token, shareFraction.multiply(exchangeTokenBalance.raw).quotient)
|
? new TokenAmount(token, shareFraction.multiply(exchangeTokenBalance.raw).quotient)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { TransactionResponse } from '@ethersproject/abstract-provider'
|
import { TransactionResponse } from '@ethersproject/abstract-provider'
|
||||||
import { JSBI, Token, TokenAmount, WETH, Fraction, Percent } from '@uniswap/sdk'
|
import { JSBI, Token, TokenAmount, WETH, Fraction, Percent, CurrencyAmount } from '@uniswap/sdk'
|
||||||
import React, { useCallback, useMemo, useState } from 'react'
|
import React, { useCallback, useMemo, useState } from 'react'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
import { Redirect, RouteComponentProps } from 'react-router'
|
import { Redirect, RouteComponentProps } from 'react-router'
|
||||||
@@ -49,9 +49,9 @@ function V1PairRemoval({
|
|||||||
|
|
||||||
const shareFraction: Fraction = totalSupply ? new Percent(liquidityTokenAmount.raw, totalSupply.raw) : ZERO_FRACTION
|
const shareFraction: Fraction = totalSupply ? new Percent(liquidityTokenAmount.raw, totalSupply.raw) : ZERO_FRACTION
|
||||||
|
|
||||||
const ethWorth: Fraction = exchangeETHBalance
|
const ethWorth: CurrencyAmount = exchangeETHBalance
|
||||||
? new Fraction(shareFraction.multiply(exchangeETHBalance).quotient, WEI_DENOM)
|
? CurrencyAmount.ether(exchangeETHBalance.multiply(shareFraction).multiply(WEI_DENOM).quotient)
|
||||||
: ZERO_FRACTION
|
: CurrencyAmount.ether(ZERO)
|
||||||
|
|
||||||
const tokenWorth: TokenAmount = exchangeTokenBalance
|
const tokenWorth: TokenAmount = exchangeTokenBalance
|
||||||
? new TokenAmount(token, shareFraction.multiply(exchangeTokenBalance.raw).quotient)
|
? new TokenAmount(token, shareFraction.multiply(exchangeTokenBalance.raw).quotient)
|
||||||
@@ -154,7 +154,7 @@ export default function RemoveV1Exchange({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BodyWrapper style={{ padding: 24 }}>
|
<BodyWrapper style={{ padding: 24 }} id="remove-v1-exchange">
|
||||||
<AutoColumn gap="16px">
|
<AutoColumn gap="16px">
|
||||||
<AutoRow style={{ alignItems: 'center', justifyContent: 'space-between' }} gap="8px">
|
<AutoRow style={{ alignItems: 'center', justifyContent: 'space-between' }} gap="8px">
|
||||||
<BackArrow to="/migrate/v1" />
|
<BackArrow to="/migrate/v1" />
|
||||||
|
|||||||
Reference in New Issue
Block a user