Compare commits

..

66 Commits

Author SHA1 Message Date
Zach Pomerantz
377026bca8 fix: summary expando height (#3556) 2022-03-19 17:05:56 -05:00
Zach Pomerantz
9470c49d11 fix: fix loading delays for cached data (#3549)
* fix: loading transition

* fix: add check to usePoll
2022-03-18 11:03:26 -07:00
Ian Lapham
e1abd81a1d fix: add syncing state to trade loading (#3545)
* add syncing state to trade loading

* remove log statement

* update loading state

* update useLast trade logic

* nit fixes
2022-03-18 10:11:16 -07:00
Zach Pomerantz
7d9657867d fix: polling lag (#3543) 2022-03-18 08:52:55 -07:00
Zach Pomerantz
7cc52abb96 fix: cache computed pool addresses (#3537) 2022-03-18 08:00:35 -07:00
Crowdin Bot
5ac41417b0 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-18 00:15:22 +00:00
Zach Pomerantz
2c74c5f2df chore: include usdc in swap info (#3539)
* chore: refactor useComputeSwapInfo to include usdc

* chore: use passed usdc if able

* fix: fixture
2022-03-17 16:51:41 -07:00
Ian Lapham
cbc2ff668e disable swap button if trade not populated (#3542) 2022-03-17 16:26:37 -07:00
Zach Pomerantz
a73f59b4ff fix: only debounce input amounts (#3540) 2022-03-17 15:42:32 -07:00
Zach Pomerantz
7a75626c31 chore: bump to v0.0.25-beta (#3538) 2022-03-17 14:17:58 -07:00
Jordan Frankfurt
a0e14bef10 fix(vote): allow 0-vote proposals to render (#3536) 2022-03-17 15:37:36 -05:00
Yadong Zhang
9b5a53b2e8 fix: typeError: Cannot read properties of undefined (reading 'split') (#3518) 2022-03-17 14:30:13 -04:00
Crowdin Bot
50fdb36b6f chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-17 04:06:49 +00:00
Ian Lapham
b993902c73 remove donation popup (#3532) 2022-03-16 20:42:06 -07:00
Zach Pomerantz
828bf540ba feat: usePoll (#3530)
* feat: usePoll

* chore: comments

* fix: cleanup

* fix: review updates

* fix: lint nits
2022-03-16 14:54:17 -07:00
Zach Pomerantz
7c88a5a008 chore: bump to v0.0.24-beta (#3524) 2022-03-15 22:31:41 -07:00
Zach Pomerantz
360c5e2c96 fix: fallback to eth_accounts in eip1193 bridge (#3516) 2022-03-15 09:42:05 -07:00
Ian Lapham
72678ee667 Update token list (#3520) 2022-03-15 10:53:20 -04:00
Zach Pomerantz
4dd74f2144 fix: token img overflow (#3517) 2022-03-15 08:01:32 -05:00
Zach Pomerantz
e45c104135 fix: computed token img (#3519) 2022-03-15 08:00:46 -05:00
Crowdin Bot
98fcaacd9b chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-15 09:06:57 +00:00
Crowdin Bot
93551579e4 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-14 20:11:46 +00:00
Zach Pomerantz
8a9388ed81 feat: make Expando element (#3515)
* feat: make Expando element

* fix: cleanup

* fix: simplify margin

* fix: summary height

* fix: special case gap transition
2022-03-14 12:03:40 -07:00
Ian Lapham
884bf41da7 fix: add check for undefined slot0 and liquidity call results (#3513)
* add check for undefined slot0 and liquidity call results

* update null check

* update code order
2022-03-14 14:02:03 -04:00
Zach Pomerantz
5b686aea97 fix: exhaustive dep (#3514) 2022-03-14 10:03:19 -07:00
Zach Pomerantz
c4a456a085 chore: simplify Price in its own component (#3508)
* chore: simplify Price in its own component

* fix: restore reversal

* fix: output usdc naming
2022-03-14 09:54:04 -07:00
Zach Pomerantz
4b9098a7bf fix: token button overflow (#3504)
Removes the overflow property from TokenButton, which prevents the vertical scrollbar from rendering.
2022-03-14 09:42:38 -07:00
Zach Pomerantz
71a246f25c fix: expando icon direction (#3507) 2022-03-14 09:42:24 -07:00
Zach Pomerantz
8de048bc84 fix: input amount lag (#3503)
Propagates the exact amount to the trade currency amount without waiting for the trade to be computed. This allows things like insufficient balance or approval to be reflected in the UI while typing, instead of having a lag.
2022-03-13 22:45:14 -07:00
Zach Pomerantz
163e2d5560 fix: override Rule width (#3502)
* fix: override Rule width

* fix: include max-width
2022-03-11 17:26:02 -06:00
Zach Pomerantz
0edb0fe5e2 fix: memoize on-chain results (#3493)
* fix: memo-ize onchain results

* fix: typeof omission
2022-03-11 14:56:05 -08:00
Zach Pomerantz
496408b3db fix: token list fetching performance (#3480)
* fix: token list fetching

* fix: simplify naming
2022-03-11 11:57:49 -08:00
Zach Pomerantz
78b6f5c72d fix: destructure currencies for ref equality (#3498) 2022-03-11 11:25:17 -08:00
Zach Pomerantz
f9fb71a803 fix(perf): cache pools to avoid cost of instantiation (#3499) 2022-03-11 08:20:16 -08:00
Crowdin Bot
59d0046411 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-11 03:07:34 +00:00
Zach Pomerantz
b4e0234d07 fix: avoid summary wrap (#3497) 2022-03-10 15:59:45 -08:00
Zach Pomerantz
4a8dbda0b8 fix: memoize nested components (#3483) 2022-03-10 15:48:45 -08:00
Crowdin Bot
0cbb24c614 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-10 23:06:32 +00:00
Ian Lapham
a9dba258ff fix: update wrap fail state callback and input values (#3495)
* update wrap fail state callback and input values

* add error check for wrap status

* update error catching logic

* update error catching
2022-03-10 17:07:52 -05:00
Zach Pomerantz
fa163cb938 feat: price impact update (#3496)
* feat: green text on neg price impact

* chore: propagate all of usdc price impact

* chore: pass price impact to summary details

* chore: propagate slippage and impact warnings

* feat: update warnings on summary dialog

* chore: rm todo
2022-03-10 13:07:37 -08:00
Curly Brackets
b52273932a fix(ui): Auto Router icon not appearing on safari/ios (#3444)
* fix(ui): Auto Router icon not appearing on safari/ios

Closes #3138

* refactor: remove auto-router svg that are no longer in use
2022-03-10 14:37:32 -05:00
Crowdin Bot
9ad8f80e4e chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-10 18:07:32 +00:00
Zach Pomerantz
69bc598dea feat: display "no results found" message (#3467)
* feat: display when no results

* chore: use body not subhead
2022-03-10 09:53:56 -08:00
Ian Lapham
7feba045fc fix: add formatting to USDC values (#3478)
* add formatting to USDC values

* update formatting of USDC amounts to en

* apply same formatting to summary
2022-03-10 12:38:59 -05:00
Zach Pomerantz
04cee0a07d chore: bump to v0.0.23-beta (#3492) 2022-03-10 09:02:17 -08:00
Zach Pomerantz
ea73260e56 fix: accomodate longer locales (#3468) 2022-03-10 08:57:36 -08:00
Zach Pomerantz
b4bd2973a9 fix: update input when prefixing 0 to decimal (#3487) 2022-03-10 08:56:06 -08:00
Zach Pomerantz
a071b8adb0 fix: summary line break (#3486) 2022-03-10 08:55:55 -08:00
Zach Pomerantz
610acb0191 fix: font family overrides (#3485) 2022-03-10 08:55:40 -08:00
Zach Pomerantz
63bad8f890 fix: summary expando height (#3484) 2022-03-10 08:54:42 -08:00
Zach Pomerantz
32f955693f fix: restructure web3 to memoize (#3472) 2022-03-09 15:08:04 -08:00
Zach Pomerantz
96c66a5846 fix: incorrectly memoized hooks (#3471)
* fix: incorrectly memoized hooks

* fix: finish memoizing useUSDCPrice
2022-03-09 12:33:35 -08:00
Sara Reynolds
8c269a6d39 feat: add optimism and arbitrum to gas estimate support (#3434)
* add optimism and arbitrum to gas estimate support

* update sor version

* move to dependencies
2022-03-09 14:52:19 -05:00
Justin Domingue
36f111fa6f chore: upgrade to redux-toolkit 1.8 (#3464) 2022-03-09 12:19:24 -05:00
Ian Lapham
e569dc2152 fix: update default tokens on unsupported networks (#3470)
* update default tokens on unsupported networks

* update supported network with hook

* update defaults

* fix on default input token
2022-03-08 20:35:23 -05:00
Crowdin Bot
1aa042c5ef chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-08 21:07:02 +00:00
Zach Pomerantz
1450315b98 chore: bump to v0.0.21-beta (#3466) 2022-03-08 09:54:59 -08:00
Zach Pomerantz
aefbb3d812 feat: price impact warning (#3437)
* chore: mv usdc price impact to hook

* fix: popover padding

* feat: warn on high price impact from toolbar

* fix: display price impact on warning too

* chore: rename useUSDCValue params

* fix: conform uses of price impact color
2022-03-08 09:53:40 -08:00
Moody Salem
c3f12398cd fix: reverts the defaulting behavior of 1 eth to usdc (#3465) 2022-03-08 11:31:52 -05:00
Zach Pomerantz
2272f2a01a chore: specify a module for CRAv4 (#3462) 2022-03-08 08:19:56 -08:00
Zach Pomerantz
fb71078ea2 fix: fully specify locales (#3461) 2022-03-08 08:19:31 -08:00
Zach Pomerantz
1c7c93191e fix: default input to native currency (#3456)
* fix: default to native

* chore: fix import
2022-03-08 08:19:23 -08:00
Zach Pomerantz
0713f730b3 fix: widget sizing (#3455) 2022-03-08 08:19:12 -08:00
Crowdin Bot
5f7a18b411 chore(i18n): synchronize translations from crowdin [skip ci] 2022-03-08 16:07:25 +00:00
Curly Brackets
020c8d181a fix(ui): display wrapped currency symbol with current chain (#3441) 2022-03-08 09:06:31 -06:00
Zach Pomerantz
ab3f024031 fix: display loaded input amount (#3451) 2022-03-08 08:57:51 -06:00
104 changed files with 1751 additions and 1964 deletions

View File

@@ -3,11 +3,11 @@ describe('Swap', () => {
cy.visit('/swap')
})
it('starts with an ETH/USDC swap and quotes it', () => {
cy.get('#swap-currency-input .token-amount-input').should('have.value', '1')
it('starts with ETH selected by default', () => {
cy.get('#swap-currency-input .token-amount-input').should('have.value', '')
cy.get('#swap-currency-input .token-symbol-container').should('contain.text', 'ETH')
cy.get('#swap-currency-output .token-amount-input').should('not.have.value', '')
cy.get('#swap-currency-output .token-symbol-container').should('contain.text', 'USDC')
cy.get('#swap-currency-output .token-amount-input').should('not.have.value')
cy.get('#swap-currency-output .token-symbol-container').should('contain.text', 'Select a token')
})
it('can enter an amount into input', () => {

View File

@@ -1,6 +1,6 @@
{
"name": "@uniswap/widgets",
"version": "0.0.21-beta",
"version": "0.0.25-beta",
"description": "Uniswap Interface",
"homepage": ".",
"files": [
@@ -9,6 +9,7 @@
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/cjs/index.cjs",
"module": "dist/index.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
@@ -214,7 +215,7 @@
"@uniswap/redux-multicall": "^1.0.0",
"@uniswap/router-sdk": "^1.0.3",
"@uniswap/sdk-core": "^3.0.1",
"@uniswap/smart-order-router": "^2.5.10",
"@uniswap/smart-order-router": "^2.5.20",
"@uniswap/token-lists": "^1.0.0-beta.27",
"@uniswap/v2-sdk": "^3.0.1",
"@uniswap/v3-sdk": "^3.8.2",

View File

@@ -1,10 +0,0 @@
<svg width="23" height="20" viewBox="0 0 23 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradient1" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(95)">
<stop id="stop1" offset="0" stop-color="#2274E2"/>
<stop id="stop1" offset="0.5" stop-color="#2274E2"/>
<stop id="stop2" offset="1" stop-color="#3FB672" />
</linearGradient>
</defs>
<path d="M16 16C10 16 9 10 5 10M16 16C16 17.6569 17.3431 19 19 19C20.6569 19 22 17.6569 22 16C22 14.3431 20.6569 13 19 13C17.3431 13 16 14.3431 16 16ZM5 10C9 10 10 4 16 4M5 10H1.5M16 4C16 5.65685 17.3431 7 19 7C20.6569 7 22 5.65685 22 4C22 2.34315 20.6569 1 19 1C17.3431 1 16 2.34315 16 4Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="url(#gradient1)" />
</svg>

Before

Width:  |  Height:  |  Size: 782 B

View File

@@ -1,139 +0,0 @@
import { Trans } from '@lingui/macro'
import FlagImage from 'assets/images/ukraine.png'
import { AutoColumn } from 'components/Column'
import { RowBetween, RowFixed } from 'components/Row'
import { X } from 'react-feather'
import ReactGA from 'react-ga'
import { useDarkModeManager, useShowDonationLink } from 'state/user/hooks'
import styled from 'styled-components/macro'
import { ExternalLink, ThemedText, Z_INDEX } from 'theme'
const darkGradient = `radial-gradient(87.53% 3032.45% at 5.16% 10.13%, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%),
linear-gradient(0deg, rgba(0, 91, 187, 0.35), rgba(0, 91, 187, 0.35)), #000000;`
const lightGradient = `radial-gradient(87.53% 3032.45% at 5.16% 10.13%, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%), linear-gradient(0deg, #CBE4FF, #CBE4FF), linear-gradient(0deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.09)), radial-gradient(100% 93.36% at 0% 6.64%, #8BC4FF 0%, #FFF5BF 100%);`
const Wrapper = styled(AutoColumn)<{ darkMode: boolean }>`
background: #edeef2;
position: fixed;
bottom: 40px;
border-radius: 12px;
padding: 18px;
max-width: 360px;
background: ${({ darkMode }) => (darkMode ? darkGradient : lightGradient)};
color: ${({ theme }) => theme.text1};
z-index: ${Z_INDEX.deprecated_content};
:hover {
opacity: 0.8;
}
& > * {
z-index: ${Z_INDEX.fixed};
}
overflow: hidden;
:before {
background-image: url(${FlagImage});
background-repeat: no-repeat;
overflow: hidden;
background-size: 300px;
content: '';
height: 1200px;
width: 400px;
opacity: 0.1;
position: absolute;
transform: rotate(25deg) translate(-140px, -60px);
width: 300px;
z-index: ${Z_INDEX.deprecated_zero};
}
${({ theme }) => theme.mediaWidth.upToSmall`
max-width: 100%;
`}
${({ theme }) => theme.mediaWidth.upToMedium`
position: relative;
bottom: unset;
`}
`
const WrappedCloseIcon = styled(X)`
stroke: ${({ theme }) => theme.text2};
z-index: ${Z_INDEX.tooltip};
:hover {
cursor: pointer;
opacity: 0.8;
}
`
export const StyledFlagImage = styled.div`
margin-right: 12px;
width: 18px;
height: 18px;
border-radius: 100%;
&:before,
&:after {
content: '';
width: 9px;
height: 18px;
}
&:before {
float: left;
border-top-left-radius: 9px;
border-bottom-left-radius: 9px;
background: #005bbb;
}
&:after {
float: right;
border-top-right-radius: 9px;
border-bottom-right-radius: 9px;
background: #ffd500;
}
transform: rotate(90deg);
`
const StyledLink = styled(ExternalLink)`
text-decoration: none !important;
`
export default function DonationLink() {
const [darkMode] = useDarkModeManager()
const [, setVisible] = useShowDonationLink()
return (
<Wrapper
gap="10px"
darkMode={darkMode}
as={StyledLink}
target="https://donate.uniswap.org/#/swap"
href="https://donate.uniswap.org/#/swap"
onClickCapture={() => {
ReactGA.event({
category: 'Donate',
action: 'Link to Ukraine site.',
})
}}
>
<RowBetween>
<RowFixed>
<StyledFlagImage />
<ThemedText.Body fontWeight={600} fontSize={'18px'}>
<Trans>Donate to Ukraine</Trans>
</ThemedText.Body>
</RowFixed>
<WrappedCloseIcon
onClick={(e) => {
e.preventDefault()
e.stopPropagation()
setVisible(false)
return false
}}
/>
</RowBetween>
<ThemedText.Body fontWeight={400} fontSize="12px" color="text2">
<Trans>Directly support the Ukrainian government by donating tokens.</Trans>
</ThemedText.Body>
</Wrapper>
)
}

View File

@@ -1,14 +1,12 @@
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useLocation } from 'react-router-dom'
import styled from 'styled-components/macro'
import { MEDIA_WIDTHS } from 'theme'
import { useActivePopups } from '../../state/application/hooks'
import { useShowDonationLink, useURLWarningVisible } from '../../state/user/hooks'
import { useURLWarningVisible } from '../../state/user/hooks'
import { AutoColumn } from '../Column'
import ClaimPopup from './ClaimPopup'
import DonationLink from './DonationLink'
import PopupItem from './PopupItem'
const MobilePopupWrapper = styled.div<{ height: string | number }>`
@@ -68,11 +66,6 @@ export default function Popups() {
const { chainId } = useActiveWeb3React()
const isNotOnMainnet = Boolean(chainId && chainId !== SupportedChainId.MAINNET)
const location = useLocation()
const isOnSwapPage = location.pathname.includes('swap')
const [donationVisible] = useShowDonationLink()
const showDonation = donationVisible && isOnSwapPage
return (
<>
<FixedPopupColumn gap="20px" extraPadding={urlWarningActive} xlPadding={isNotOnMainnet}>
@@ -80,11 +73,9 @@ export default function Popups() {
{activePopups.map((item) => (
<PopupItem key={item.key} content={item.content} popKey={item.key} removeAfterMs={item.removeAfterMs} />
))}
{showDonation ? <DonationLink /> : null}
</FixedPopupColumn>
<MobilePopupWrapper height={activePopups?.length > 0 || showDonation ? 'fit-content' : 0}>
<MobilePopupWrapper height={activePopups?.length > 0 ? 'fit-content' : 0}>
<MobilePopupInner>
{showDonation ? <DonationLink /> : null}
{activePopups // reverse so new items up front
.slice(0)
.reverse()

View File

@@ -0,0 +1,35 @@
import { useRef } from 'react'
let uniqueId = 0
const getUniqueId = () => uniqueId++
export default function AutoRouterIcon({ className, id }: { className?: string; id?: string }) {
const componentIdRef = useRef(id ?? getUniqueId())
const componentId = `AutoRouterIconGradient${componentIdRef.current}`
return (
<svg
width="23"
height="20"
viewBox="0 0 23 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={className}
>
<defs>
<linearGradient id={componentId} x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(95)">
<stop id="stop1" offset="0" stopColor="#2274E2" />
<stop id="stop1" offset="0.5" stopColor="#2274E2" />
<stop id="stop2" offset="1" stopColor="#3FB672" />
</linearGradient>
</defs>
<path
d="M16 16C10 16 9 10 5 10M16 16C16 17.6569 17.3431 19 19 19C20.6569 19 22 17.6569 22 16C22 14.3431 20.6569 13 19 13C17.3431 13 16 14.3431 16 16ZM5 10C9 10 10 4 16 4M5 10H1.5M16 4C16 5.65685 17.3431 7 19 7C20.6569 7 22 5.65685 22 4C22 2.34315 20.6569 1 19 1C17.3431 1 16 2.34315 16 4Z"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
stroke={`url(#${componentId})`}
/>
</svg>
)
}

View File

@@ -3,8 +3,8 @@ import useAutoRouterSupported from 'hooks/useAutoRouterSupported'
import styled from 'styled-components/macro'
import { ThemedText } from 'theme'
import { ReactComponent as AutoRouterIcon } from '../../assets/svg/auto_router.svg'
import { ReactComponent as StaticRouterIcon } from '../../assets/svg/static_route.svg'
import AutoRouterIcon from './AutoRouterIcon'
const StyledAutoRouterIcon = styled(AutoRouterIcon)`
height: 16px;

View File

@@ -39,7 +39,12 @@ export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = Object.values(Support
(id) => typeof id === 'number'
) as SupportedChainId[]
export const SUPPORTED_GAS_ESTIMATE_CHAIN_IDS = [SupportedChainId.MAINNET, SupportedChainId.POLYGON]
export const SUPPORTED_GAS_ESTIMATE_CHAIN_IDS = [
SupportedChainId.MAINNET,
SupportedChainId.POLYGON,
SupportedChainId.OPTIMISM,
SupportedChainId.ARBITRUM_ONE,
]
/**
* All the chain IDs that are running the Ethereum protocol.

View File

@@ -1108,6 +1108,13 @@
"name": "Ukraine DAO",
"symbol": "Ukraine",
"decimals": 18
},
{
"chainId": 1,
"address": "0x8290D7a64F25e6b5002d98367E8367c1b532b534",
"name": "oneUNI",
"symbol": "oneUNI",
"decimals": 18
}
]
}

View File

@@ -36,21 +36,8 @@ export function useBestTrade(
debouncedOtherCurrency
)
const isLoading = amountSpecified !== undefined && debouncedAmount === undefined
// consider trade debouncing when inputs/outputs do not match
const debouncing =
routingAPITrade.trade &&
amountSpecified &&
(tradeType === TradeType.EXACT_INPUT
? !routingAPITrade.trade.inputAmount.equalTo(amountSpecified) ||
!amountSpecified.currency.equals(routingAPITrade.trade.inputAmount.currency) ||
!debouncedOtherCurrency?.equals(routingAPITrade.trade.outputAmount.currency)
: !routingAPITrade.trade.outputAmount.equalTo(amountSpecified) ||
!amountSpecified.currency.equals(routingAPITrade.trade.outputAmount.currency) ||
!debouncedOtherCurrency?.equals(routingAPITrade.trade.inputAmount.currency))
const useFallback = !autoRouterSupported || (!debouncing && routingAPITrade.state === TradeState.NO_ROUTE_FOUND)
const isLoading = routingAPITrade.state === TradeState.LOADING
const useFallback = !autoRouterSupported || routingAPITrade.state === TradeState.NO_ROUTE_FOUND
// only use client side router if routing api trade failed or is not supported
const bestV3Trade = useClientSideV3Trade(
@@ -63,9 +50,8 @@ export function useBestTrade(
return useMemo(
() => ({
...(useFallback ? bestV3Trade : routingAPITrade),
...(debouncing ? { state: TradeState.SYNCING } : {}),
...(isLoading ? { state: TradeState.LOADING } : {}),
}),
[bestV3Trade, debouncing, isLoading, routingAPITrade, useFallback]
[bestV3Trade, isLoading, routingAPITrade, useFallback]
)
}

View File

@@ -1,10 +1,15 @@
import { BigNumber } from '@ethersproject/bignumber'
import { useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo } from 'react'
import { useInterfaceMulticall } from './useContract'
// gets the current timestamp from the blockchain
export default function useCurrentBlockTimestamp(): BigNumber | undefined {
const multicall = useInterfaceMulticall()
return useSingleCallResult(multicall, 'getCurrentBlockTimestamp')?.result?.[0]
const resultStr: string | undefined = useSingleCallResult(
multicall,
'getCurrentBlockTimestamp'
)?.result?.[0]?.toString()
return useMemo(() => (typeof resultStr === 'string' ? BigNumber.from(resultStr) : undefined), [resultStr])
}

View File

@@ -1,5 +1,6 @@
import JSBI from 'jsbi'
import { useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo } from 'react'
import { useContract } from './useContract'
import useENSAddress from './useENSAddress'
@@ -22,5 +23,5 @@ export default function useGasPrice(): JSBI | undefined {
const contract = useContract(address ?? undefined, CHAIN_DATA_ABI, false)
const resultStr = useSingleCallResult(contract, 'latestAnswer').result?.[0]?.toString()
return typeof resultStr === 'string' ? JSBI.BigInt(resultStr) : undefined
return useMemo(() => (typeof resultStr === 'string' ? JSBI.BigInt(resultStr) : undefined), [resultStr])
}

View File

@@ -9,5 +9,5 @@ export default function useIsArgentWallet(): boolean {
const argentWalletDetector = useArgentWalletDetectorContract()
const inputs = useMemo(() => [account ?? undefined], [account])
const call = useSingleCallResult(argentWalletDetector, 'isArgentWallet', inputs, NEVER_RELOAD)
return call?.result?.[0] ?? false
return Boolean(call?.result?.[0])
}

View File

@@ -1,9 +1,10 @@
import { Interface } from '@ethersproject/abi'
import { Currency, Token } from '@uniswap/sdk-core'
import { BigintIsh, Currency, Token } from '@uniswap/sdk-core'
import IUniswapV3PoolStateJson from '@uniswap/v3-core/artifacts/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.json'
import { computePoolAddress } from '@uniswap/v3-sdk'
import { FeeAmount, Pool } from '@uniswap/v3-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import JSBI from 'jsbi'
import { useMultipleContractSingleData } from 'lib/hooks/multicall'
import { useMemo } from 'react'
@@ -14,6 +15,69 @@ const { abi: IUniswapV3PoolStateABI } = IUniswapV3PoolStateJson
const POOL_STATE_INTERFACE = new Interface(IUniswapV3PoolStateABI) as IUniswapV3PoolStateInterface
// Classes are expensive to instantiate, so this caches the recently instantiated pools.
// This avoids re-instantiating pools as the other pools in the same request are loaded.
class PoolCache {
// Evict after 128 entries. Empirically, a swap uses 64 entries.
private static MAX_ENTRIES = 128
// These are FIFOs, using unshift/pop. This makes recent entries faster to find.
private static pools: Pool[] = []
private static addresses: { key: string; address: string }[] = []
static getPoolAddress(factoryAddress: string, tokenA: Token, tokenB: Token, fee: FeeAmount): string {
if (this.addresses.length > this.MAX_ENTRIES) {
this.addresses = this.addresses.slice(0, this.MAX_ENTRIES / 2)
}
const { address: addressA } = tokenA
const { address: addressB } = tokenB
const key = `${factoryAddress}:${addressA}:${addressB}:${fee.toString()}`
const found = this.addresses.find((address) => address.key === key)
if (found) return found.address
const address = {
key,
address: computePoolAddress({
factoryAddress,
tokenA,
tokenB,
fee,
}),
}
this.addresses.unshift(address)
return address.address
}
static getPool(
tokenA: Token,
tokenB: Token,
fee: FeeAmount,
sqrtPriceX96: BigintIsh,
liquidity: BigintIsh,
tick: number
): Pool {
if (this.pools.length > this.MAX_ENTRIES) {
this.pools = this.pools.slice(0, this.MAX_ENTRIES / 2)
}
const found = this.pools.find(
(pool) =>
pool.token0 === tokenA &&
pool.token1 === tokenB &&
pool.fee === fee &&
JSBI.EQ(pool.sqrtRatioX96, sqrtPriceX96) &&
JSBI.EQ(pool.liquidity, liquidity) &&
pool.tickCurrent === tick
)
if (found) return found
const pool = new Pool(tokenA, tokenB, fee, sqrtPriceX96, liquidity, tick)
this.pools.unshift(pool)
return pool
}
}
export enum PoolState {
LOADING,
NOT_EXISTS,
@@ -26,58 +90,57 @@ export function usePools(
): [PoolState, Pool | null][] {
const { chainId } = useActiveWeb3React()
const transformed: ([Token, Token, FeeAmount] | null)[] = useMemo(() => {
return poolKeys.map(([currencyA, currencyB, feeAmount]) => {
if (!chainId || !currencyA || !currencyB || !feeAmount) return null
const poolTokens: ([Token, Token, FeeAmount] | undefined)[] = useMemo(() => {
if (!chainId) return new Array(poolKeys.length)
const tokenA = currencyA?.wrapped
const tokenB = currencyB?.wrapped
if (!tokenA || !tokenB || tokenA.equals(tokenB)) return null
const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]
return [token0, token1, feeAmount]
return poolKeys.map(([currencyA, currencyB, feeAmount]) => {
if (currencyA && currencyB && feeAmount) {
const tokenA = currencyA.wrapped
const tokenB = currencyB.wrapped
if (tokenA.equals(tokenB)) return undefined
return tokenA.sortsBefore(tokenB) ? [tokenA, tokenB, feeAmount] : [tokenB, tokenA, feeAmount]
}
return undefined
})
}, [chainId, poolKeys])
const poolAddresses: (string | undefined)[] = useMemo(() => {
const v3CoreFactoryAddress = chainId && V3_CORE_FACTORY_ADDRESSES[chainId]
if (!v3CoreFactoryAddress) return new Array(poolTokens.length)
return transformed.map((value) => {
if (!v3CoreFactoryAddress || !value) return undefined
return computePoolAddress({
factoryAddress: v3CoreFactoryAddress,
tokenA: value[0],
tokenB: value[1],
fee: value[2],
})
})
}, [chainId, transformed])
return poolTokens.map((value) => value && PoolCache.getPoolAddress(v3CoreFactoryAddress, ...value))
}, [chainId, poolTokens])
const slot0s = useMultipleContractSingleData(poolAddresses, POOL_STATE_INTERFACE, 'slot0')
const liquidities = useMultipleContractSingleData(poolAddresses, POOL_STATE_INTERFACE, 'liquidity')
return useMemo(() => {
return poolKeys.map((_key, index) => {
const [token0, token1, fee] = transformed[index] ?? []
if (!token0 || !token1 || !fee) return [PoolState.INVALID, null]
const tokens = poolTokens[index]
if (!tokens) return [PoolState.INVALID, null]
const [token0, token1, fee] = tokens
if (!slot0s[index]) return [PoolState.INVALID, null]
const { result: slot0, loading: slot0Loading, valid: slot0Valid } = slot0s[index]
if (!liquidities[index]) return [PoolState.INVALID, null]
const { result: liquidity, loading: liquidityLoading, valid: liquidityValid } = liquidities[index]
if (!slot0Valid || !liquidityValid) return [PoolState.INVALID, null]
if (!tokens || !slot0Valid || !liquidityValid) return [PoolState.INVALID, null]
if (slot0Loading || liquidityLoading) return [PoolState.LOADING, null]
if (!slot0 || !liquidity) return [PoolState.NOT_EXISTS, null]
if (!slot0.sqrtPriceX96 || slot0.sqrtPriceX96.eq(0)) return [PoolState.NOT_EXISTS, null]
try {
return [PoolState.EXISTS, new Pool(token0, token1, fee, slot0.sqrtPriceX96, liquidity[0], slot0.tick)]
const pool = PoolCache.getPool(token0, token1, fee, slot0.sqrtPriceX96, liquidity[0], slot0.tick)
return [PoolState.EXISTS, pool]
} catch (error) {
console.error('Error when constructing the pool', error)
return [PoolState.NOT_EXISTS, null]
}
})
}, [liquidities, poolKeys, slot0s, transformed])
}, [liquidities, poolKeys, slot0s, poolTokens])
}
export function usePool(

View File

@@ -1,6 +1,6 @@
import { BigNumber } from '@ethersproject/bignumber'
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
import { useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo } from 'react'
import { useTokenContract } from './useContract'
@@ -9,7 +9,10 @@ import { useTokenContract } from './useContract'
export function useTotalSupply(token?: Currency): CurrencyAmount<Token> | undefined {
const contract = useTokenContract(token?.isToken ? token.address : undefined, false)
const totalSupply: BigNumber = useSingleCallResult(contract, 'totalSupply')?.result?.[0]
const totalSupplyStr: string | undefined = useSingleCallResult(contract, 'totalSupply')?.result?.[0]?.toString()
return token?.isToken && totalSupply ? CurrencyAmount.fromRawAmount(token, totalSupply.toString()) : undefined
return useMemo(
() => (token?.isToken && totalSupplyStr ? CurrencyAmount.fromRawAmount(token, totalSupplyStr) : undefined),
[token, totalSupplyStr]
)
}

View File

@@ -78,17 +78,18 @@ export function useStablecoinAmountFromFiatValue(fiatValue: string | null | unde
const { chainId } = useActiveWeb3React()
const stablecoin = chainId ? STABLECOIN_AMOUNT_OUT[chainId]?.currency : undefined
if (fiatValue === null || fiatValue === undefined || !chainId || !stablecoin) {
return undefined
}
return useMemo(() => {
if (fiatValue === null || fiatValue === undefined || !chainId || !stablecoin) {
return undefined
}
// trim for decimal precision when parsing
const parsedForDecimals = parseFloat(fiatValue).toFixed(stablecoin.decimals).toString()
try {
// parse USD string into CurrencyAmount based on stablecoin decimals
return tryParseCurrencyAmount(parsedForDecimals, stablecoin)
} catch (error) {
return undefined
}
// trim for decimal precision when parsing
const parsedForDecimals = parseFloat(fiatValue).toFixed(stablecoin.decimals).toString()
try {
// parse USD string into CurrencyAmount based on stablecoin decimals
return tryParseCurrencyAmount(parsedForDecimals, stablecoin)
} catch (error) {
return undefined
}
}, [chainId, fiatValue, stablecoin])
}

View File

@@ -2,6 +2,7 @@ import { Trans } from '@lingui/macro'
import Row from 'lib/components/Row'
import { Logo } from 'lib/icons'
import styled, { brand, ThemedText } from 'lib/theme'
import { memo } from 'react'
import ExternalLink from './ExternalLink'
@@ -24,7 +25,7 @@ const UniswapA = styled(ExternalLink)`
}
`
export default function BrandedFooter() {
export default memo(function BrandedFooter() {
return (
<Row justify="center">
<UniswapA href={`https://uniswap.org/`}>
@@ -37,4 +38,4 @@ export default function BrandedFooter() {
</UniswapA>
</Row>
)
}
})

View File

@@ -1,14 +1,10 @@
import { Trans } from '@lingui/macro'
import useScrollbar from 'lib/hooks/useScrollbar'
import { AlertTriangle, Expando, Icon, Info, LargeIcon } from 'lib/icons'
import ActionButton from 'lib/components/ActionButton'
import Column from 'lib/components/Column'
import Expando from 'lib/components/Expando'
import { AlertTriangle, Icon, LargeIcon } from 'lib/icons'
import styled, { Color, ThemedText } from 'lib/theme'
import { ReactNode, useState } from 'react'
import ActionButton from '../ActionButton'
import { IconButton } from '../Button'
import Column from '../Column'
import Row from '../Row'
import Rule from '../Rule'
import { ReactNode, useCallback, useState } from 'react'
const HeaderIcon = styled(LargeIcon)`
flex-grow: 1;
@@ -35,7 +31,6 @@ export function StatusHeader({ icon: Icon, iconColor, iconSize = 4, children }:
{children}
</Column>
</Column>
<Rule />
</>
)
}
@@ -49,40 +44,6 @@ const ErrorHeader = styled(Column)<{ open: boolean }>`
transition: max-height 0.25s;
}
`
const ErrorColumn = styled(Column)``
const ExpandoColumn = styled(Column)<{ open: boolean }>`
flex-grow: ${({ open }) => (open ? 2 : 0)};
transition: flex-grow 0.25s, gap 0.25s;
${Rule} {
margin-bottom: ${({ open }) => (open ? 0 : 0.75)}em;
transition: margin-bottom 0.25s;
}
${ErrorColumn} {
flex-basis: 0;
flex-grow: ${({ open }) => (open ? 1 : 0)};
overflow-y: hidden;
position: relative;
transition: flex-grow 0.25s;
${Column} {
height: 6.825em;
padding: ${({ open }) => (open ? '0.5em 0' : 0)};
transition: padding 0.25s;
:after {
background: linear-gradient(#ffffff00, ${({ theme }) => theme.dialog});
bottom: 0;
content: '';
height: 0.75em;
pointer-events: none;
position: absolute;
width: calc(100% - 1em);
}
}
}
`
interface ErrorDialogProps {
header?: ReactNode
@@ -93,8 +54,8 @@ interface ErrorDialogProps {
export default function ErrorDialog({ header, error, action, onClick }: ErrorDialogProps) {
const [open, setOpen] = useState(false)
const [details, setDetails] = useState<HTMLDivElement | null>(null)
const scrollbar = useScrollbar(details)
const onExpand = useCallback(() => setOpen((open) => !open), [])
return (
<Column flex padded gap={0.75} align="stretch" style={{ height: '100%' }}>
<StatusHeader icon={AlertTriangle} iconColor="error" iconSize={open ? 3 : 4}>
@@ -105,27 +66,15 @@ export default function ErrorDialog({ header, error, action, onClick }: ErrorDia
<ThemedText.Body2>{header}</ThemedText.Body2>
</ErrorHeader>
</StatusHeader>
<Row>
<Row gap={0.5}>
<Info color="secondary" />
<ThemedText.Subhead2 color="secondary">
<Trans>Error details</Trans>
</ThemedText.Subhead2>
</Row>
<IconButton color="secondary" onClick={() => setOpen(!open)} icon={Expando} iconProps={{ open }} />
</Row>
<ExpandoColumn flex align="stretch" open={open}>
<Rule />
<ErrorColumn>
<Column gap={0.5} ref={setDetails} css={scrollbar}>
<ThemedText.Code userSelect>
{error.name}
{error.message ? `: ${error.message}` : ''}
</ThemedText.Code>
</Column>
</ErrorColumn>
<Column gap={open ? 0 : 0.75} style={{ transition: 'gap 0.25s' }}>
<Expando title={<Trans>Error details</Trans>} open={open} onExpand={onExpand} height={7.5}>
<ThemedText.Code userSelect>
{error.name}
{error.message ? `: ${error.message}` : ''}
</ThemedText.Code>
</Expando>
<ActionButton onClick={onClick}>{action}</ActionButton>
</ExpandoColumn>
</Column>
</Column>
)
}

View File

@@ -0,0 +1,66 @@
import { IconButton } from 'lib/components/Button'
import Column from 'lib/components/Column'
import Row from 'lib/components/Row'
import Rule from 'lib/components/Rule'
import useScrollbar from 'lib/hooks/useScrollbar'
import { Expando as ExpandoIcon } from 'lib/icons'
import styled from 'lib/theme'
import { PropsWithChildren, ReactNode, useState } from 'react'
const HeaderColumn = styled(Column)`
transition: gap 0.25s;
`
const ExpandoColumn = styled(Column)<{ height: number; open: boolean }>`
height: ${({ height, open }) => (open ? height : 0)}em;
overflow: hidden;
position: relative;
transition: height 0.25s, padding 0.25s;
:after {
background: linear-gradient(#ffffff00, ${({ theme }) => theme.dialog});
bottom: 0;
content: '';
height: 0.75em;
pointer-events: none;
position: absolute;
width: calc(100% - 1em);
}
`
const InnerColumn = styled(Column)<{ height: number }>`
height: ${({ height }) => height}em;
padding: 0.5em 0;
`
interface ExpandoProps {
title: ReactNode
open: boolean
onExpand: () => void
// The absolute height of the expanded container, in em.
height: number
}
/** A scrollable Expando with an absolute height. */
export default function Expando({ title, open, onExpand, height, children }: PropsWithChildren<ExpandoProps>) {
const [scrollingEl, setScrollingEl] = useState<HTMLDivElement | null>(null)
const scrollbar = useScrollbar(scrollingEl)
return (
<Column>
<HeaderColumn gap={open ? 0.5 : 0.75}>
<Rule />
<Row>
{title}
<IconButton color="secondary" onClick={onExpand} icon={ExpandoIcon} iconProps={{ open }} />
</Row>
<Rule />
</HeaderColumn>
<ExpandoColumn open={open} height={height}>
<InnerColumn flex align="stretch" height={height} ref={setScrollingEl} css={scrollbar}>
{children}
</InnerColumn>
</ExpandoColumn>
</Column>
)
return null
}

View File

@@ -1,4 +1,3 @@
import JSBI from 'jsbi'
import styled, { css } from 'lib/theme'
import { forwardRef, HTMLProps, useCallback, useEffect, useState } from 'react'
@@ -78,12 +77,16 @@ interface EnforcedNumericInputProps extends NumericInputProps {
}
function isNumericallyEqual(a: string, b: string) {
const [aInteger, aDecimal] = a.split('.')
const [bInteger, bDecimal] = b.split('.')
return (
JSBI.equal(JSBI.BigInt(aInteger ?? 0), JSBI.BigInt(bInteger ?? 0)) &&
JSBI.equal(JSBI.BigInt(aDecimal ?? 0), JSBI.BigInt(bDecimal ?? 0))
)
const [aInteger, aDecimal] = toParts(a)
const [bInteger, bDecimal] = toParts(b)
return aInteger === bInteger && aDecimal === bDecimal
function toParts(num: string) {
let [integer, decimal] = num.split('.')
integer = integer?.match(/([1-9]\d*)/)?.[1] || ''
decimal = decimal?.match(/(\d*[1-9])/)?.[1] || ''
return [integer, decimal]
}
}
const NumericInput = forwardRef<HTMLInputElement, EnforcedNumericInputProps>(function NumericInput(

View File

@@ -14,7 +14,7 @@ const PopoverContainer = styled.div<{ show: boolean }>`
border: 1px solid ${({ theme }) => theme.outline};
border-radius: 0.5em;
opacity: ${(props) => (props.show ? 1 : 0)};
padding: 8px;
padding: 10px 12px;
transition: visibility 0.25s linear, opacity 0.25s linear;
visibility: ${(props) => (props.show ? 'visible' : 'hidden')};
z-index: ${Layer.TOOLTIP};

View File

@@ -6,6 +6,10 @@ const Rule = styled.hr<{ padded?: true; scrollingEdge?: 'top' | 'bottom' }>`
margin: 0 ${({ padded }) => (padded ? '0.75em' : 0)};
margin-bottom: ${({ scrollingEdge }) => (scrollingEdge === 'bottom' ? -1 : 0)}px;
margin-top: ${({ scrollingEdge }) => (scrollingEdge !== 'bottom' ? -1 : 0)}px;
// Integrators will commonly modify hr width - this overrides any modifications within the widget.
max-width: auto;
width: auto;
`
export default Rule

View File

@@ -1,6 +1,5 @@
import { useLingui } from '@lingui/react'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import { useUSDCValue } from 'hooks/useUSDCPrice'
import { loadingTransitionCss } from 'lib/css/loading'
import {
useIsSwapFieldIndependent,
@@ -70,18 +69,16 @@ export function useFormattedFieldAmount({ disabled, currencyAmount, fieldAmount
export default function Input({ disabled, focused }: InputProps) {
const { i18n } = useLingui()
const {
currencyBalances: { [Field.INPUT]: balance },
[Field.INPUT]: { balance, amount: tradeCurrencyAmount, usdc },
trade: { state: tradeState },
tradeCurrencyAmounts: { [Field.INPUT]: swapInputCurrencyAmount },
} = useSwapInfo()
const inputUSDC = useUSDCValue(swapInputCurrencyAmount)
const [swapInputAmount, updateSwapInputAmount] = useSwapAmount(Field.INPUT)
const [swapInputCurrency, updateSwapInputCurrency] = useSwapCurrency(Field.INPUT)
const [inputAmount, updateInputAmount] = useSwapAmount(Field.INPUT)
const [inputCurrency, updateInputCurrency] = useSwapCurrency(Field.INPUT)
const inputCurrencyAmount = useSwapCurrencyAmount(Field.INPUT)
// extract eagerly in case of reversal
usePrefetchCurrencyColor(swapInputCurrency)
usePrefetchCurrencyColor(inputCurrency)
const isRouteLoading = tradeState === TradeState.SYNCING || tradeState === TradeState.LOADING
const isDependentField = !useIsSwapFieldIndependent(Field.INPUT)
@@ -99,30 +96,30 @@ export default function Input({ disabled, focused }: InputProps) {
const balanceColor = useMemo(() => {
const insufficientBalance =
balance &&
(inputCurrencyAmount ? inputCurrencyAmount.greaterThan(balance) : swapInputCurrencyAmount?.greaterThan(balance))
(inputCurrencyAmount ? inputCurrencyAmount.greaterThan(balance) : tradeCurrencyAmount?.greaterThan(balance))
return insufficientBalance ? 'error' : undefined
}, [balance, inputCurrencyAmount, swapInputCurrencyAmount])
}, [balance, inputCurrencyAmount, tradeCurrencyAmount])
const amount = useFormattedFieldAmount({
disabled,
currencyAmount: inputCurrencyAmount,
fieldAmount: swapInputAmount,
currencyAmount: tradeCurrencyAmount,
fieldAmount: inputAmount,
})
return (
<InputColumn gap={0.5} approved={mockApproved}>
<TokenInput
currency={swapInputCurrency}
currency={inputCurrency}
amount={amount}
max={max}
disabled={disabled}
onChangeInput={updateSwapInputAmount}
onChangeCurrency={updateSwapInputCurrency}
onChangeInput={updateInputAmount}
onChangeCurrency={updateInputCurrency}
loading={isLoading}
>
<ThemedText.Body2 color="secondary" userSelect>
<Row>
<USDC isLoading={isRouteLoading}>{inputUSDC ? `$${inputUSDC.toFixed(2)}` : '-'}</USDC>
<USDC isLoading={isRouteLoading}>{usdc ? `$${formatCurrencyAmount(usdc, 6, 'en', 2)}` : '-'}</USDC>
{balance && (
<Balance color={balanceColor} focused={focused}>
Balance: <span>{formatCurrencyAmount(balance, 4, i18n.locale)}</span>

View File

@@ -1,6 +1,5 @@
import { Trans } from '@lingui/macro'
import { useLingui } from '@lingui/react'
import { useUSDCValue } from 'hooks/useUSDCPrice'
import { atom } from 'jotai'
import { useAtomValue } from 'jotai/utils'
import BrandedFooter from 'lib/components/BrandedFooter'
@@ -8,11 +7,9 @@ import { useIsSwapFieldIndependent, useSwapAmount, useSwapCurrency, useSwapInfo
import useCurrencyColor from 'lib/hooks/useCurrencyColor'
import { Field } from 'lib/state/swap'
import styled, { DynamicThemeProvider, ThemedText } from 'lib/theme'
import { PropsWithChildren, useMemo } from 'react'
import { PropsWithChildren } from 'react'
import { TradeState } from 'state/routing/types'
import { computeFiatValuePriceImpact } from 'utils/computeFiatValuePriceImpact'
import { formatCurrencyAmount } from 'utils/formatCurrencyAmount'
import { getPriceImpactWarning } from 'utils/prices'
import Column from '../Column'
import Row from '../Row'
@@ -41,9 +38,9 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
const { i18n } = useLingui()
const {
currencyBalances: { [Field.OUTPUT]: balance },
[Field.OUTPUT]: { balance, amount: outputCurrencyAmount, usdc: outputUSDC },
trade: { state: tradeState },
tradeCurrencyAmounts: { [Field.INPUT]: inputCurrencyAmount, [Field.OUTPUT]: outputCurrencyAmount },
impact,
} = useSwapInfo()
const [swapOutputAmount, updateSwapOutputAmount] = useSwapAmount(Field.OUTPUT)
@@ -60,24 +57,6 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
// different state true/null/false allow smoother color transition
const hasColor = swapOutputCurrency ? Boolean(color) || null : false
const inputUSDC = useUSDCValue(inputCurrencyAmount)
const outputUSDC = useUSDCValue(outputCurrencyAmount)
const priceImpact = useMemo(() => {
const fiatValuePriceImpact = computeFiatValuePriceImpact(inputUSDC, outputUSDC)
if (!fiatValuePriceImpact) return null
const color = getPriceImpactWarning(fiatValuePriceImpact)
const sign = fiatValuePriceImpact.lessThan(0) ? '+' : ''
const displayedPriceImpact = parseFloat(fiatValuePriceImpact.multiply(-1)?.toSignificant(3))
return (
<ThemedText.Body2 color={color}>
({sign}
{displayedPriceImpact}%)
</ThemedText.Body2>
)
}, [inputUSDC, outputUSDC])
const amount = useFormattedFieldAmount({
disabled,
currencyAmount: outputCurrencyAmount,
@@ -103,7 +82,8 @@ export default function Output({ disabled, focused, children }: PropsWithChildre
<ThemedText.Body2 color="secondary" userSelect>
<Row>
<USDC gap={0.5} isLoading={isRouteLoading}>
{outputUSDC ? `$${outputUSDC.toFixed(2)}` : '-'} {priceImpact}
{outputUSDC ? `$${formatCurrencyAmount(outputUSDC, 6, 'en', 2)}` : '-'}{' '}
{impact.display && <ThemedText.Body2 color={impact.warning}>({impact.display})</ThemedText.Body2>}
</USDC>
{balance && (
<Balance focused={focused}>

View File

@@ -0,0 +1,54 @@
import { useLingui } from '@lingui/react'
import { Trade } from '@uniswap/router-sdk'
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import Row from 'lib/components/Row'
import { ThemedText } from 'lib/theme'
import formatLocaleNumber from 'lib/utils/formatLocaleNumber'
import { useCallback, useMemo, useState } from 'react'
import { formatCurrencyAmount, formatPrice } from 'utils/formatCurrencyAmount'
import { TextButton } from '../Button'
interface PriceProps {
trade: Trade<Currency, Currency, TradeType>
outputUSDC?: CurrencyAmount<Currency>
}
/** Displays the price of a trade. If outputUSDC is included, also displays the unit price. */
export default function Price({ trade, outputUSDC }: PriceProps) {
const { i18n } = useLingui()
const { inputAmount, outputAmount, executionPrice } = trade
const [base, setBase] = useState<'input' | 'output'>('input')
const onClick = useCallback(() => setBase((base) => (base === 'input' ? 'output' : 'input')), [])
// Compute the usdc price from the output price, so that it aligns with the displayed price.
const { price, usdcPrice } = useMemo(() => {
switch (base) {
case 'input':
return {
price: executionPrice,
usdcPrice: outputUSDC?.multiply(inputAmount.decimalScale).divide(inputAmount),
}
case 'output':
return {
price: executionPrice.invert(),
usdcPrice: outputUSDC?.multiply(outputAmount.decimalScale).divide(outputAmount),
}
}
}, [base, executionPrice, inputAmount, outputAmount, outputUSDC])
return (
<TextButton color="primary" onClick={onClick}>
<ThemedText.Caption>
<Row gap={0.25}>
{formatLocaleNumber({ number: 1, sigFigs: 1, locale: i18n.locale })} {price.baseCurrency.symbol} ={' '}
{formatPrice(price, 6, i18n.locale)} {price.quoteCurrency.symbol}
{usdcPrice && (
<ThemedText.Caption color="secondary">(${formatCurrencyAmount(usdcPrice, 6, 'en', 2)})</ThemedText.Caption>
)}
</Row>
</ThemedText.Caption>
</TextButton>
)
}

View File

@@ -2,7 +2,7 @@ import { Trans } from '@lingui/macro'
import { useAtom } from 'jotai'
import Popover from 'lib/components/Popover'
import { useTooltip } from 'lib/components/Tooltip'
import { getSlippageWarning, toPercent } from 'lib/hooks/useAllowedSlippage'
import { getSlippageWarning, toPercent } from 'lib/hooks/useSlippage'
import { AlertTriangle, Check, Icon, LargeIcon, XOctagon } from 'lib/icons'
import { autoSlippageAtom, maxSlippageAtom } from 'lib/state/settings'
import styled, { ThemedText } from 'lib/theme'

View File

@@ -22,8 +22,11 @@ const UNI = (function () {
function Fixture() {
const setState = useUpdateAtom(swapAtom)
const {
allowedSlippage,
[Field.INPUT]: { usdc: inputUSDC },
[Field.OUTPUT]: { usdc: outputUSDC },
trade: { trade },
slippage,
impact,
} = useSwapInfo()
useEffect(() => {
@@ -37,7 +40,14 @@ function Fixture() {
return trade ? (
<Modal color="dialog">
<SummaryDialog onConfirm={() => void 0} trade={trade} allowedSlippage={allowedSlippage} />
<SummaryDialog
onConfirm={() => void 0}
trade={trade}
slippage={slippage}
inputUSDC={inputUSDC}
outputUSDC={outputUSDC}
impact={impact}
/>
</Modal>
) : null
}

View File

@@ -3,15 +3,14 @@ import { useLingui } from '@lingui/react'
import { Trade } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { useAtomValue } from 'jotai/utils'
import { getSlippageWarning } from 'lib/hooks/useAllowedSlippage'
import Column from 'lib/components/Column'
import Row from 'lib/components/Row'
import { feeOptionsAtom } from 'lib/state/swap'
import styled, { Color, ThemedText } from 'lib/theme'
import { useMemo } from 'react'
import { currencyId } from 'utils/currencyId'
import { formatCurrencyAmount } from 'utils/formatCurrencyAmount'
import { computeRealizedLPFeeAmount, computeRealizedPriceImpact, getPriceImpactWarning } from 'utils/prices'
import Row from '../../Row'
import { computeRealizedLPFeeAmount } from 'utils/prices'
const Value = styled.span<{ color?: Color }>`
color: ${({ color, theme }) => color && theme[color]};
@@ -37,16 +36,16 @@ function Detail({ label, value, color }: DetailProps) {
interface DetailsProps {
trade: Trade<Currency, Currency, TradeType>
allowedSlippage: Percent
slippage: { auto: boolean; allowed: Percent; warning?: Color }
priceImpact: { priceImpact?: string; warning?: Color }
}
export default function Details({ trade, allowedSlippage }: DetailsProps) {
export default function Details({ trade, slippage, priceImpact }: DetailsProps) {
const { inputAmount, outputAmount } = trade
const inputCurrency = inputAmount.currency
const outputCurrency = outputAmount.currency
const integrator = window.location.hostname
const feeOptions = useAtomValue(feeOptionsAtom)
const priceImpact = useMemo(() => computeRealizedPriceImpact(trade), [trade])
const lpFeeAmount = useMemo(() => computeRealizedLPFeeAmount(trade), [trade])
const { i18n } = useLingui()
@@ -62,7 +61,9 @@ export default function Details({ trade, allowedSlippage }: DetailsProps) {
}
}
rows.push([t`Price impact`, `${priceImpact.toFixed(2)}%`, getPriceImpactWarning(priceImpact)])
if (priceImpact.priceImpact) {
rows.push([t`Price impact`, priceImpact.priceImpact, priceImpact.warning])
}
if (lpFeeAmount) {
const parsedLpFee = formatCurrencyAmount(lpFeeAmount, 6, i18n.locale)
@@ -70,16 +71,16 @@ export default function Details({ trade, allowedSlippage }: DetailsProps) {
}
if (trade.tradeType === TradeType.EXACT_OUTPUT) {
const localizedMaxSent = formatCurrencyAmount(trade.maximumAmountIn(allowedSlippage), 6, i18n.locale)
const localizedMaxSent = formatCurrencyAmount(trade.maximumAmountIn(slippage.allowed), 6, i18n.locale)
rows.push([t`Maximum sent`, `${localizedMaxSent} ${inputCurrency.symbol}`])
}
if (trade.tradeType === TradeType.EXACT_INPUT) {
const localizedMaxSent = formatCurrencyAmount(trade.minimumAmountOut(allowedSlippage), 6, i18n.locale)
const localizedMaxSent = formatCurrencyAmount(trade.minimumAmountOut(slippage.allowed), 6, i18n.locale)
rows.push([t`Minimum received`, `${localizedMaxSent} ${outputCurrency.symbol}`])
}
rows.push([t`Slippage tolerance`, `${allowedSlippage.toFixed(2)}%`, getSlippageWarning(allowedSlippage)])
rows.push([t`Slippage tolerance`, `${slippage.allowed.toFixed(2)}%`, slippage.warning])
return rows
}, [
@@ -87,7 +88,7 @@ export default function Details({ trade, allowedSlippage }: DetailsProps) {
priceImpact,
lpFeeAmount,
trade,
allowedSlippage,
slippage,
outputAmount,
i18n.locale,
integrator,
@@ -96,10 +97,10 @@ export default function Details({ trade, allowedSlippage }: DetailsProps) {
])
return (
<>
<Column gap={0.5}>
{details.map(([label, detail, color]) => (
<Detail key={label} label={label} value={detail} color={color} />
))}
</>
</Column>
)
}

View File

@@ -1,39 +1,22 @@
import { useLingui } from '@lingui/react'
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
import { useUSDCValue } from 'hooks/useUSDCPrice'
import { PriceImpact } from 'lib/hooks/useUSDCPriceImpact'
import { ArrowRight } from 'lib/icons'
import styled from 'lib/theme'
import { ThemedText } from 'lib/theme'
import { useMemo } from 'react'
import { computeFiatValuePriceImpact } from 'utils/computeFiatValuePriceImpact'
import { PropsWithChildren } from 'react'
import { formatCurrencyAmount } from 'utils/formatCurrencyAmount'
import Column from '../../Column'
import Row from '../../Row'
import TokenImg from '../../TokenImg'
const Percent = styled.span<{ gain: boolean }>`
color: ${({ gain, theme }) => (gain ? theme.success : theme.error)};
`
interface TokenValueProps {
input: CurrencyAmount<Currency>
usdc?: boolean
change?: number
usdc?: CurrencyAmount<Currency>
}
function TokenValue({ input, usdc, change }: TokenValueProps) {
function TokenValue({ input, usdc, children }: PropsWithChildren<TokenValueProps>) {
const { i18n } = useLingui()
const percent = useMemo(() => {
if (change) {
const percent = change.toPrecision(3)
return change > 0 ? `(+${percent}%)` : `(${percent}%)`
}
return undefined
}, [change])
const usdcAmount = useUSDCValue(input)
return (
<Column justify="flex-start">
<Row gap={0.375} justify="flex-start">
@@ -42,13 +25,13 @@ function TokenValue({ input, usdc, change }: TokenValueProps) {
{formatCurrencyAmount(input, 6, i18n.locale)} {input.currency.symbol}
</ThemedText.Body2>
</Row>
{usdc && usdcAmount && (
<Row justify="flex-start">
<ThemedText.Caption color="secondary" userSelect>
${formatCurrencyAmount(usdcAmount, 2, i18n.locale)}
{change && <Percent gain={change > 0}> {percent}</Percent>}
</ThemedText.Caption>
</Row>
{usdc && (
<ThemedText.Caption color="secondary" userSelect>
<Row justify="flex-start" gap={0.25}>
${formatCurrencyAmount(usdc, 6, 'en', 2)}
{children}
</Row>
</ThemedText.Caption>
)}
</Column>
)
@@ -57,23 +40,19 @@ function TokenValue({ input, usdc, change }: TokenValueProps) {
interface SummaryProps {
input: CurrencyAmount<Currency>
output: CurrencyAmount<Currency>
usdc?: boolean
inputUSDC?: CurrencyAmount<Currency>
outputUSDC?: CurrencyAmount<Currency>
priceImpact?: PriceImpact
}
export default function Summary({ input, output, usdc }: SummaryProps) {
const inputUSDCValue = useUSDCValue(input)
const outputUSDCValue = useUSDCValue(output)
const priceImpact = useMemo(() => {
const computedChange = computeFiatValuePriceImpact(inputUSDCValue, outputUSDCValue)
return computedChange ? parseFloat(computedChange.multiply(-1)?.toSignificant(3)) : undefined
}, [inputUSDCValue, outputUSDCValue])
export default function Summary({ input, output, inputUSDC, outputUSDC, priceImpact }: SummaryProps) {
return (
<Row gap={usdc ? 1 : 0.25}>
<TokenValue input={input} usdc={usdc} />
<Row gap={priceImpact ? 1 : 0.25}>
<TokenValue input={input} usdc={inputUSDC} />
<ArrowRight />
<TokenValue input={output} usdc={usdc} change={priceImpact} />
<TokenValue input={output} usdc={outputUSDC}>
{priceImpact && <ThemedText.Caption color={priceImpact.warning}>({priceImpact.display})</ThemedText.Caption>}
</TokenValue>
</Row>
)
}

View File

@@ -1,121 +1,116 @@
import { Trans } from '@lingui/macro'
import { useLingui } from '@lingui/react'
import { Trade } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { IconButton } from 'lib/components/Button'
import { useSwapTradeType } from 'lib/hooks/swap'
import { getSlippageWarning } from 'lib/hooks/useAllowedSlippage'
import useScrollbar from 'lib/hooks/useScrollbar'
import { AlertTriangle, BarChart, Expando, Info } from 'lib/icons'
import styled, { ThemedText } from 'lib/theme'
import formatLocaleNumber from 'lib/utils/formatLocaleNumber'
import { useMemo, useState } from 'react'
import { formatCurrencyAmount, formatPrice } from 'utils/formatCurrencyAmount'
import { computeRealizedPriceImpact, getPriceImpactWarning } from 'utils/prices'
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import ActionButton, { Action } from 'lib/components/ActionButton'
import Column from 'lib/components/Column'
import { Header } from 'lib/components/Dialog'
import Expando from 'lib/components/Expando'
import Row from 'lib/components/Row'
import { Slippage } from 'lib/hooks/useSlippage'
import { PriceImpact } from 'lib/hooks/useUSDCPriceImpact'
import { AlertTriangle, BarChart, Info } from 'lib/icons'
import styled, { Color, ThemedText } from 'lib/theme'
import { useCallback, useMemo, useState } from 'react'
import { formatCurrencyAmount } from 'utils/formatCurrencyAmount'
import { tradeMeaningfullyDiffers } from 'utils/tradeMeaningFullyDiffer'
import ActionButton, { Action } from '../../ActionButton'
import Column from '../../Column'
import { Header } from '../../Dialog'
import Row from '../../Row'
import Rule from '../../Rule'
import Price from '../Price'
import Details from './Details'
import Summary from './Summary'
export default Summary
const SummaryColumn = styled(Column)``
const ExpandoColumn = styled(Column)``
const DetailsColumn = styled(Column)``
const Estimate = styled(ThemedText.Caption)``
const Content = styled(Column)``
const Heading = styled(Column)``
const Footing = styled(Column)``
const Body = styled(Column)<{ open: boolean }>`
height: calc(100% - 2.5em);
${SummaryColumn} {
flex-grow: ${({ open }) => (open ? 0 : 1)};
${Content}, ${Heading} {
flex-grow: 1;
transition: flex-grow 0.25s;
}
${ExpandoColumn} {
flex-grow: ${({ open }) => (open ? 1 : 0)};
transition: flex-grow 0.25s;
${DetailsColumn} {
flex-basis: ${({ open }) => (open ? 7.5 : 0)}em;
overflow-y: hidden;
position: relative;
transition: flex-basis 0.25s;
${Column} {
height: 7.5em;
grid-template-rows: repeat(auto-fill, 1em);
padding: ${({ open }) => (open ? '0.5em 0' : 0)};
transition: padding 0.25s;
:after {
background: linear-gradient(#ffffff00, ${({ theme }) => theme.dialog});
bottom: 0;
content: '';
height: 0.75em;
pointer-events: none;
position: absolute;
width: calc(100% - 1em);
}
}
}
${Estimate} {
max-height: ${({ open }) => (open ? 0 : 56 / 12)}em; // 2 * line-height + padding
min-height: 0;
overflow-y: hidden;
padding: ${({ open }) => (open ? 0 : '1em 0')};
transition: ${({ open }) =>
open
? 'max-height 0.1s ease-out, padding 0.25s ease-out'
: 'flex-grow 0.25s ease-out, max-height 0.1s ease-in, padding 0.25s ease-out'};
}
${Footing} {
margin-bottom: ${({ open }) => (open ? '-0.75em' : undefined)};
max-height: ${({ open }) => (open ? 0 : '3em')};
opacity: ${({ open }) => (open ? 0 : 1)};
transition: max-height 0.25s, margin-bottom 0.25s, opacity 0.15s 0.1s;
visibility: ${({ open }) => (open ? 'hidden' : undefined)};
}
`
interface SummaryDialogProps {
trade: Trade<Currency, Currency, TradeType>
allowedSlippage: Percent
onConfirm: () => void
function Subhead({ priceImpact, slippage }: { priceImpact: { warning?: Color }; slippage: Slippage }) {
return (
<Row gap={0.5}>
{priceImpact.warning || slippage.warning ? (
<AlertTriangle color={priceImpact.warning || slippage.warning} />
) : (
<Info color="secondary" />
)}
<ThemedText.Subhead2 color={priceImpact.warning || slippage.warning || 'secondary'}>
{priceImpact.warning ? (
<Trans>High price impact</Trans>
) : slippage.warning ? (
<Trans>High slippage</Trans>
) : (
<Trans>Swap details</Trans>
)}
</ThemedText.Subhead2>
</Row>
)
}
export function SummaryDialog({ trade, allowedSlippage, onConfirm }: SummaryDialogProps) {
const { inputAmount, outputAmount, executionPrice } = trade
const inputCurrency = inputAmount.currency
const outputCurrency = outputAmount.currency
const priceImpact = useMemo(() => computeRealizedPriceImpact(trade), [trade])
const tradeType = useSwapTradeType()
function Estimate({ trade, slippage }: { trade: Trade<Currency, Currency, TradeType>; slippage: Slippage }) {
const { i18n } = useLingui()
const text = useMemo(() => {
switch (trade.tradeType) {
case TradeType.EXACT_INPUT:
return (
<Trans>
Output is estimated. You will receive at least{' '}
{formatCurrencyAmount(trade.minimumAmountOut(slippage.allowed), 6, i18n.locale)}{' '}
{trade.outputAmount.currency.symbol} or the transaction will revert.
</Trans>
)
case TradeType.EXACT_OUTPUT:
return (
<Trans>
Output is estimated. You will send at most{' '}
{formatCurrencyAmount(trade.maximumAmountIn(slippage.allowed), 6, i18n.locale)}{' '}
{trade.inputAmount.currency.symbol} or the transaction will revert.
</Trans>
)
}
}, [i18n.locale, slippage.allowed, trade])
return <ThemedText.Caption color="secondary">{text}</ThemedText.Caption>
}
const [open, setOpen] = useState(false)
const [details, setDetails] = useState<HTMLDivElement | null>(null)
const scrollbar = useScrollbar(details)
const warning = useMemo(() => {
return getPriceImpactWarning(priceImpact) || getSlippageWarning(allowedSlippage)
}, [allowedSlippage, priceImpact])
function ConfirmButton({
trade,
highPriceImpact,
onConfirm,
}: {
trade: Trade<Currency, Currency, TradeType>
highPriceImpact: boolean
onConfirm: () => void
}) {
const [ackPriceImpact, setAckPriceImpact] = useState(false)
const [confirmedTrade, setConfirmedTrade] = useState(trade)
const [ackTrade, setAckTrade] = useState(trade)
const doesTradeDiffer = useMemo(
() => Boolean(trade && confirmedTrade && tradeMeaningfullyDiffers(trade, confirmedTrade)),
[confirmedTrade, trade]
() => Boolean(trade && ackTrade && tradeMeaningfullyDiffers(trade, ackTrade)),
[ackTrade, trade]
)
const action = useMemo((): Action | undefined => {
if (doesTradeDiffer) {
return {
message: <Trans>Price updated</Trans>,
icon: BarChart,
onClick: () => setConfirmedTrade(trade),
onClick: () => setAckTrade(trade),
children: <Trans>Accept</Trans>,
}
} else if (getPriceImpactWarning(priceImpact) === 'error' && !ackPriceImpact) {
} else if (highPriceImpact && !ackPriceImpact) {
return {
message: <Trans>High price impact</Trans>,
onClick: () => setAckPriceImpact(true),
@@ -123,62 +118,58 @@ export function SummaryDialog({ trade, allowedSlippage, onConfirm }: SummaryDial
}
}
return
}, [ackPriceImpact, doesTradeDiffer, priceImpact, trade])
}, [ackPriceImpact, doesTradeDiffer, highPriceImpact, trade])
if (!(inputAmount && outputAmount && inputCurrency && outputCurrency)) {
return null
}
return (
<ActionButton onClick={onConfirm} action={action}>
<Trans>Confirm swap</Trans>
</ActionButton>
)
}
interface SummaryDialogProps {
trade: Trade<Currency, Currency, TradeType>
slippage: Slippage
inputUSDC?: CurrencyAmount<Currency>
outputUSDC?: CurrencyAmount<Currency>
impact: PriceImpact
onConfirm: () => void
}
export function SummaryDialog({ trade, slippage, inputUSDC, outputUSDC, impact, onConfirm }: SummaryDialogProps) {
const { inputAmount, outputAmount } = trade
const [open, setOpen] = useState(false)
const onExpand = useCallback(() => setOpen((open) => !open), [])
return (
<>
<Header title={<Trans>Swap summary</Trans>} ruled />
<Body flex align="stretch" gap={0.75} padded open={open}>
<SummaryColumn gap={0.75} flex justify="center">
<Summary input={inputAmount} output={outputAmount} usdc={true} />
<Row>
<ThemedText.Caption userSelect>
{formatLocaleNumber({ number: 1, sigFigs: 1, locale: i18n.locale })} {inputCurrency.symbol} ={' '}
{formatPrice(executionPrice, 6, i18n.locale)} {outputCurrency.symbol}
</ThemedText.Caption>
</Row>
</SummaryColumn>
<Rule />
<Row>
<Row gap={0.5}>
{warning ? <AlertTriangle color={warning} /> : <Info color="secondary" />}
<ThemedText.Subhead2 color="secondary">
<Trans>Swap details</Trans>
</ThemedText.Subhead2>
</Row>
<IconButton color="secondary" onClick={() => setOpen(!open)} icon={Expando} iconProps={{ open }} />
</Row>
<ExpandoColumn flex align="stretch">
<Rule />
<DetailsColumn>
<Column gap={0.5} ref={setDetails} css={scrollbar}>
<Details trade={trade} allowedSlippage={allowedSlippage} />
</Column>
</DetailsColumn>
<Estimate color="secondary">
<Trans>Output is estimated.</Trans>{' '}
{tradeType === TradeType.EXACT_INPUT && (
<Trans>
You will receive at least{' '}
{formatCurrencyAmount(trade.minimumAmountOut(allowedSlippage), 6, i18n.locale)} {outputCurrency.symbol}{' '}
or the transaction will revert.
</Trans>
)}
{tradeType === TradeType.EXACT_OUTPUT && (
<Trans>
You will send at most {formatCurrencyAmount(trade.maximumAmountIn(allowedSlippage), 6, i18n.locale)}{' '}
{inputCurrency.symbol} or the transaction will revert.
</Trans>
)}
</Estimate>
<ActionButton onClick={onConfirm} action={action}>
<Trans>Confirm swap</Trans>
</ActionButton>
</ExpandoColumn>
<Body flex align="stretch" padded gap={0.75} open={open}>
<Heading gap={0.75} flex justify="center">
<Summary
input={inputAmount}
output={outputAmount}
inputUSDC={inputUSDC}
outputUSDC={outputUSDC}
priceImpact={impact}
/>
<Price trade={trade} />
</Heading>
<Column gap={open ? 0 : 0.75} style={{ transition: 'gap 0.25s' }}>
<Expando
title={<Subhead priceImpact={impact} slippage={slippage} />}
open={open}
onExpand={onExpand}
height={7}
>
<Details trade={trade} slippage={slippage} priceImpact={impact} />
</Expando>
<Footing>
<Estimate trade={trade} slippage={slippage} />
</Footing>
<ConfirmButton trade={trade} highPriceImpact={impact.warning === 'error'} onConfirm={onConfirm} />
</Column>
</Body>
</>
)

View File

@@ -1,6 +1,6 @@
import { Trans } from '@lingui/macro'
import { Token } from '@uniswap/sdk-core'
import { useUpdateAtom } from 'jotai/utils'
import { useAtomValue, useUpdateAtom } from 'jotai/utils'
import { WrapErrorText } from 'lib/components/Swap/WrapErrorText'
import { useSwapCurrencyAmount, useSwapInfo, useSwapTradeType } from 'lib/hooks/swap'
import {
@@ -15,10 +15,10 @@ import { useAddTransaction, usePendingApproval } from 'lib/hooks/transactions'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import useTransactionDeadline from 'lib/hooks/useTransactionDeadline'
import { Spinner } from 'lib/icons'
import { displayTxHashAtom, Field } from 'lib/state/swap'
import { displayTxHashAtom, feeOptionsAtom, Field } from 'lib/state/swap'
import { TransactionType } from 'lib/state/transactions'
import { useTheme } from 'lib/theme'
import { useCallback, useEffect, useMemo, useState } from 'react'
import { memo, useCallback, useEffect, useMemo, useState } from 'react'
import invariant from 'tiny-invariant'
import { ExplorerDataType } from 'utils/getExplorerLink'
@@ -35,19 +35,24 @@ function useIsPendingApproval(token?: Token, spender?: string): boolean {
return Boolean(usePendingApproval(token, spender))
}
export default function SwapButton({ disabled }: SwapButtonProps) {
export default memo(function SwapButton({ disabled }: SwapButtonProps) {
const { account, chainId } = useActiveWeb3React()
const { tokenColorExtraction } = useTheme()
const {
allowedSlippage,
currencies: { [Field.INPUT]: inputCurrency },
currencyBalances: { [Field.INPUT]: inputCurrencyBalance },
feeOptions,
[Field.INPUT]: {
currency: inputCurrency,
amount: inputTradeCurrencyAmount,
balance: inputCurrencyBalance,
usdc: inputUSDC,
},
[Field.OUTPUT]: { amount: outputTradeCurrencyAmount, usdc: outputUSDC },
trade,
tradeCurrencyAmounts: { [Field.INPUT]: inputTradeCurrencyAmount, [Field.OUTPUT]: outputTradeCurrencyAmount },
slippage,
impact,
} = useSwapInfo()
const feeOptions = useAtomValue(feeOptionsAtom)
const tradeType = useSwapTradeType()
@@ -64,13 +69,13 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
// TODO(zzmp): Return an optimized trade directly from useSwapInfo.
const optimizedTrade =
// Use trade.trade if there is no swap optimized trade. This occurs if approvals are still pending.
useSwapApprovalOptimizedTrade(trade.trade, allowedSlippage, useIsPendingApproval) || trade.trade
useSwapApprovalOptimizedTrade(trade.trade, slippage.allowed, useIsPendingApproval) || trade.trade
const approvalCurrencyAmount = useSwapCurrencyAmount(Field.INPUT)
const { approvalState, signatureData, handleApproveOrPermit } = useApproveOrPermit(
optimizedTrade,
allowedSlippage,
slippage.allowed,
useIsPendingApproval,
approvalCurrencyAmount
)
@@ -94,13 +99,24 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
const disableSwap = useMemo(
() =>
disabled ||
!optimizedTrade ||
!chainId ||
wrapLoading ||
(wrapType !== WrapType.NOT_APPLICABLE && wrapError) ||
approvalState === ApproveOrPermitState.PENDING_SIGNATURE ||
!(inputTradeCurrencyAmount && inputCurrencyBalance) ||
inputCurrencyBalance.lessThan(inputTradeCurrencyAmount),
[disabled, chainId, wrapLoading, wrapType, wrapError, approvalState, inputTradeCurrencyAmount, inputCurrencyBalance]
[
disabled,
optimizedTrade,
chainId,
wrapLoading,
wrapType,
wrapError,
approvalState,
inputTradeCurrencyAmount,
inputCurrencyBalance,
]
)
const actionProps = useMemo((): Partial<ActionButtonProps> | undefined => {
@@ -151,7 +167,7 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
// the callback to execute the swap
const { callback: swapCallback } = useSwapCallback({
trade: optimizedTrade,
allowedSlippage,
allowedSlippage: slippage.allowed,
recipientAddressOrName: account ?? null,
signatureData,
deadline,
@@ -184,7 +200,7 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
}, [addTransaction, inputTradeCurrencyAmount, outputTradeCurrencyAmount, setDisplayTxHash, swapCallback, tradeType])
const ButtonText = useCallback(() => {
if (wrapError !== WrapError.NO_ERROR) {
if ((wrapType === WrapType.WRAP || wrapType === WrapType.UNWRAP) && wrapError !== WrapError.NO_ERROR) {
return <WrapErrorText wrapError={wrapError} />
}
switch (wrapType) {
@@ -229,9 +245,16 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
</ActionButton>
{activeTrade && (
<Dialog color="dialog" onClose={handleDialogClose}>
<SummaryDialog trade={activeTrade} allowedSlippage={allowedSlippage} onConfirm={onConfirm} />
<SummaryDialog
trade={activeTrade}
slippage={slippage}
inputUSDC={inputUSDC}
outputUSDC={outputUSDC}
impact={impact}
onConfirm={onConfirm}
/>
</Dialog>
)}
</>
)
}
})

View File

@@ -1,16 +1,17 @@
import { Trans } from '@lingui/macro'
import { Currency, TradeType } from '@uniswap/sdk-core'
import useUSDCPrice from 'hooks/useUSDCPrice'
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import Column from 'lib/components/Column'
import Rule from 'lib/components/Rule'
import Tooltip from 'lib/components/Tooltip'
import { loadingCss } from 'lib/css/loading'
import { WrapType } from 'lib/hooks/swap/useWrapCallback'
import { PriceImpact } from 'lib/hooks/useUSDCPriceImpact'
import { AlertTriangle, Icon, Info, InlineSpinner } from 'lib/icons'
import styled, { ThemedText } from 'lib/theme'
import { ReactNode, useCallback, useMemo, useState } from 'react'
import { ReactNode, useCallback } from 'react'
import { InterfaceTrade } from 'state/routing/types'
import { TextButton } from '../../Button'
import Row from '../../Row'
import Price from '../Price'
import RoutingDiagram from '../RoutingDiagram'
const Loading = styled.span`
@@ -76,43 +77,31 @@ export function WrapCurrency({ loading, wrapType }: { loading: boolean; wrapType
return <Caption icon={Info} caption={<WrapText />} />
}
export function Trade({ trade }: { trade: InterfaceTrade<Currency, Currency, TradeType> }) {
const [flip, setFlip] = useState(true)
const { inputAmount, outputAmount, executionPrice } = trade
const fiatValueInput = useUSDCPrice(inputAmount.currency)
const fiatValueOutput = useUSDCPrice(outputAmount.currency)
const ratio = useMemo(() => {
const [a, b] = flip ? [outputAmount, inputAmount] : [inputAmount, outputAmount]
const priceString = (!flip ? executionPrice : executionPrice?.invert())?.toSignificant(6)
const ratio = `1 ${a.currency.symbol} = ${priceString} ${b.currency.symbol}`
const usdc = !flip
? fiatValueInput
? ` ($${fiatValueInput.toSignificant(6)})`
: null
: fiatValueOutput
? ` ($${fiatValueOutput.toSignificant(6)})`
: null
return (
<ThemedText.Caption userSelect>
<Row gap={0.25}>
{ratio}
{usdc && <ThemedText.Caption color="secondary">{usdc}</ThemedText.Caption>}
</Row>
</ThemedText.Caption>
)
}, [executionPrice, fiatValueInput, fiatValueOutput, flip, inputAmount, outputAmount])
export function Trade({
trade,
outputUSDC,
impact,
}: {
trade: InterfaceTrade<Currency, Currency, TradeType>
outputUSDC?: CurrencyAmount<Currency>
impact: PriceImpact
}) {
return (
<>
<Tooltip placement="bottom" icon={Info}>
<RoutingDiagram trade={trade} />
<Tooltip placement="bottom" icon={impact.warning ? AlertTriangle : Info}>
<Column gap={0.75}>
{impact.warning && (
<>
<ThemedText.Caption>
The output amount is estimated at {impact.display} less than the input amount due to high price impact
</ThemedText.Caption>
<Rule />
</>
)}
<RoutingDiagram trade={trade} />
</Column>
</Tooltip>
<TextButton color="primary" onClick={() => setFlip(!flip)}>
{ratio}
</TextButton>
<Price trade={trade} outputUSDC={outputUSDC} />
</>
)
}

View File

@@ -5,7 +5,7 @@ import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { largeIconCss } from 'lib/icons'
import { Field } from 'lib/state/swap'
import styled, { ThemedText } from 'lib/theme'
import { useMemo } from 'react'
import { memo, useMemo } from 'react'
import { TradeState } from 'state/routing/types'
import Row from '../../Row'
@@ -17,12 +17,13 @@ const ToolbarRow = styled(Row)`
${largeIconCss}
`
export default function Toolbar({ disabled }: { disabled?: boolean }) {
export default memo(function Toolbar({ disabled }: { disabled?: boolean }) {
const { chainId } = useActiveWeb3React()
const {
[Field.INPUT]: { currency: inputCurrency, balance },
[Field.OUTPUT]: { currency: outputCurrency, usdc: outputUSDC },
trade: { trade, state },
currencies: { [Field.INPUT]: inputCurrency, [Field.OUTPUT]: outputCurrency },
currencyBalances: { [Field.INPUT]: balance },
impact,
} = useSwapInfo()
const isRouteLoading = state === TradeState.SYNCING || state === TradeState.LOADING
const isAmountPopulated = useIsAmountPopulated()
@@ -50,7 +51,7 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
return <Caption.InsufficientBalance currency={trade.inputAmount.currency} />
}
if (trade.inputAmount && trade.outputAmount) {
return <Caption.Trade trade={trade} />
return <Caption.Trade trade={trade} outputUSDC={outputUSDC} impact={impact} />
}
}
@@ -59,10 +60,12 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
balance,
chainId,
disabled,
impact,
inputCurrency,
isAmountPopulated,
isRouteLoading,
outputCurrency,
outputUSDC,
trade,
wrapLoading,
wrapType,
@@ -78,4 +81,4 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
</ThemedText.Caption>
</>
)
}
})

View File

@@ -1,4 +1,5 @@
import { Currency } from '@uniswap/sdk-core'
import { useToken } from 'lib/hooks/useCurrency'
import useCurrencyLogoURIs from 'lib/hooks/useCurrencyLogoURIs'
import { MissingToken } from 'lib/icons'
import styled from 'lib/theme'
@@ -13,7 +14,10 @@ interface BaseProps {
type TokenImgProps = BaseProps & Omit<React.ImgHTMLAttributes<HTMLImageElement>, keyof BaseProps>
function TokenImg({ token, ...rest }: TokenImgProps) {
const srcs = useCurrencyLogoURIs(token)
// Use the wrapped token info so that it includes the logoURI.
const tokenInfo = useToken(token.isToken ? token.wrapped.address : undefined) ?? token
const srcs = useCurrencyLogoURIs(tokenInfo)
const [src, setSrc] = useState<string | undefined>()
useEffect(() => {
setSrc(srcs.find((src) => !badSrcs.has(src)))
@@ -24,7 +28,7 @@ function TokenImg({ token, ...rest }: TokenImgProps) {
}, [src, srcs])
if (src) {
return <img src={src} alt={token.name || token.symbol} onError={onError} {...rest} />
return <img src={src} alt={tokenInfo.name || tokenInfo.symbol} onError={onError} {...rest} />
}
return <MissingToken color="secondary" {...rest} />
}

View File

@@ -22,9 +22,14 @@ const StyledTokenButton = styled(Button)<{ empty?: boolean }>`
const TokenButtonRow = styled(Row)<{ collapsed: boolean }>`
height: 1.2em;
max-width: ${({ collapsed }) => (collapsed ? '1.2' : '8.2')}em;
overflow-x: hidden;
// max-width must have an absolute value in order to transition.
max-width: ${({ collapsed }) => (collapsed ? '1.2em' : '12em')};
overflow: hidden;
transition: max-width 0.25s linear;
img {
min-width: 1.2em;
}
`
interface TokenButtonProps {

View File

@@ -5,7 +5,7 @@ import { useCurrencyBalances } from 'lib/hooks/useCurrencyBalance'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import useTokenList, { useIsTokenListLoaded, useQueryCurrencies } from 'lib/hooks/useTokenList'
import styled, { ThemedText } from 'lib/theme'
import { ElementRef, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { ElementRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { currencyId } from 'utils/currencyId'
import Column from '../Column'
@@ -97,7 +97,21 @@ export function TokenSelectDialog({ value, onSelect }: TokenSelectDialogProps) {
)}
<Rule padded />
</Column>
{isLoaded ? <TokenOptions tokens={tokens} onSelect={onSelect} ref={setOptions} /> : <TokenOptionsSkeleton />}
{isLoaded ? (
tokens.length ? (
<TokenOptions tokens={tokens} onSelect={onSelect} ref={setOptions} />
) : (
<Column padded>
<Row justify="center">
<ThemedText.Body1 color="secondary">
<Trans>No results found.</Trans>
</ThemedText.Body1>
</Row>
</Column>
)
) : (
<TokenOptionsSkeleton />
)}
</>
)
}
@@ -109,10 +123,11 @@ interface TokenSelectProps {
onSelect: (value: Currency) => void
}
export default function TokenSelect({ value, collapsed, disabled, onSelect }: TokenSelectProps) {
export default memo(function TokenSelect({ value, collapsed, disabled, onSelect }: TokenSelectProps) {
usePrefetchBalances()
const [open, setOpen] = useState(false)
const onOpen = useCallback(() => setOpen(true), [])
const selectAndClose = useCallback(
(value: Currency) => {
onSelect(value)
@@ -122,7 +137,7 @@ export default function TokenSelect({ value, collapsed, disabled, onSelect }: To
)
return (
<>
<TokenButton value={value} collapsed={collapsed} disabled={disabled} onClick={() => setOpen(true)} />
<TokenButton value={value} collapsed={collapsed} disabled={disabled} onClick={onOpen} />
{open && (
<Dialog color="module" onClose={() => setOpen(false)}>
<TokenSelectDialog value={value} onSelect={selectAndClose} />
@@ -130,4 +145,4 @@ export default function TokenSelect({ value, collapsed, disabled, onSelect }: To
)}
</>
)
}
})

View File

@@ -1,40 +0,0 @@
import { initializeConnector } from '@web3-react/core'
import { EIP1193 } from '@web3-react/eip1193'
import { Actions, Connector, Provider as Eip1193Provider } from '@web3-react/types'
import { Url } from '@web3-react/url'
import { SetStateAction } from 'jotai'
import { RESET, useUpdateAtom } from 'jotai/utils'
import { injectedAtom, urlAtom, Web3ReactState } from 'lib/state/web3'
import { ReactNode, useEffect } from 'react'
interface Web3ProviderProps {
jsonRpcEndpoint?: string
provider?: Eip1193Provider
children: ReactNode
}
function useConnector<T extends { new (actions: Actions, initializer: I): Connector }, I>(
Connector: T,
initializer: I | undefined,
setContext: (update: typeof RESET | SetStateAction<Web3ReactState>) => void
) {
return useEffect(() => {
if (initializer) {
const state = initializeConnector((actions) => new Connector(actions, initializer))
state[0].activate()
setContext(state)
} else {
setContext(RESET)
}
}, [Connector, initializer, setContext])
}
export default function Web3Provider({ jsonRpcEndpoint, provider, children }: Web3ProviderProps) {
const setUrl = useUpdateAtom(urlAtom)
useConnector(Url, jsonRpcEndpoint, setUrl)
const setInjected = useUpdateAtom(injectedAtom)
useConnector(EIP1193, provider, setInjected)
return <>{children}</>
}

View File

@@ -3,6 +3,7 @@ import { Provider as Eip1193Provider } from '@web3-react/types'
import { DEFAULT_LOCALE, SupportedLocale } from 'constants/locales'
import { Provider as AtomProvider } from 'jotai'
import { TransactionsUpdater } from 'lib/hooks/transactions'
import { Web3Provider } from 'lib/hooks/useActiveWeb3React'
import { BlockUpdater } from 'lib/hooks/useBlockNumber'
import useEip1193Provider from 'lib/hooks/useEip1193Provider'
import { UNMOUNTING } from 'lib/hooks/useUnmount'
@@ -15,7 +16,6 @@ import { Provider as ReduxProvider } from 'react-redux'
import { Modal, Provider as DialogProvider } from './Dialog'
import ErrorBoundary, { ErrorHandler } from './Error/ErrorBoundary'
import WidgetPropValidator from './Error/WidgetsPropsValidator'
import Web3Provider from './Web3Provider'
const WidgetWrapper = styled.div<{ width?: number | string }>`
-moz-osx-font-smoothing: grayscale;
@@ -23,6 +23,7 @@ const WidgetWrapper = styled.div<{ width?: number | string }>`
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
background-color: ${({ theme }) => theme.container};
border-radius: ${({ theme }) => theme.borderRadius}em;
box-sizing: border-box;
color: ${({ theme }) => theme.primary};
display: flex;
flex-direction: column;
@@ -30,7 +31,7 @@ const WidgetWrapper = styled.div<{ width?: number | string }>`
font-size: 16px;
font-smooth: always;
font-variant: none;
height: 348px;
height: 356px;
min-width: 300px;
padding: 0.25em;
position: relative;
@@ -39,10 +40,10 @@ const WidgetWrapper = styled.div<{ width?: number | string }>`
* {
box-sizing: border-box;
font-family: ${({ theme }) => theme.fontFamily};
font-family: ${({ theme }) => (typeof theme.fontFamily === 'string' ? theme.fontFamily : theme.fontFamily.font)};
@supports (font-variation-settings: normal) {
font-family: ${({ theme }) => theme.fontFamilyVariable};
font-family: ${({ theme }) => (typeof theme.fontFamily === 'string' ? undefined : theme.fontFamily.variable)};
}
}
`

View File

@@ -10,5 +10,5 @@ export const loadingCss = css`
// need to use isLoading as `loading` is a reserved prop
export const loadingTransitionCss = css<{ isLoading: boolean }>`
${({ isLoading }) => isLoading && loadingCss};
transition: opacity 0.2s ease-in-out;
transition: opacity ${({ isLoading }) => (isLoading ? 0 : 0.2)}s ease-in-out;
`

View File

@@ -1,6 +1,7 @@
import { BigintIsh, CurrencyAmount, Token, TradeType } from '@uniswap/sdk-core'
import { AlphaRouter, AlphaRouterConfig, AlphaRouterParams, ChainId } from '@uniswap/smart-order-router'
import JSBI from 'jsbi'
import useBlockNumber from 'lib/hooks/useBlockNumber'
import { GetQuoteResult } from 'state/routing/types'
import { transformSwapRouteToGetQuoteResult } from 'utils/transformSwapRouteToGetQuoteResult'
@@ -98,3 +99,14 @@ export async function getClientSideQuote(
routerConfig
)
}
/** Used to keep quotes up to date given a certain block age. Returns undefined if past limit. */
export function useFilterFreshQuote(
quoteResult: GetQuoteResult | undefined,
maxBlockAge = 10
): GetQuoteResult | undefined {
const block = useBlockNumber()
if (!block || !quoteResult) return undefined
if (block - (Number(quoteResult.blockNumber) || 0) > maxBlockAge) return undefined
return quoteResult
}

View File

@@ -2,14 +2,16 @@ import { Protocol } from '@uniswap/router-sdk'
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { ChainId } from '@uniswap/smart-order-router'
import useDebounce from 'hooks/useDebounce'
import useLast from 'hooks/useLast'
import { useStablecoinAmountFromFiatValue } from 'hooks/useUSDCPrice'
import { useEffect, useMemo, useState } from 'react'
import { useCallback, useMemo } from 'react'
import { GetQuoteResult, InterfaceTrade, TradeState } from 'state/routing/types'
import { computeRoutes, transformRoutesToTrade } from 'state/routing/utils'
import useWrapCallback, { WrapType } from '../swap/useWrapCallback'
import useActiveWeb3React from '../useActiveWeb3React'
import { getClientSideQuote } from './clientSideSmartOrderRouter'
import usePoll from '../usePoll'
import { getClientSideQuote, useFilterFreshQuote } from './clientSideSmartOrderRouter'
import { useRoutingAPIArguments } from './useRoutingAPIArguments'
/**
@@ -23,14 +25,11 @@ const DistributionPercents: { [key: number]: number } = {
[ChainId.ARBITRUM_ONE]: 25,
[ChainId.ARBITRUM_RINKEBY]: 25,
}
const DEFAULT_DISTRIBUTION_PERCENT = 10
function getConfig(chainId: ChainId | undefined) {
return {
// Limit to only V2 and V3.
protocols: [Protocol.V2, Protocol.V3],
distributionPercent: (chainId && DistributionPercents[chainId]) ?? DEFAULT_DISTRIBUTION_PERCENT,
}
}
@@ -43,22 +42,20 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
state: TradeState
trade: InterfaceTrade<Currency, Currency, TTradeType> | undefined
} {
const amount = useMemo(() => amountSpecified?.asFraction, [amountSpecified])
const [currencyIn, currencyOut] =
tradeType === TradeType.EXACT_INPUT
? [amountSpecified?.currency, otherCurrency]
: [otherCurrency, amountSpecified?.currency]
// Debounce is used to prevent excessive requests to SOR, as it is data intensive.
// This helps provide a "syncing" state the UI can reference for loading animations.
const inputs = useMemo(() => [tradeType, amountSpecified, otherCurrency], [tradeType, amountSpecified, otherCurrency])
const debouncedInputs = useDebounce(inputs, 200)
const isDebouncing = inputs !== debouncedInputs
const chainId = amountSpecified?.currency.chainId
const { library } = useActiveWeb3React()
const [currencyIn, currencyOut]: [Currency | undefined, Currency | undefined] = useMemo(
() =>
tradeType === TradeType.EXACT_INPUT
? [amountSpecified?.currency, otherCurrency]
: [otherCurrency, amountSpecified?.currency],
[amountSpecified, otherCurrency, tradeType]
// Fast user actions (ie updating the input) should be debounced, but currency changes should not.
const [debouncedAmount, debouncedCurrencyIn, debouncedCurrencyOut] = useDebounce(
useMemo(() => [amount, currencyIn, currencyOut], [amount, currencyIn, currencyOut]),
200
)
const isDebouncing =
amount !== debouncedAmount && currencyIn === debouncedCurrencyIn && currencyOut === debouncedCurrencyOut
const queryArgs = useRoutingAPIArguments({
tokenIn: currencyIn,
@@ -67,62 +64,53 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
tradeType,
useClientSideRouter: true,
})
const chainId = amountSpecified?.currency.chainId
const { library } = useActiveWeb3React()
const params = useMemo(() => chainId && library && { chainId, provider: library }, [chainId, library])
const [loading, setLoading] = useState(false)
const [{ data: quoteResult, error }, setResult] = useState<{
data?: GetQuoteResult
error?: unknown
}>({ error: undefined })
const config = useMemo(() => getConfig(chainId), [chainId])
const { type: wrapType } = useWrapCallback()
// When arguments update, make a new call to SOR for updated quote
useEffect(() => {
if (wrapType !== WrapType.NOT_APPLICABLE) {
return
const getQuoteResult = useCallback(async (): Promise<{ data?: GetQuoteResult; error?: unknown }> => {
if (wrapType !== WrapType.NOT_APPLICABLE) return { error: undefined }
if (!queryArgs || !params) return { error: undefined }
try {
return await getClientSideQuote(queryArgs, params, config)
} catch {
return { error: true }
}
setLoading(true)
if (isDebouncing) return
}, [config, params, queryArgs, wrapType])
let stale = false
fetchQuote()
return () => {
stale = true
setLoading(false)
}
const { data, error } = usePoll(getQuoteResult, JSON.stringify(queryArgs), isDebouncing) ?? {
error: undefined,
}
async function fetchQuote() {
if (queryArgs && params) {
let result
try {
result = await getClientSideQuote(queryArgs, params, config)
} catch {
result = { error: true }
}
if (!stale) {
setResult(result)
setLoading(false)
}
}
}
}, [queryArgs, params, config, isDebouncing, wrapType])
const quoteResult = useFilterFreshQuote(data)
const isLoading = !quoteResult
const route = useMemo(
() => computeRoutes(currencyIn, currencyOut, tradeType, quoteResult),
[currencyIn, currencyOut, quoteResult, tradeType]
)
const gasUseEstimateUSD = useStablecoinAmountFromFiatValue(quoteResult?.gasUseEstimateUSD) ?? null
const trade = useMemo(() => {
if (route) {
try {
return route && transformRoutesToTrade(route, tradeType, gasUseEstimateUSD)
} catch (e: unknown) {
console.debug('transformRoutesToTrade failed: ', e)
}
}
return
}, [gasUseEstimateUSD, route, tradeType])
const trade =
useLast(
useMemo(() => {
if (route) {
try {
return route && transformRoutesToTrade(route, tradeType, gasUseEstimateUSD)
} catch (e: unknown) {
console.debug('transformRoutesToTrade failed: ', e)
}
}
return
}, [gasUseEstimateUSD, route, tradeType]),
Boolean
) ?? undefined
// Dont return old trade if currencies dont match.
const isStale =
(currencyIn && !trade?.inputAmount?.currency.equals(currencyIn)) ||
(currencyOut && !trade?.outputAmount?.currency.equals(currencyOut))
return useMemo(() => {
if (!currencyIn || !currencyOut) {
@@ -130,10 +118,14 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
}
// Returns the last trade state while syncing/loading to avoid jank from clearing the last trade while loading.
if (isDebouncing) {
return { state: TradeState.SYNCING, trade }
} else if (loading) {
return { state: TradeState.LOADING, trade }
if (!quoteResult && !error) {
if (isStale) {
return { state: TradeState.LOADING, trade: undefined }
} else if (isDebouncing) {
return { state: TradeState.SYNCING, trade }
} else if (isLoading) {
return { state: TradeState.LOADING, trade }
}
}
let otherAmount = undefined
@@ -156,5 +148,17 @@ export default function useClientSideSmartOrderRouterTrade<TTradeType extends Tr
return { state: TradeState.VALID, trade }
}
return { state: TradeState.INVALID, trade: undefined }
}, [currencyIn, currencyOut, isDebouncing, loading, quoteResult, error, route, queryArgs, trade, tradeType])
}, [
currencyIn,
currencyOut,
error,
quoteResult,
route,
queryArgs,
trade,
isStale,
isDebouncing,
isLoading,
tradeType,
])
}

View File

@@ -83,7 +83,7 @@ export function useIsAmountPopulated() {
export function useSwapAmount(field: Field): [string | undefined, (amount: string) => void] {
const amount = useAtomValue(amountAtom)
const isFieldIndependent = useIsSwapFieldIndependent(field)
const value = useMemo(() => (isFieldIndependent ? amount : undefined), [amount, isFieldIndependent])
const value = isFieldIndependent ? amount : undefined
const updateSwap = useUpdateAtom(swapAtom)
const updateAmount = useCallback(
(amount: string) =>
@@ -101,8 +101,9 @@ export function useSwapCurrencyAmount(field: Field): CurrencyAmount<Currency> |
const isAmountPopulated = useIsAmountPopulated()
const [swapAmount] = useSwapAmount(field)
const [swapCurrency] = useSwapCurrency(field)
const currencyAmount = useMemo(() => tryParseCurrencyAmount(swapAmount, swapCurrency), [swapAmount, swapCurrency])
if (isFieldIndependent && isAmountPopulated) {
return tryParseCurrencyAmount(swapAmount, swapCurrency)
return currencyAmount
}
return
}

View File

@@ -1,151 +1,104 @@
import { Trans } from '@lingui/macro'
import { Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'
import { FeeOptions } from '@uniswap/v3-sdk'
import { atom } from 'jotai'
import { useAtomValue, useUpdateAtom } from 'jotai/utils'
import { useCurrencyBalances } from 'lib/hooks/useCurrencyBalance'
import { feeOptionsAtom, Field, swapAtom } from 'lib/state/swap'
import { Field, swapAtom } from 'lib/state/swap'
import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
import { ReactNode, useEffect, useMemo } from 'react'
import { useEffect, useMemo } from 'react'
import { InterfaceTrade, TradeState } from 'state/routing/types'
import { isAddress } from '../../../utils'
import useActiveWeb3React from '../useActiveWeb3React'
import useAllowedSlippage from '../useAllowedSlippage'
import useSlippage, { Slippage } from '../useSlippage'
import useUSDCPriceImpact, { PriceImpact } from '../useUSDCPriceImpact'
import { useBestTrade } from './useBestTrade'
import useWrapCallback, { WrapType } from './useWrapCallback'
interface SwapField {
currency?: Currency
amount?: CurrencyAmount<Currency>
balance?: CurrencyAmount<Currency>
usdc?: CurrencyAmount<Currency>
}
interface SwapInfo {
currencies: { [field in Field]?: Currency }
currencyBalances: { [field in Field]?: CurrencyAmount<Currency> }
tradeCurrencyAmounts: { [field in Field]?: CurrencyAmount<Currency> }
[Field.INPUT]: SwapField
[Field.OUTPUT]: SwapField
trade: {
trade?: InterfaceTrade<Currency, Currency, TradeType>
state: TradeState
}
allowedSlippage: Percent
feeOptions: FeeOptions | undefined
}
const BAD_RECIPIENT_ADDRESSES: { [address: string]: true } = {
'0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f': true, // v2 factory
'0xf164fC0Ec4E93095b804a4795bBe1e041497b92a': true, // v2 router 01
'0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D': true, // v2 router 02
slippage: Slippage
impact: PriceImpact
}
// from the current swap inputs, compute the best trade and return it.
function useComputeSwapInfo(): SwapInfo {
const { account } = useActiveWeb3React()
const {
independentField,
amount,
[Field.INPUT]: inputCurrency,
[Field.OUTPUT]: outputCurrency,
} = useAtomValue(swapAtom)
const feeOptions = useAtomValue(feeOptionsAtom)
const to = account
const relevantTokenBalances = useCurrencyBalances(
account,
useMemo(() => [inputCurrency ?? undefined, outputCurrency ?? undefined], [inputCurrency, outputCurrency])
)
const { type: wrapType } = useWrapCallback()
const isWrapping = wrapType === WrapType.WRAP || wrapType === WrapType.UNWRAP
const { independentField, amount, [Field.INPUT]: currencyIn, [Field.OUTPUT]: currencyOut } = useAtomValue(swapAtom)
const isExactIn = independentField === Field.INPUT
const parsedAmount = useMemo(
() => tryParseCurrencyAmount(amount, (isExactIn ? inputCurrency : outputCurrency) ?? undefined),
[inputCurrency, isExactIn, outputCurrency, amount]
)
//@TODO(ianlapham): this would eventually be replaced with routing api logic.
const parsedAmount = useMemo(
() => tryParseCurrencyAmount(amount, (isExactIn ? currencyIn : currencyOut) ?? undefined),
[amount, isExactIn, currencyIn, currencyOut]
)
const trade = useBestTrade(
isExactIn ? TradeType.EXACT_INPUT : TradeType.EXACT_OUTPUT,
parsedAmount,
(isExactIn ? outputCurrency : inputCurrency) ?? undefined
(isExactIn ? currencyOut : currencyIn) ?? undefined
)
const currencies = useMemo(
() => ({
[Field.INPUT]: inputCurrency ?? undefined,
[Field.OUTPUT]: outputCurrency ?? undefined,
}),
[inputCurrency, outputCurrency]
const amountIn = useMemo(
() => (isWrapping || isExactIn ? parsedAmount : trade.trade?.inputAmount),
[isExactIn, isWrapping, parsedAmount, trade.trade?.inputAmount]
)
const amountOut = useMemo(
() => (isWrapping || !isExactIn ? parsedAmount : trade.trade?.outputAmount),
[isExactIn, isWrapping, parsedAmount, trade.trade?.outputAmount]
)
const [balanceIn, balanceOut] = useCurrencyBalances(
account,
useMemo(() => [currencyIn, currencyOut], [currencyIn, currencyOut])
)
const currencyBalances = useMemo(
() => ({
[Field.INPUT]: relevantTokenBalances[0],
[Field.OUTPUT]: relevantTokenBalances[1],
}),
[relevantTokenBalances]
)
const tradeCurrencyAmounts = useMemo(
() => ({
[Field.INPUT]: trade.trade?.inputAmount,
[Field.OUTPUT]: trade.trade?.outputAmount,
}),
[trade.trade?.inputAmount, trade.trade?.outputAmount]
)
const allowedSlippage = useAllowedSlippage(trade.trade)
const inputError = useMemo(() => {
let inputError: ReactNode | undefined
if (!account) {
inputError = <Trans>Connect Wallet</Trans>
}
if (!currencies[Field.INPUT] || !currencies[Field.OUTPUT]) {
inputError = inputError ?? <Trans>Select a token</Trans>
}
if (!parsedAmount) {
inputError = inputError ?? <Trans>Enter an amount</Trans>
}
const formattedTo = isAddress(to)
if (!to || !formattedTo) {
inputError = inputError ?? <Trans>Enter a recipient</Trans>
} else {
if (BAD_RECIPIENT_ADDRESSES[formattedTo]) {
inputError = inputError ?? <Trans>Invalid recipient</Trans>
}
}
// compare input balance to max input based on version
const [balanceIn, amountIn] = [currencyBalances[Field.INPUT], trade.trade?.maximumAmountIn(allowedSlippage)]
if (balanceIn && amountIn && balanceIn.lessThan(amountIn)) {
inputError = <Trans>Insufficient {amountIn.currency.symbol} balance</Trans>
}
return inputError
}, [account, allowedSlippage, currencies, currencyBalances, parsedAmount, to, trade.trade])
// Compute slippage and impact off of the trade so that it refreshes with the trade.
// (Using amountIn/amountOut would show (incorrect) intermediate values.)
const slippage = useSlippage(trade.trade)
const {
inputUSDC: usdcIn,
outputUSDC: usdcOut,
priceImpact: impact,
} = useUSDCPriceImpact(trade.trade?.inputAmount, trade.trade?.outputAmount)
return useMemo(
() => ({
currencies,
currencyBalances,
inputError,
[Field.INPUT]: {
currency: currencyIn,
amount: amountIn,
balance: balanceIn,
usdc: usdcIn,
},
[Field.OUTPUT]: {
currency: currencyOut,
amount: amountOut,
balance: balanceOut,
usdc: usdcOut,
},
trade,
tradeCurrencyAmounts,
allowedSlippage,
feeOptions,
slippage,
impact,
}),
[currencies, currencyBalances, inputError, trade, tradeCurrencyAmounts, allowedSlippage, feeOptions]
[amountIn, amountOut, balanceIn, balanceOut, currencyIn, currencyOut, impact, slippage, trade, usdcIn, usdcOut]
)
}
const swapInfoAtom = atom<SwapInfo>({
currencies: {},
currencyBalances: {},
[Field.INPUT]: {},
[Field.OUTPUT]: {},
trade: { state: TradeState.INVALID },
tradeCurrencyAmounts: {},
allowedSlippage: new Percent(0),
feeOptions: undefined,
slippage: { auto: true, allowed: new Percent(0) },
impact: {},
})
export function SwapInfoUpdater() {

View File

@@ -3,9 +3,12 @@ import { nativeOnChain } from 'constants/tokens'
import { useUpdateAtom } from 'jotai/utils'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { useToken } from 'lib/hooks/useCurrency'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { Field, Swap, swapAtom } from 'lib/state/swap'
import { useCallback, useLayoutEffect, useState } from 'react'
import useOnSupportedNetwork from '../useOnSupportedNetwork'
export type DefaultAddress = string | { [chainId: number]: string | 'NATIVE' } | 'NATIVE'
export interface TokenDefaults {
@@ -18,7 +21,7 @@ export interface TokenDefaults {
function useDefaultToken(
defaultAddress: DefaultAddress | undefined,
chainId: number | undefined
): Currency | null | undefined {
): Currency | undefined {
let address = undefined
if (typeof defaultAddress === 'string') {
address = defaultAddress
@@ -26,10 +29,14 @@ function useDefaultToken(
address = defaultAddress[chainId]
}
const token = useToken(address)
if (chainId && address === 'NATIVE') {
const onSupportedNetwork = useOnSupportedNetwork()
// Only use native currency if chain ID is in supported chains. ExtendedEther will error otherwise.
if (chainId && address === 'NATIVE' && onSupportedNetwork) {
return nativeOnChain(chainId)
}
return token
return token ?? undefined
}
export default function useSyncTokenDefaults({
@@ -40,14 +47,19 @@ export default function useSyncTokenDefaults({
}: TokenDefaults) {
const updateSwap = useUpdateAtom(swapAtom)
const { chainId } = useActiveWeb3React()
const defaultInputToken = useDefaultToken(defaultInputTokenAddress, chainId)
const onSupportedNetwork = useOnSupportedNetwork()
const nativeCurrency = useNativeCurrency()
const defaultOutputToken = useDefaultToken(defaultOutputTokenAddress, chainId)
const defaultInputToken =
useDefaultToken(defaultInputTokenAddress, chainId) ??
// Default the input token to the native currency if it is not the output token.
(defaultOutputToken !== nativeCurrency && onSupportedNetwork ? nativeCurrency : undefined)
const setToDefaults = useCallback(() => {
const defaultSwapState: Swap = {
amount: '',
[Field.INPUT]: defaultInputToken || undefined,
[Field.OUTPUT]: defaultOutputToken || undefined,
[Field.INPUT]: defaultInputToken,
[Field.OUTPUT]: defaultOutputToken,
independentField: Field.INPUT,
}
if (defaultInputToken && defaultInputAmount) {

View File

@@ -44,12 +44,7 @@ export default function useWrapCallback(): UseWrapCallbackReturns {
const { account, chainId } = useActiveWeb3React()
const [{ loading, error }, setWrapState] = useAtom(wrapState)
const wrappedNativeCurrencyContract = useWETHContract()
const {
amount,
independentField,
[Field.INPUT]: inputCurrency,
[Field.OUTPUT]: outputCurrency,
} = useAtomValue(swapAtom)
const { amount, [Field.INPUT]: inputCurrency, [Field.OUTPUT]: outputCurrency } = useAtomValue(swapAtom)
const wrapType = useMemo(() => {
if (!inputCurrency || !outputCurrency || !chainId) {
@@ -64,12 +59,10 @@ export default function useWrapCallback(): UseWrapCallbackReturns {
return WrapType.NOT_APPLICABLE
}, [chainId, inputCurrency, outputCurrency])
const isExactIn = independentField === Field.INPUT
const parsedAmount = useMemo(
() => tryParseCurrencyAmount(amount, (isExactIn ? inputCurrency : outputCurrency) ?? undefined),
[inputCurrency, isExactIn, outputCurrency, amount]
const parsedAmountIn = useMemo(
() => tryParseCurrencyAmount(amount, inputCurrency ?? undefined),
[inputCurrency, amount]
)
const parsedAmountIn = isExactIn ? parsedAmount : undefined
const relevantTokenBalances = useCurrencyBalances(
account,
@@ -83,7 +76,7 @@ export default function useWrapCallback(): UseWrapCallbackReturns {
[relevantTokenBalances]
)
const hasInputAmount = Boolean(parsedAmount?.greaterThan('0'))
const hasInputAmount = Boolean(parsedAmountIn?.greaterThan('0'))
const sufficientBalance = parsedAmountIn && !currencyBalances[Field.INPUT]?.lessThan(parsedAmountIn)
useEffect(() => {
@@ -118,7 +111,11 @@ export default function useWrapCallback(): UseWrapCallbackReturns {
setWrapState((state) => ({ ...state, loading: true }))
const result = await (wrapType === WrapType.WRAP
? wrappedNativeCurrencyContract.deposit({ value: `0x${parsedAmountIn.quotient.toString(16)}` })
: wrappedNativeCurrencyContract.withdraw(`0x${parsedAmountIn.quotient.toString(16)}`))
: wrappedNativeCurrencyContract.withdraw(`0x${parsedAmountIn.quotient.toString(16)}`)
).catch((e: unknown) => {
setWrapState((state) => ({ ...state, loading: false }))
throw e
})
// resolve loading state after one confirmation
result.wait(1).finally(() => setWrapState((state) => ({ ...state, loading: false })))
return Promise.resolve(result)

View File

@@ -1,19 +0,0 @@
import { Web3ReactHooks } from '@web3-react/core'
import { useAtomValue } from 'jotai/utils'
import { injectedAtom, urlAtom, Web3ReactState } from 'lib/state/web3'
export function useActiveWeb3ReactState(): Web3ReactState {
const injected = useAtomValue(injectedAtom)
const url = useAtomValue(urlAtom)
return injected[1].useIsActive() ? injected : url
}
export function useActiveWeb3ReactHooks(): Web3ReactHooks {
const [, hooks] = useActiveWeb3ReactState()
return hooks
}
export default function useActiveWeb3React() {
const { useProvider, useWeb3React } = useActiveWeb3ReactHooks()
return useWeb3React(useProvider())
}

View File

@@ -0,0 +1,63 @@
import { getPriorityConnector, initializeConnector, Web3ReactHooks } from '@web3-react/core'
import { EIP1193 } from '@web3-react/eip1193'
import { EMPTY } from '@web3-react/empty'
import { Actions, Connector, Provider as Eip1193Provider } from '@web3-react/types'
import { Url } from '@web3-react/url'
import { useAtom, WritableAtom } from 'jotai'
import { useAtomValue } from 'jotai/utils'
import { atomWithDefault, RESET, useUpdateAtom } from 'jotai/utils'
import { PropsWithChildren, useEffect } from 'react'
const [connector, hooks] = initializeConnector(() => EMPTY)
const EMPTY_CONNECTOR: [Connector, Web3ReactHooks] = [connector, hooks]
const urlConnectorAtom = atomWithDefault<[Connector, Web3ReactHooks]>(() => EMPTY_CONNECTOR)
const injectedConnectorAtom = atomWithDefault<[Connector, Web3ReactHooks]>(() => EMPTY_CONNECTOR)
const web3Atom = atomWithDefault<ReturnType<typeof hooks.useWeb3React>>(() => ({
connector: EMPTY_CONNECTOR[0],
library: undefined,
chainId: undefined,
account: undefined,
active: false,
error: undefined,
}))
export default function useActiveWeb3React() {
return useAtomValue(web3Atom)
}
function useConnector<T extends { new (actions: Actions, initializer: I): Connector }, I>(
connectorAtom: WritableAtom<[Connector, Web3ReactHooks], typeof RESET | [Connector, Web3ReactHooks]>,
Connector: T,
initializer: I | undefined
) {
const [connector, setConnector] = useAtom(connectorAtom)
useEffect(() => {
if (initializer) {
const [connector, hooks] = initializeConnector((actions) => new Connector(actions, initializer))
connector.activate()
setConnector([connector, hooks])
} else {
setConnector(RESET)
}
}, [Connector, initializer, setConnector])
return connector
}
interface Web3ProviderProps {
provider?: Eip1193Provider
jsonRpcEndpoint?: string
}
export function Web3Provider({ provider, jsonRpcEndpoint, children }: PropsWithChildren<Web3ProviderProps>) {
const injectedConnector = useConnector(injectedConnectorAtom, EIP1193, provider)
const urlConnector = useConnector(urlConnectorAtom, Url, jsonRpcEndpoint)
const priorityConnector = getPriorityConnector(injectedConnector, urlConnector)
const priorityProvider = priorityConnector.usePriorityProvider()
const priorityWeb3React = priorityConnector.usePriorityWeb3React(priorityProvider)
const setWeb3 = useUpdateAtom(web3Atom)
useEffect(() => {
setWeb3(priorityWeb3React)
}, [priorityWeb3React, setWeb3])
return <>{children}</>
}

View File

@@ -1,27 +0,0 @@
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import useAutoSlippageTolerance from 'hooks/useAutoSlippageTolerance'
import { useAtomValue } from 'jotai/utils'
import { autoSlippageAtom, maxSlippageAtom } from 'lib/state/settings'
import { InterfaceTrade } from 'state/routing/types'
export function toPercent(maxSlippage: number | undefined): Percent | undefined {
if (!maxSlippage) return undefined
const numerator = Math.floor(maxSlippage * 100)
return new Percent(numerator, 10_000)
}
/** Returns the user-inputted max slippage. */
export default function useAllowedSlippage(trade: InterfaceTrade<Currency, Currency, TradeType> | undefined): Percent {
const autoSlippage = useAutoSlippageTolerance(trade)
const maxSlippage = toPercent(useAtomValue(maxSlippageAtom))
return useAtomValue(autoSlippageAtom) ? autoSlippage : maxSlippage ?? autoSlippage
}
export const MAX_VALID_SLIPPAGE = new Percent(1, 2)
export const MIN_HIGH_SLIPPAGE = new Percent(1, 100)
export function getSlippageWarning(slippage?: Percent): 'warning' | 'error' | undefined {
if (slippage?.greaterThan(MAX_VALID_SLIPPAGE)) return 'error'
if (slippage?.greaterThan(MIN_HIGH_SLIPPAGE)) return 'warning'
return
}

View File

@@ -16,6 +16,12 @@ class Eip1193Bridge extends ExperimentalEip1193Bridge {
const result = await this.provider.getNetwork()
return '0x' + result.chainId.toString(16)
}
case 'eth_requestAccounts':
try {
return await super.send(method, params)
} catch (e) {
return this.send('eth_accounts')
}
case 'eth_sendTransaction': {
if (!this.signer) break

64
src/lib/hooks/usePoll.ts Normal file
View File

@@ -0,0 +1,64 @@
import ms from 'ms.macro'
import { useEffect, useMemo, useState } from 'react'
const DEFAULT_POLLING_INTERVAL = ms`15s`
const DEFAULT_KEEP_UNUSED_DATA_FOR = ms`10s`
export default function usePoll<T>(
fetch: () => Promise<T>,
key = '',
check = false, // set to true to check the cache without initiating a new request
pollingInterval = DEFAULT_POLLING_INTERVAL,
keepUnusedDataFor = DEFAULT_KEEP_UNUSED_DATA_FOR
): T | undefined {
const cache = useMemo(() => new Map<string, { ttl: number; result?: T }>(), [])
const [, setData] = useState<{ key: string; result?: T }>({ key })
useEffect(() => {
if (check) return
let timeout: number
const entry = cache.get(key)
if (entry && entry.ttl + keepUnusedDataFor > Date.now()) {
// If there is a fresh entry, return it and queue the next poll.
setData({ key, result: entry.result })
timeout = setTimeout(poll, Math.max(0, entry.ttl - Date.now()))
} else {
// Otherwise, set a new entry (to avoid duplicate polling) and trigger a poll immediately.
cache.set(key, { ttl: Date.now() + pollingInterval })
setData({ key })
poll()
}
return () => {
clearTimeout(timeout)
}
async function poll(ttl = Date.now() + pollingInterval) {
timeout = setTimeout(poll, pollingInterval)
const result = await fetch()
// Always set the result in the cache, but only set it as data if the key is still being queried.
cache.set(key, { ttl, result })
setData((data) => {
return data.key === key ? { key, result } : data
})
}
}, [cache, check, fetch, keepUnusedDataFor, key, pollingInterval])
useEffect(() => {
// Cleanup stale entries when a new key is used.
void key
const now = Date.now()
cache.forEach(({ ttl }, key) => {
if (ttl + keepUnusedDataFor <= now) {
cache.delete(key)
}
})
}, [cache, keepUnusedDataFor, key])
// Use data.result to force a re-render, but actually retrieve the data from the cache.
// This gives the _first_ render access to a new result, avoiding lag introduced by React.
return cache.get(key)?.result
}

View File

@@ -0,0 +1,41 @@
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import useAutoSlippageTolerance from 'hooks/useAutoSlippageTolerance'
import { useAtomValue } from 'jotai/utils'
import { autoSlippageAtom, maxSlippageAtom } from 'lib/state/settings'
import { useMemo } from 'react'
import { InterfaceTrade } from 'state/routing/types'
export function toPercent(maxSlippage: number | undefined): Percent | undefined {
if (!maxSlippage) return undefined
const numerator = Math.floor(maxSlippage * 100)
return new Percent(numerator, 10_000)
}
export interface Slippage {
auto: boolean
allowed: Percent
warning?: 'warning' | 'error'
}
/** Returns the allowed slippage, and whether it is auto-slippage. */
export default function useSlippage(trade: InterfaceTrade<Currency, Currency, TradeType> | undefined): Slippage {
const shouldUseAutoSlippage = useAtomValue(autoSlippageAtom)
const autoSlippage = useAutoSlippageTolerance(shouldUseAutoSlippage ? trade : undefined)
const maxSlippageValue = useAtomValue(maxSlippageAtom)
const maxSlippage = useMemo(() => toPercent(maxSlippageValue), [maxSlippageValue])
return useMemo(() => {
const auto = shouldUseAutoSlippage || !maxSlippage
const allowed = shouldUseAutoSlippage ? autoSlippage : maxSlippage ?? autoSlippage
const warning = auto ? undefined : getSlippageWarning(allowed)
return { auto, allowed, warning }
}, [autoSlippage, maxSlippage, shouldUseAutoSlippage])
}
export const MAX_VALID_SLIPPAGE = new Percent(1, 2)
export const MIN_HIGH_SLIPPAGE = new Percent(1, 100)
export function getSlippageWarning(slippage?: Percent): 'warning' | 'error' | undefined {
if (slippage?.greaterThan(MAX_VALID_SLIPPAGE)) return 'error'
if (slippage?.greaterThan(MIN_HIGH_SLIPPAGE)) return 'warning'
return
}

View File

@@ -1,7 +1,7 @@
import { NativeCurrency, Token } from '@uniswap/sdk-core'
import { TokenInfo, TokenList } from '@uniswap/token-lists'
import { atom } from 'jotai'
import { useAtomValue, useUpdateAtom } from 'jotai/utils'
import { atom, useAtom } from 'jotai'
import { useAtomValue } from 'jotai/utils'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import resolveENSContentHash from 'lib/utils/resolveENSContentHash'
import { useCallback, useEffect, useMemo, useState } from 'react'
@@ -14,31 +14,35 @@ import { validateTokens } from './validateTokenList'
export const DEFAULT_TOKEN_LIST = 'https://gateway.ipfs.io/ipns/tokens.uniswap.org'
const chainTokenMapAtom = atom<ChainTokenMap | undefined>(undefined)
const chainTokenMapAtom = atom<ChainTokenMap | null>(null)
export function useIsTokenListLoaded() {
return Boolean(useAtomValue(chainTokenMapAtom))
}
export function useSyncTokenList(list: string | TokenInfo[] = DEFAULT_TOKEN_LIST): void {
const { chainId, library } = useActiveWeb3React()
const setChainTokenMap = useUpdateAtom(chainTokenMapAtom)
// Error boundaries will not catch (non-rendering) async errors, but it should still be shown
const [error, setError] = useState<Error>()
if (error) throw error
const [chainTokenMap, setChainTokenMap] = useAtom(chainTokenMapAtom)
useEffect(() => setChainTokenMap(null), [list, setChainTokenMap])
const { chainId, library } = useActiveWeb3React()
const resolver = useCallback(
(ensName: string) => {
if (library && chainId === 1) {
// TODO(zzmp): Use network resolver when wallet is not on chainId === 1.
return resolveENSContentHash(ensName, library)
}
throw new Error('Could not construct mainnet ENS resolver')
},
[chainId, library]
)
useEffect(() => {
// If the list was already loaded, don't reload it.
if (chainTokenMap) return
let stale = false
activateList(list)
return () => {
@@ -53,19 +57,20 @@ export function useSyncTokenList(list: string | TokenInfo[] = DEFAULT_TOKEN_LIST
} else {
tokens = await validateTokens(list)
}
const tokenMap = tokensToChainTokenMap(tokens) // also caches the fetched tokens, so it is invoked even if stale
// tokensToChainTokenMap also caches the fetched tokens, so it must be invoked even if stale.
const map = tokensToChainTokenMap(tokens)
if (!stale) {
setChainTokenMap(tokenMap)
setChainTokenMap(map)
setError(undefined)
}
} catch (e: unknown) {
if (!stale) {
setChainTokenMap(undefined)
// Do not update the token map, in case the map was already resolved without error on mainnet.
setError(e as Error)
}
}
}
}, [list, resolver, setChainTokenMap])
}, [chainTokenMap, list, resolver, setChainTokenMap])
}
export default function useTokenList(): WrappedTokenInfo[] {

View File

@@ -0,0 +1,45 @@
import { Currency, CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'
import { useUSDCValue } from 'hooks/useUSDCPrice'
import { useMemo } from 'react'
import { computeFiatValuePriceImpact } from 'utils/computeFiatValuePriceImpact'
import { getPriceImpactWarning } from 'utils/prices'
export interface PriceImpact {
display?: string
warning?: 'warning' | 'error'
}
/**
* Computes input/output USDC equivalents and the price impact.
* Returns the price impact as a human readable string.
*/
export default function useUSDCPriceImpact(
inputAmount: CurrencyAmount<Currency> | undefined,
outputAmount: CurrencyAmount<Currency> | undefined
): {
inputUSDC?: CurrencyAmount<Token>
outputUSDC?: CurrencyAmount<Token>
priceImpact: PriceImpact
} {
const inputUSDC = useUSDCValue(inputAmount) ?? undefined
const outputUSDC = useUSDCValue(outputAmount) ?? undefined
return useMemo(() => {
const priceImpact = computeFiatValuePriceImpact(inputUSDC, outputUSDC)
const warning = getPriceImpactWarning(priceImpact)
return {
inputUSDC,
outputUSDC,
priceImpact: {
priceImpact,
display: priceImpact && toHumanReadablePriceImpact(priceImpact),
warning,
},
}
}, [inputUSDC, outputUSDC])
}
function toHumanReadablePriceImpact(priceImpact: Percent): string {
const sign = priceImpact.lessThan(0) ? '+' : ''
const number = parseFloat(priceImpact.multiply(-1)?.toSignificant(3))
return `${sign}${number}%`
}

View File

@@ -81,7 +81,7 @@ export async function dynamicActivate(locale: SupportedLocale) {
// There are no default messages in production; instead, bundle the default to save a network request:
// see https://github.com/lingui/js-lingui/issues/388#issuecomment-497779030
const catalog =
locale === DEFAULT_LOCALE ? DEFAULT_CATALOG : await import(`${process.env.REACT_APP_LOCALES}/${locale}`)
locale === DEFAULT_LOCALE ? DEFAULT_CATALOG : await import(`${process.env.REACT_APP_LOCALES}/${locale}.js`)
// Bundlers will either export it as default or as a named export named default.
i18n.load(locale, catalog.messages || catalog.default.messages)
i18n.activate(locale)

View File

@@ -109,17 +109,18 @@ export const Check = styled(icon(CheckIcon))`
`
export const Expando = styled(icon(ExpandoIcon))<{ open: boolean }>`
path {
.left,
.right {
transition: transform 0.25s ease-in-out;
will-change: transform;
}
&:first-child {
transform: ${({ open }) => open && 'translateX(-25%)'};
}
.left {
transform: ${({ open }) => (open ? undefined : 'translateX(-25%)')};
}
&:last-child {
transform: ${({ open }) => open && 'translateX(25%)'};
}
.right {
transform: ${({ open }) => (open ? undefined : 'translateX(25%)')};
}
`

View File

@@ -1,11 +0,0 @@
import { initializeConnector, Web3ReactHooks } from '@web3-react/core'
import { EMPTY } from '@web3-react/empty'
import { Connector, Web3ReactStore } from '@web3-react/types'
import { atomWithDefault } from 'jotai/utils'
export type Web3ReactState = [Connector, Web3ReactHooks, Web3ReactStore]
const EMPTY_CONNECTOR = initializeConnector(() => EMPTY)
export const urlAtom = atomWithDefault<Web3ReactState>(() => EMPTY_CONNECTOR)
export const injectedAtom = atomWithDefault<Web3ReactState>(() => EMPTY_CONNECTOR)

View File

@@ -73,8 +73,10 @@ export const darkTheme: Colors = {
export const defaultTheme = {
borderRadius: 1,
fontFamily: '"Inter", sans-serif',
fontFamilyVariable: '"InterVariable", sans-serif',
fontFamily: {
font: '"Inter", sans-serif',
variable: '"InterVariable", sans-serif',
},
fontFamilyCode: 'IBM Plex Mono',
tokenColorExtraction: false,
...lightTheme,

View File

@@ -27,8 +27,12 @@ export type Color = keyof Colors
export interface Attributes {
borderRadius: boolean | number
fontFamily: string
fontFamilyVariable: string
fontFamily:
| string
| {
font: string
variable: string
}
fontFamilyCode: string
tokenColorExtraction: boolean
}

View File

@@ -6,19 +6,35 @@ interface FormatLocaleNumberArgs {
locale: string | null | undefined
options?: Intl.NumberFormatOptions
sigFigs?: number
fixedDecimals?: number
}
export default function formatLocaleNumber({ number, locale, sigFigs, options = {} }: FormatLocaleNumberArgs): string {
export default function formatLocaleNumber({
number,
locale,
sigFigs,
fixedDecimals,
options = {},
}: FormatLocaleNumberArgs): string {
let localeArg: string | string[]
if (!locale || (locale && !SUPPORTED_LOCALES.includes(locale))) {
localeArg = DEFAULT_LOCALE
} else {
localeArg = [locale, DEFAULT_LOCALE]
}
options.maximumSignificantDigits = options.maximumSignificantDigits || sigFigs
options.minimumFractionDigits = options.minimumFractionDigits || fixedDecimals
options.maximumFractionDigits = options.maximumFractionDigits || fixedDecimals
// Fixed decimals should override significant figures.
options.maximumSignificantDigits = options.maximumSignificantDigits || fixedDecimals ? undefined : sigFigs
let numberString: number
if (typeof number === 'number') {
return number.toLocaleString(localeArg, options)
numberString = fixedDecimals ? parseFloat(number.toFixed(fixedDecimals)) : number
} else {
return parseFloat(number.toSignificant(sigFigs)).toLocaleString(localeArg, options)
const baseString = parseFloat(number.toSignificant(sigFigs))
numberString = fixedDecimals ? parseFloat(baseString.toFixed(fixedDecimals)) : baseString
}
return numberString.toLocaleString(localeArg, options)
}

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: af_ZA\n"
"Language-Team: Afrikaans\n"
@@ -458,8 +458,8 @@ msgstr "Versamel"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Versamel as WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Versamel as {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Bevestig transaksie in beursie"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Gedetailleerd"
msgid "Details"
msgstr "Besonderhede"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Ondersteun die Oekraïense regering direk deur tokens te skenk."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Ontkoppel"
@@ -708,10 +703,6 @@ msgstr "Verwerp"
msgid "Docs"
msgstr "Dokumente"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Skenk aan die Oekraïne"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Sien u nie een van u v2-posisies nie? <0> Voer dit in.</0>"
@@ -732,7 +723,6 @@ msgstr "Doeltreffendheidsvergelyking"
msgid "Enter a percent"
msgstr "Voer 'n persentasie in"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Voer 'n ontvanger in"
@@ -748,7 +738,6 @@ msgstr "Voer 'n adres in om 'n UNI-eis te aktiveer. As die adres 'n UNI kan eis,
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Versteek geslote posisies"
msgid "High Price Impact"
msgstr "Hoë prysimpak"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Hoë prys impak"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Hoë gly"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Hoë glip verhoog die risiko van prysbeweging"
@@ -983,7 +977,6 @@ msgstr "Onvoldoende likiditeit in die swembad vir jou handel"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ongeldige reeks gekies. Die minimum prys moet laer wees as die maksimum prys."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ongeldige ontvanger"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Geen voorstelle gevind nie."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Geen resultate gevind."
@@ -1304,10 +1297,6 @@ msgstr "Optimistiese Etherscan"
msgid "Out of range"
msgstr "Buite bereik"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Uitset word geskat."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Die uitset word geskat. As die prys met meer as {0}% verander, sal u tra
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Die uitset word geskat. U sal minstens <0>{0} {1}</0> ontvang, anders gaan die transaksie terug."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Uitset word geskat. Jy sal ten minste {0} {1} ontvang of die transaksie sal terugdraai."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Uitset word geskat. Jy sal hoogstens {0} {1} stuur of die transaksie sal terugdraai."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Uitset sal na <0>{0}</0> gestuur word"
@@ -1594,7 +1591,6 @@ msgstr "Kies 'n netwerk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "U sal ook fooie wat u uit hierdie posisie verdien, invorder."
msgid "You will receive"
msgstr "U sal ontvang"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Jy sal ten minste {0} {1} of die transaksie sal terugdraai."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Jy sal hoogstens {0} {1} of die transaksie sal terugdraai."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "U V2-likiditeit"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ar_SA\n"
"Language-Team: Arabic\n"
@@ -458,8 +458,8 @@ msgstr "اجمع"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "اجمع كـ WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "اجمع كـ {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "تأكيد المعاملة في المحفظة"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "مفصل"
msgid "Details"
msgstr "التفاصيل"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "دعم الحكومة الأوكرانية مباشرة من خلال التبرع بالرموز."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "قطع الاتصال"
@@ -708,10 +703,6 @@ msgstr "تجاهل"
msgid "Docs"
msgstr "الوثائق"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "تبرع لأوكرانيا"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "لا ترى أحد مراكز v2 الخاصة بك؟ <0>قم باستيراده.</0>"
@@ -732,7 +723,6 @@ msgstr "مقارنة الكفاءة"
msgid "Enter a percent"
msgstr "أدخل نسبة مئوية"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "أدخل المستلم"
@@ -748,7 +738,6 @@ msgstr "أدخل عنوانًا لتشغيل مطالبة UNI. إذا كان ا
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "إخفاء المراكز المغلقة"
msgid "High Price Impact"
msgstr "تأثير ارتفاع السعر"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "تأثير سعر مرتفع"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "ارتفاع سعر الانزلاق"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "يزيد الانزلاق العالي من مخاطر حركة السعر"
@@ -983,7 +977,6 @@ msgstr "سيولة غير كافية في المجمع لتداولك"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "النطاق المحدد غير صالح. يجب أن يكون الحد الأدنى للسعر أقل من الحد الأقصى للسعر."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "مستلم غير صالح"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "لا توجد مقترحات."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "لا توجد نتائج."
@@ -1304,10 +1297,6 @@ msgstr "متفائل Etherscan"
msgid "Out of range"
msgstr "خارج النطاق"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "الناتج يقدر."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "الناتج تقديري. إذا تغير السعر بأكثر من {0
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "الناتج تقديري. سوف تتلقى على الأقل <0>{0} {1}</0> أو سوف تعود المعاملة."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "الناتج يقدر. سوف تتلقى {0} {1} على الأقل أو ستعود المعاملة."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "الناتج يقدر. سوف ترسل {0} {1} على الأكثر وإلا ستعود المعاملة."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "سيتم إرسال الناتج إلى <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "حدد شبكة"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "سوف تحصل أيضا على الرسوم المكتسبة من هذ
msgid "You will receive"
msgstr "سوف تستقبل"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "سوف تتلقى {0} {1} على الأقل أو ستعود المعاملة."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "سوف ترسل {0} {1} على الأكثر وإلا ستعود المعاملة."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "سيولة V2 الخاصة بك"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ca_ES\n"
"Language-Team: Catalan\n"
@@ -458,8 +458,8 @@ msgstr "Cobra"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Cobra com a WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Recull com a {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirmeu la transacció a la cartera"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detallada"
msgid "Details"
msgstr "Detalls"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Donar suport directe al govern ucraïnès donant fitxes."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Desconnecta"
@@ -708,10 +703,6 @@ msgstr "Destitueix"
msgid "Docs"
msgstr "Documents"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donar a Ucraïna"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "No veieu cap de les vostres posicions v2? <0> Importeu-la.</0>"
@@ -732,7 +723,6 @@ msgstr "Comparació de leficiència"
msgid "Enter a percent"
msgstr "Introduïu un percentatge"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Introduïu un destinatari"
@@ -748,7 +738,6 @@ msgstr "Introduïu una adreça per activar una reclamació UNI. Si l'adreça té
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Amaga les posicions tancades"
msgid "High Price Impact"
msgstr "Alt impacte en els preus"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Alt impacte en el preu"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Alt lliscament"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Un gran lliscament augmenta el risc de moviment de preus"
@@ -983,7 +977,6 @@ msgstr "Liquiditat insuficient al pool per al vostre comerç"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "L'interval no és vàlid. El preu mínim ha de ser inferior al preu màxim."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinatari no vàlid"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "No s'ha trobat cap proposta."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Sense resultats."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan optimista"
msgid "Out of range"
msgstr "Fora de rang"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "La sortida s'estima."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Sestima la producció. Si el preu canvia més del {0}%, la vostra tra
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Sestima la producció. Rebrà com a mínim <0>{0} {1}</0> o la transacció es revertirà."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "La sortida s'estima. Rebràs almenys {0} {1} o la transacció es revertirà."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "La sortida s'estima. Enviareu com a màxim {0} {1} o la transacció es revertirà."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "La sortida senviarà a <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Seleccioneu una xarxa"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "També cobrarà els honoraris obtinguts per aquesta posició."
msgid "You will receive"
msgstr "Rebreu"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Rebràs almenys {0} {1} o la transacció es revertirà."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Enviareu com a màxim {0} {1} o la transacció es revertirà."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "La vostra liquiditat V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: cs_CZ\n"
"Language-Team: Czech\n"
@@ -458,8 +458,8 @@ msgstr "Sbírat"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Sbírat jako WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Sbírejte jako {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Potvrďte transakci v peněžence"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Podrobně"
msgid "Details"
msgstr "Podrobnosti"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Přímo podpořte ukrajinskou vládu darováním tokenů."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Odpojit"
@@ -708,10 +703,6 @@ msgstr "Zamítnout"
msgid "Docs"
msgstr "Dokumenty"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Darujte Ukrajině"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Nevidíte některou ze svých pozic v2? <0>Importujte ji.</0>"
@@ -732,7 +723,6 @@ msgstr "Porovnání efektivity"
msgid "Enter a percent"
msgstr "Zadejte procento"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Zadejte příjemce"
@@ -748,7 +738,6 @@ msgstr "Chcete-li spustit nárokování UNI, zadejte adresu. Jestliže bude mít
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Skrýt zavřené pozice"
msgid "High Price Impact"
msgstr "Vysoký dopad na cenu"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Vysoký cenový dopad"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Vysoký skluz"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Vysoký skluz zvyšuje riziko pohybu cen"
@@ -983,7 +977,6 @@ msgstr "Nedostatečná likvidita v poolu pro váš obchod"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Vybrán neplatný rozsah. Minimální cena musí být nižší než maximální cena."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Neplatný příjemce"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nebyly nalezeny žádné návrhy."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nebyly nalezeny žádné výsledky."
@@ -1304,10 +1297,6 @@ msgstr "Optimistický Etherscan"
msgid "Out of range"
msgstr "Mimo rozsah"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Výkon se odhaduje."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Výstup je odhadnutý. Jestliže se cena změní o více než {0} %, Va
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Výstup je odhadnutý. Obdržíte alespoň <0>{0} {1}</0>, nebo bude transakce vzata zpět."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Výkon se odhaduje. Obdržíte alespoň {0} {1} nebo se transakce vrátí zpět."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Výkon se odhaduje. Odešlete maximálně {0} {1} nebo se transakce vrátí zpět."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Výstup bude odeslán na <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Vyberte síť"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Budete také pobírat poplatky získané z této pozice."
msgid "You will receive"
msgstr "Obdržíte"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Obdržíte alespoň {0} {1} nebo se transakce vrátí zpět."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Odešlete maximálně {0} {1} nebo se transakce vrátí zpět."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Vaše likvidita V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: da_DK\n"
"Language-Team: Danish\n"
@@ -458,8 +458,8 @@ msgstr "Indsaml"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Indsaml som WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Saml som {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Bekræft transaktion i tegnebogen"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detaljeret"
msgid "Details"
msgstr "Detaljer"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Støt den ukrainske regering direkte ved at donere tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Afbryd"
@@ -708,10 +703,6 @@ msgstr "Afvis"
msgid "Docs"
msgstr "Dokumenter"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Doner til Ukraine"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Kan du ikke se en af dine v2-positioner? <0>Importér den.</0>"
@@ -732,7 +723,6 @@ msgstr "Effektivitetssammenligning"
msgid "Enter a percent"
msgstr "Indtast en procent"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Indtast en modtager"
@@ -748,7 +738,6 @@ msgstr "Indtast en adresse for at udløse et UNI-krav. Hvis adressen har nogen U
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Skjul lukkede positioner"
msgid "High Price Impact"
msgstr "Høj prispåvirkning"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Høj prispåvirkning"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Høj glidning"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Høj glidning øger risikoen for prisbevægelser"
@@ -983,7 +977,6 @@ msgstr "Utilstrækkelig likviditet i puljen til din handel"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ugyldigt interval valgt. Minimumspris skal være lavere end den maksimale pris."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ugyldig modtager"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Ingen forslag fundet."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Ingen resultater fundet."
@@ -1304,10 +1297,6 @@ msgstr "Optimistisk Etherscan"
msgid "Out of range"
msgstr "Ikke inden for rækkevidde"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Output er estimeret."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Output er et estimat. Hvis prisen ændrer sig mere end {0} %, bliver din
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Output er anslået. Du vil modtage mindst <0>{0} {1}</0> ellers bliver din transaktion tilbageført."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Output er estimeret. Du modtager mindst {0} {1} , ellers vil transaktionen vende tilbage."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Output er estimeret. Du sender højst {0} {1} , ellers vil transaktionen vende tilbage."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Output vil blive sendt til <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Vælg et netværk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Du vil også indsamle gebyrer optjent fra denne position."
msgid "You will receive"
msgstr "Du vil modtage"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Du modtager mindst {0} {1} ellers vil transaktionen vende tilbage."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Du sender højst {0} {1} ellers vil transaktionen vende tilbage."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Din V2-likviditet"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: de_DE\n"
"Language-Team: German\n"
@@ -458,8 +458,8 @@ msgstr "Beziehen"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Als WETH beziehen"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Sammeln Sie als {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Transaktion in Wallet bestätigen"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detailliert"
msgid "Details"
msgstr "Details"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Unterstützen Sie die ukrainische Regierung direkt, indem Sie Token spenden."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Verbindung trennen"
@@ -708,10 +703,6 @@ msgstr "Verwerfen"
msgid "Docs"
msgstr "Dokumentation"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Spende für die Ukraine"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Sie sehen eine Ihrer v2-Positionen nicht? <0>Importiere sie.</0>"
@@ -732,7 +723,6 @@ msgstr "Effizienzvergleich"
msgid "Enter a percent"
msgstr "Prozentsatz eingeben"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Empfänger eingeben"
@@ -748,7 +738,6 @@ msgstr "Geben Sie eine Adresse ein, um UNI einzufordern. Wenn die Adresse Anspru
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Geschlossene Positionen ausblenden"
msgid "High Price Impact"
msgstr "Hoher Preiseinfluss"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Hohe Preiswirkung"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Hoher Schlupf"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Eine hohe Slippage erhöht das Risiko von Preisbewegungen"
@@ -983,7 +977,6 @@ msgstr "Unzureichende Liquidität im Pool für Ihren Handel"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ungültiger Bereich ausgewählt. Der Mindestpreis muss kleiner als der Maximalpreis sein."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ungültiger Empfänger"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Keine Vorschläge gefunden."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Keine Ergebnisse gefunden."
@@ -1304,10 +1297,6 @@ msgstr "Optimism Etherscan"
msgid "Out of range"
msgstr "Nicht im Bereich"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Die Ausgabe wird geschätzt."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Ausgabemenge geschätzt. Wenn sich der Preis um mehr als {0}% ändert, w
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Ausgabemenge geschätzt. Sie erhalten mindestens <0>{0} {1}</0> oder die Transaktion wird rückgängig gemacht."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Die Ausgabe wird geschätzt. Sie erhalten mindestens {0} {1} oder die Transaktion wird rückgängig gemacht."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Die Ausgabe wird geschätzt. Sie senden höchstens {0} {1} oder die Transaktion wird rückgängig gemacht."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Ausgabe wird an <0>{0}</0> gesendet"
@@ -1594,7 +1591,6 @@ msgstr "Wählen Sie ein Netzwerk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Sie werden auch die Gebühren einziehen, die diese Position eingenommen
msgid "You will receive"
msgstr "Sie werden erhalten"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Sie erhalten mindestens {0} {1} oder die Transaktion wird rückgängig gemacht."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Sie senden höchstens {0} {1} oder die Transaktion wird rückgängig gemacht."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Ihre V2-Liquidität"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: el_GR\n"
"Language-Team: Greek\n"
@@ -458,8 +458,8 @@ msgstr "Συλλογή"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Συλλέξτε ως WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Συλλέξτε ως {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Επιβεβαίωση συναλλαγής στο πορτοφόλι"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Λεπτομερής"
msgid "Details"
msgstr "Λεπτομέρειες"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Υποστηρίξτε άμεσα την κυβέρνηση της Ουκρανίας δωρίζοντας μάρκες."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Αποσύνδεση"
@@ -708,10 +703,6 @@ msgstr "Απόρριψη"
msgid "Docs"
msgstr "Έγγραφα"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Κάντε δωρεά στην Ουκρανία"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Δεν βλέπετε μία από τις θέσεις σας στο v2; <0> Εισαγάγετε τη.</0>"
@@ -732,7 +723,6 @@ msgstr "Σύγκριση αποδοτικότητας"
msgid "Enter a percent"
msgstr "Εισαγωγή ποσοστού"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Εισαγάγετε έναν παραλήπτη"
@@ -748,7 +738,6 @@ msgstr "Εισάγετε μια διεύθυνση για να εκκινήσε
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Απόκρυψη κλειστών θέσεων"
msgid "High Price Impact"
msgstr "Υψηλή Επίδραση Τιμών"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Υψηλό αντίκτυπο στην τιμή"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Υψηλή ολίσθηση"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Η υψηλή ολίσθηση αυξάνει τον κίνδυνο μεταβολής των τιμών"
@@ -983,7 +977,6 @@ msgstr "Ανεπαρκής ρευστότητα στο pool για τις συν
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Επιλέχθηκε μη έγκυρο εύρος. Η ελάχιστη τιμή πρέπει να είναι χαμηλότερη από τη μέγιστη τιμή."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Μη έγκυρος παραλήπτης"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Δεν βρέθηκαν προτάσεις."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Δεν βρέθηκαν αποτελέσματα."
@@ -1304,10 +1297,6 @@ msgstr "Αισιόδοξη Ethercan"
msgid "Out of range"
msgstr "Εκτός εύρους"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Εκτιμάται η παραγωγή."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Το αποτέλεσμα εκτιμήθηκε. Αν η τιμή αλλ
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Το αποτέλεσμα εκτιμήθηκε. Θα λάβετε τουλάχιστον <0>{0} {1}</0> ή η συναλλαγή θα υπαναχωρήσει."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Εκτιμάται η παραγωγή. Θα λάβετε τουλάχιστον {0} {1} ή η συναλλαγή θα επανέλθει."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Εκτιμάται η παραγωγή. Θα στείλετε το πολύ {0} {1} ή η συναλλαγή θα επανέλθει."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Το αποτέλεσμα θα σταλεί στο <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Επιλέξτε ένα δίκτυο"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Θα εισπράξετε επίσης τις χρεώσεις που κ
msgid "You will receive"
msgstr "Θα λάβετε"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Θα λάβετε τουλάχιστον {0} {1} ή η συναλλαγή θα επανέλθει."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Θα στείλετε το πολύ {0} {1} ή η συναλλαγή θα επανέλθει."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Η ρευστότητα V2 σας"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: es_ES\n"
"Language-Team: Spanish\n"
@@ -458,8 +458,8 @@ msgstr "Recoger"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Recoger como WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Recoger como {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirmar transacción en billetera"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detallado"
msgid "Details"
msgstr "Detalles"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Apoye directamente al gobierno ucraniano mediante la donación de tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Desconectar"
@@ -708,10 +703,6 @@ msgstr "Descartar"
msgid "Docs"
msgstr "Documentos"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donar a Ucrania"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "¿No puede visualizar una de sus posiciones v2? <0>Impórtelo.</0>"
@@ -732,7 +723,6 @@ msgstr "Comparación de eficiencia"
msgid "Enter a percent"
msgstr "Introduzca un porcentaje"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Introduzca un destinatario"
@@ -748,7 +738,6 @@ msgstr "Introduzca una dirección para activar una reclamación de UNI. Si la di
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ocultar posiciones cerradas"
msgid "High Price Impact"
msgstr "Impacto de precio alto"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Alto impacto de precio"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Alto deslizamiento"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Un alto deslizamiento aumenta el riesgo de movimiento de precios"
@@ -983,7 +977,6 @@ msgstr "Liquidez insuficiente en el grupo para su operación"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Rango seleccionado no válido. El precio mínimo debe ser inferior al precio máximo."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Receptor no válido"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "No se encontraron propuestas."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "No se han encontrado resultados."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan optimista"
msgid "Out of range"
msgstr "Fuera de rango"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "La producción es estimada."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "El rendimiento es estimado. Si el precio cambia en más de {0} %, su tra
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "El rendimiento es estimado. Recibirá al menos <0>{0} {1}</0> o la transacción se revertirá."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "La producción es estimada. Recibirá al menos {0} {1} o la transacción se revertirá."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "La producción es estimada. Enviarás como máximo {0} {1} o la transacción se revertirá."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Lo producido se enviará a <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Seleccione una red"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "También cobrará las comisiones ganadas por esta posición."
msgid "You will receive"
msgstr "Recibirá"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Recibirá al menos {0} {1} o la transacción se revertirá."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Enviarás como máximo {0} {1} o la transacción se revertirá."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Su liquidez V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: fi_FI\n"
"Language-Team: Finnish\n"
@@ -458,8 +458,8 @@ msgstr "Kerää"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Kerää WETH:na"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Kerää {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Vahvista transaktio lompakossa"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Yksityiskohtainen"
msgid "Details"
msgstr "Tiedot"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Tue suoraan Ukrainan hallitusta lahjoittamalla rahakkeita."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Katkaise yhteys"
@@ -708,10 +703,6 @@ msgstr "Sulje"
msgid "Docs"
msgstr "Asiakirjat"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Lahjoita Ukrainalle"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Etkö näe yhtä v2-positiostasi? <0>Tuo se.</0>"
@@ -732,7 +723,6 @@ msgstr "Tehokkuuden vertailu"
msgid "Enter a percent"
msgstr "Syötä prosenttiosuus"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Syötä vastaanottaja"
@@ -748,7 +738,6 @@ msgstr "Syötä osoite, joka käynnistää UNI-lunastuksen. Jos osoitteella on l
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Piilota suljetut positiot"
msgid "High Price Impact"
msgstr "Korkea hintavaikutus"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Korkea hintavaikutus"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Korkea luisto"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Suuri lipsahdus lisää hintojen liikkeiden riskiä"
@@ -983,7 +977,6 @@ msgstr "Poolissa ei ole tarpeeksi likviditeettiä kauppaasi varten"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Virheellinen vaihteluväli valittu. Minimihinnan on oltava pienempi kuin maksimihinta."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Virheellinen vastaanottaja"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Ehdotuksia ei löytynyt."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Tuloksia ei löytynyt."
@@ -1304,10 +1297,6 @@ msgstr "Optimistinen eetteriskannaus"
msgid "Out of range"
msgstr "Alueen ulkopuolella"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Tuotos on arvioitu."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Tuotto on arvio. Jos hinta muuttuu enemmän kuin {0}%, tapahtuma perutaa
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Tuotos on arvioitu. Saat vähintään <0>{0} {1}</0> tai tapahtuma perutaan."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Tuotos on arvioitu. Saat vähintään {0} {1} tai tapahtuma palautuu."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Tuotos on arvioitu. Lähetät enintään {0} {1} tai tapahtuma palautuu."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Tuotto lähetetään kohteeseen <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Valitse verkko"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Keräät myös tästä positiosta ansaittuja palkkioita."
msgid "You will receive"
msgstr "Tulet vastaanottamaan"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Saat vähintään {0} {1} tai tapahtuma palautuu."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Lähetät enintään {0} {1} tai tapahtuma palautuu."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Sinun V2-likviditeettisi"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: fr_FR\n"
"Language-Team: French\n"
@@ -458,8 +458,8 @@ msgstr "Collecter"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Collecter en WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Collecter comme {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirmer la transaction dans le portefeuille"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Détaillé"
msgid "Details"
msgstr "Détails"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Soutenez directement le gouvernement ukrainien en faisant don de jetons."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Déconnecter"
@@ -708,10 +703,6 @@ msgstr "Refuser"
msgid "Docs"
msgstr "Documents"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Faire un don à l'Ukraine"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Vous ne voyez pas une de vos positions v2 ? <0>Importez-la.</0>"
@@ -732,7 +723,6 @@ msgstr "Comparaison d'efficacité"
msgid "Enter a percent"
msgstr "Saisissez un pourcentage"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Saisissez un destinataire"
@@ -748,7 +738,6 @@ msgstr "Saisissez une adresse pour déclencher une réclamation UNI. Si l'adress
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Masquer les positions fermées"
msgid "High Price Impact"
msgstr "Impact sur les prix élevés"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Impact prix élevé"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Glissement élevé"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Un glissement élevé augmente le risque de mouvement des prix"
@@ -983,7 +977,6 @@ msgstr "Liquidité insuffisante dans le pool pour votre transaction"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Plage non valide sélectionnée. Le prix minimum doit être inférieur au prix maximum."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinataire invalide"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Aucune proposition trouvée."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Aucun résultat trouvé."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan optimiste"
msgid "Out of range"
msgstr "Hors de portée"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "La production est estimée."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "La sortie est estimée. Si le prix change de plus de {0}% votre transact
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "La sortie est estimée. Vous recevrez au moins <0>{0} {1}</0> ou la transaction sera annulée."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "La production est estimée. Vous recevrez au moins {0} {1} ou la transaction sera annulée."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "La production est estimée. Vous enverrez au plus {0} {1} ou la transaction sera annulée."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "La sortie sera envoyée à <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Sélectionnez un réseau"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Vous percevrez également des frais provenant de cette position."
msgid "You will receive"
msgstr "Vous allez recevoir"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Vous recevrez au moins {0} {1} ou la transaction sera annulée."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Vous enverrez au plus {0} {1} ou la transaction sera annulée."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Votre liquidité V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: he_IL\n"
"Language-Team: Hebrew\n"
@@ -458,8 +458,8 @@ msgstr "לגבות"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "לגבות כ- WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "אסוף כ {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "אשר עסקה בארנק"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "מְפוֹרָט"
msgid "Details"
msgstr "פרטים"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "תמכו ישירות בממשלת אוקראינה על ידי תרומת אסימונים."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "לְנַתֵק"
@@ -708,10 +703,6 @@ msgstr "לשחרר"
msgid "Docs"
msgstr "מסמכים"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "לתרום לאוקראינה"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "אינך רואה את אחת מעמדות ה- v2 שלך? <0> יבא אותו.</0>"
@@ -732,7 +723,6 @@ msgstr "השוואת יעילות"
msgid "Enter a percent"
msgstr "הזן אחוז"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "הזן נמען"
@@ -748,7 +738,6 @@ msgstr "הזן כתובת להפעלת תביעה של UNI. אם לכתובת י
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "הסתר עמדות סגורות"
msgid "High Price Impact"
msgstr "השפעה על מחיר גבוה"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "השפעה גבוהה על המחיר"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "החלקה גבוהה"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "החלקה גבוהה מגבירה את הסיכון לתנועת מחירים"
@@ -983,7 +977,6 @@ msgstr "אין מספיק נזילות במאגר למסחר שלך"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "נבחר טווח לא חוקי. המחיר המינימלי חייב להיות נמוך מהמחיר המקסימלי."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "נמען לא חוקי"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "לא נמצאו הצעות."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "לא נמצאו תוצאות."
@@ -1304,10 +1297,6 @@ msgstr "את'רקאן אופטימי"
msgid "Out of range"
msgstr "מחוץ לטווח"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "התפוקה מוערכת."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "התפוקה משוערת. אם המחיר ישתנה ביותר מ- {0}
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "התפוקה משוערת. תקבל <0>{0} {1}</0> או שהעסקה תחזור."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "התפוקה מוערכת. תקבל לפחות {0} {1} או שהעסקה תחזור."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "התפוקה מוערכת. אתה תשלח לכל היותר {0} {1} או שהעסקה תחזור."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "התפוקה תישלח אל <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "בחר רשת"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "אתה גם יגבה עמלות שהרווחת מתפקיד זה."
msgid "You will receive"
msgstr "אתה תקבל"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "תקבל לפחות {0} {1} או שהעסקה תחזור."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "אתה תשלח לכל היותר {0} {1} או שהעסקה תחזור."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "נזילות ה- V2 שלך"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: hu_HU\n"
"Language-Team: Hungarian\n"
@@ -458,8 +458,8 @@ msgstr "Begyűjtés"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Begyűjtés WETH-ként"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Gyűjtse {nativeWrappedSymbol}-ként"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "A tranzakció megerősítése a pénztárcában"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Részletes"
msgid "Details"
msgstr "Részletek"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Közvetlenül támogassa az ukrán kormányt zsetonok adományozásával."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Kapcsolat bontása"
@@ -708,10 +703,6 @@ msgstr "Elvetés"
msgid "Docs"
msgstr "Dokumentumok"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Adományozz Ukrajnának"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Nem látja az egyik v2 pozícióját? <0> Importálja.</0>"
@@ -732,7 +723,6 @@ msgstr "Hatékonyság-összehasonlítás"
msgid "Enter a percent"
msgstr "Adjon meg egy százalékot"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Címzett megadása"
@@ -748,7 +738,6 @@ msgstr "Adjon meg egy címet az UNI-követelés kiváltásához. Ha a címnek va
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -902,10 +891,15 @@ msgstr "Zárt pozíciók elrejtése"
msgid "High Price Impact"
msgstr "Magas árhatás"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Magas árhatás"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Magas csúszás"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "A nagy csúszás növeli az ármozgások kockázatát"
@@ -984,7 +978,6 @@ msgstr "Nincs elegendő likviditás a poolban a kereskedéshez"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1016,7 +1009,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Érvénytelen tartományt választott ki. A minimális árnak alacsonyabbnak kell lennie, mint a maximális ár."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Érvénytelen címzett"
@@ -1248,6 +1240,7 @@ msgid "No proposals found."
msgstr "Nem található javaslat."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nincs találat."
@@ -1305,10 +1298,6 @@ msgstr "Optimista Etherscan"
msgid "Out of range"
msgstr "Tartományon kívül"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "A kimenet becsült."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1318,6 +1307,14 @@ msgstr "Az output becsült érték. Ha az ár {0}%-nál nagyobb mértékben vál
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "A teljesítmény becsült. Legalább <0>{0} {1}</0> vagy a tranzakció visszaáll."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "A kimenet becsült. Legalább {0} {1} -et fog kapni, különben a tranzakció visszaáll."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "A kimenet becsült. Legfeljebb {0} {1} -et küld, vagy a tranzakció visszaáll."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "A kimenet a következőre lesz elküldve: <0>{0}</0>"
@@ -1595,7 +1592,6 @@ msgstr "Válasszon hálózatot"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2369,14 +2365,6 @@ msgstr "Ezen a pozíción megszerzett díjakat is beszedi."
msgid "You will receive"
msgstr "Kapni fog"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "{0} {1} fog kapni, különben a tranzakció visszaáll."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "{0} {1} küld, vagy a tranzakció visszaáll."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Saját V2 likviditása"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: id_ID\n"
"Language-Team: Indonesian\n"
@@ -458,8 +458,8 @@ msgstr "Tagih"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Tagih sebagai WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Kumpulkan sebagai {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Konfirmasi transaksi di dompet"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Terperinci"
msgid "Details"
msgstr "Perincian"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Dukung langsung pemerintah Ukraina dengan menyumbangkan token."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Putuskan"
@@ -708,10 +703,6 @@ msgstr "Buang"
msgid "Docs"
msgstr "Docs"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donasi ke Ukraina"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Tidak melihat salah satu posisi v2 Anda? <0> Impor.</0>"
@@ -732,7 +723,6 @@ msgstr "Perbandingan Efisiensi"
msgid "Enter a percent"
msgstr "Masukkan persen"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Masukkan penerima"
@@ -748,7 +738,6 @@ msgstr "Masukkan alamat untuk memicu klaim UNI. Jika alamat tersebut memiliki UN
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Sembunyikan posisi tertutup"
msgid "High Price Impact"
msgstr "Dampak Harga Tinggi"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Dampak harga tinggi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Slip tinggi"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Slippage tinggi meningkatkan risiko pergerakan harga"
@@ -983,7 +977,6 @@ msgstr "Likuiditas tidak mencukupi di kumpulan untuk perdagangan Anda"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Rentang yang tidak valid dipilih. Harga min harus lebih rendah dari harga maks."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Penerima tidak valid"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Proposal tidak ditemukan."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Hasil tidak ditemukan."
@@ -1304,10 +1297,6 @@ msgstr "Optimis Etherscan"
msgid "Out of range"
msgstr "Diluar jangkauan"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Keluaran diperkirakan."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Output diperkirakan. Jika harga berubah lebih dari {0}%, transaksi Anda
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Output diperkirakan. Anda akan menerima setidaknya <0>{0} {1}</0> atau transaksi akan dikembalikan."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Keluaran diperkirakan. Anda akan menerima setidaknya {0} {1} atau transaksi akan dibatalkan."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Keluaran diperkirakan. Anda akan mengirimkan paling banyak {0} {1} atau transaksi akan kembali."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Output akan dikirim ke <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Pilih jaringan"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Anda juga akan memungut biaya yang diperoleh dari posisi ini."
msgid "You will receive"
msgstr "Anda akan menerima"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Anda akan menerima setidaknya {0} {1} atau transaksi akan dibatalkan."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Anda akan mengirimkan paling banyak {0} {1} atau transaksi akan kembali."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Likuiditas V2 Anda"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: it_IT\n"
"Language-Team: Italian\n"
@@ -458,8 +458,8 @@ msgstr "Raccogli"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Raccogli come WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Raccogli come {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Conferma transazione nel portafoglio"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Dettagliato"
msgid "Details"
msgstr "Dettagli"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Sostieni direttamente il governo ucraino donando token."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Disconnessione"
@@ -708,10 +703,6 @@ msgstr "Ignora"
msgid "Docs"
msgstr "Documenti"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Dona all'Ucraina"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Non vedi una delle tue posizioni v2? <0>Importala.</0>"
@@ -732,7 +723,6 @@ msgstr "Confronto di efficienza"
msgid "Enter a percent"
msgstr "Inserisci una percentuale"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Inserisci un destinatario"
@@ -748,7 +738,6 @@ msgstr "Inserisci un indirizzo per attivare un reclamo UNI. Se l'indirizzo ha un
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Nascondi posizioni chiuse"
msgid "High Price Impact"
msgstr "Impatto Ad Alto Prezzo"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Elevato impatto sui prezzi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Elevato slittamento"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Un elevato slippage aumenta il rischio di oscillazione dei prezzi"
@@ -983,7 +977,6 @@ msgstr "Liquidità insufficiente nel pool per il tuo trade"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Intervallo selezionato non valido. Il prezzo minimo deve essere inferiore al prezzo massimo."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinatario non valido"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nessuna proposta trovata."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nessun risultato trovato."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan ottimista"
msgid "Out of range"
msgstr "Fuori portata"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "La produzione è stimata."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "L'output è stimato. Se il prezzo cambia di più di {0}% la transazione
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "L'output è stimato. Riceverai almeno <0>{0} {1}</0> o la transazione verrà ripristinata."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "La produzione è stimata. Riceverai almeno {0} {1} o la transazione verrà annullata."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "La produzione è stimata. Invierai al massimo {0} {1} o la transazione verrà annullata."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "L'output verrà inviato a <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Seleziona una rete"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Raccoglierai anche le commissioni guadagnate da questa posizione."
msgid "You will receive"
msgstr "Riceverai"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Riceverai almeno {0} {1} o la transazione verrà annullata."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Invierai al massimo {0} {1} o la transazione verrà annullata."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "La tua liquidità V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ja_JP\n"
"Language-Team: Japanese\n"
@@ -458,8 +458,8 @@ msgstr "取得する"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "WETHで取得"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "{nativeWrappedSymbol}として収集"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "ウォレットで取引を確認する"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "詳細"
msgid "Details"
msgstr "詳細"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "トークンを寄付することにより、ウクライナ政府を直接支援します。"
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "接続を解除"
@@ -708,10 +703,6 @@ msgstr "注文を取り下げる"
msgid "Docs"
msgstr "資料"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "ウクライナに寄付する"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "V2の流動性が表示されない場合、該当のトークンを<0>インポート</0>してください"
@@ -732,7 +723,6 @@ msgstr "効率性の比較"
msgid "Enter a percent"
msgstr "パーセントを入力してください"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "受取人を入力"
@@ -748,7 +738,6 @@ msgstr "UNIの請求を行うためのアドレスを入力してください。
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "決済したポジションを隠す"
msgid "High Price Impact"
msgstr "大きな価格への影響"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "価格への影響が大きい"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "高いスリッページ"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "高いスリッページは価格変動のリスクを高めます"
@@ -983,7 +977,6 @@ msgstr "あなたの取引のためのプールの不十分な流動性"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "設定した価格範囲が間違っています。最小価格は最大価格より低くしてください。"
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "受け取りアドレスが無効です"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "提案が見つかりません。"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "結果が見つかりませんでした。"
@@ -1304,10 +1297,6 @@ msgstr "Optimistic Etherscan"
msgid "Out of range"
msgstr "範囲外"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "出力は推定されます。"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "取引結果は概算です。価格が {0}%以上変化した場合、
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "取引結果は概算です。<0>{0} {1}</0> 以上を買えない場合は、取引は差し戻されます。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "出力は推定されます。少なくとも {1} を受け取るか、トランザクションが元に戻り {0}。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "出力は推定されます。最大 {0} {1} を送信するか、トランザクションが元に戻ります。"
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "結果は <0>{0}</0> に送信されます"
@@ -1594,7 +1591,6 @@ msgstr "ネットワークを選択"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "また、このポジションから得られた報酬も受け取りま
msgid "You will receive"
msgstr "受け取る数量"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "少なくとも {0} {1} を受け取るか、取引は元に戻ります。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "あなたは、最大でお送りします {0} {1} またはトランザクションが戻ります。"
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "V2の流動性"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ko_KR\n"
"Language-Team: Korean\n"
@@ -458,8 +458,8 @@ msgstr "수집"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "WETH로 수집"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "{nativeWrappedSymbol}으로 수집"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "지갑에서 트랜잭션 승인"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "자세히"
msgid "Details"
msgstr "세부 정보"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "토큰을 기부하여 우크라이나 정부를 직접 지원합니다."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "연결 해제"
@@ -708,10 +703,6 @@ msgstr "해제"
msgid "Docs"
msgstr "문서"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "우크라이나에 기부"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "v2 포지션 중 하나가 보이지 않습니까? <0>가져 오십시오.</0>"
@@ -732,7 +723,6 @@ msgstr "효율성 비교"
msgid "Enter a percent"
msgstr "퍼센트를 입력하세요."
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "수령인을 입력하세요."
@@ -748,7 +738,6 @@ msgstr "UNI 청구를 트리거할 주소를 입력하십시오. 주소에 청
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "닫은 포지션 숨기기"
msgid "High Price Impact"
msgstr "높은 가격 영향"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "높은 가격 영향"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "높은 미끄러짐"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "높은 미끄러짐은 가격 변동의 위험을 증가시킵니다."
@@ -983,7 +977,6 @@ msgstr "거래를 위한 풀의 유동성 부족"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "잘못된 범위를 선택했습니다. 최소 가격은 최대 가격보다 낮아야합니다."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "잘못된 수령인"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "제안이 없습니다."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "결과가 없습니다."
@@ -1304,10 +1297,6 @@ msgstr "Optimistic Etherscan"
msgid "Out of range"
msgstr "범위를 벗어남"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "예상되는 결과값."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "산출은 추정됩니다. 가격이 {0}% 이상 변경되면 거래가
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "산출은 추정됩니다. 최소한 <0>{0} {1}</0>을(를) 받거나 그렇지 않으면 거래가 취소됩니다."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "출력이 예상됩니다. 당신은 적어도 {0} {1} 을 받게 될 것입니다. 그렇지 않으면 거래가 되돌릴 것입니다."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "출력이 예상됩니다. 최대 {0} {1} 을 보내지 않으면 거래가 취소됩니다."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "산출은 <0>{0}</0>(으)로 이체됩니다"
@@ -1594,7 +1591,6 @@ msgstr "네트워크 선택"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "이 포지션에서 얻은 수수료도 징수합니다."
msgid "You will receive"
msgstr "다음을 받게 됩니다"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "당신은 적어도 {0} {1} 을 받게 될 것입니다. 그렇지 않으면 거래가 되돌릴 것입니다."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "{0} {1} 을 보내지 않으면 거래가 취소됩니다."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "V2 유동성"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: nl_NL\n"
"Language-Team: Dutch\n"
@@ -458,8 +458,8 @@ msgstr "Verzamel"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Verzamel als WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Verzamel als {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Bevestig transactie in portemonnee"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Gedetailleerd"
msgid "Details"
msgstr "Details"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Ondersteun rechtstreeks de Oekraïense regering door tokens te doneren."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Verbinding verbreken"
@@ -708,10 +703,6 @@ msgstr "Afwijzen"
msgid "Docs"
msgstr "Documenten"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Doneer aan Oekraïne"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Ziet u één van uw v2 posities niet? <0>Importeer deze.</0>"
@@ -732,7 +723,6 @@ msgstr "Efficiëntie vergelijking:"
msgid "Enter a percent"
msgstr "Voer een percentage in"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Voer een ontvanger in"
@@ -748,7 +738,6 @@ msgstr "Voer een adres in om een UNI-claim te activeren. Als het adres een claim
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Verberg gesloten posities"
msgid "High Price Impact"
msgstr "Hoge prijsimpact"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Hoge prijsimpact"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Hoge slip"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Hoge slippen verhoogt het risico van prijsbewegingen"
@@ -983,7 +977,6 @@ msgstr "Onvoldoende liquiditeit in de pool voor uw transactie"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ongeldig bereik geselecteerd. De minimumprijs moet lager zijn dan de maximumprijs."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ongeldige ontvanger"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Geen voorstellen gevonden."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Geen resultaten gevonden."
@@ -1304,10 +1297,6 @@ msgstr "Optimistische Etherscan"
msgid "Out of range"
msgstr "Buiten bereik"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "De output wordt geschat."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Uitvoer wordt geschat. Als de prijs met meer dan {0}% wijzigt, wordt uw
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Uitvoer wordt ingeschat. U ontvangt ten minste <0>{0} {1}</0> of de transactie wordt teruggedraaid."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "De output wordt geschat. U ontvangt minimaal {0} {1} of de transactie wordt teruggedraaid."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "De output wordt geschat. U stuurt maximaal {0} {1} of de transactie wordt teruggedraaid."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Uitvoer zal worden verzonden naar <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Selecteer een netwerk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "U zult ook vergoedingen innen die vanuit deze positie zijn verdiend."
msgid "You will receive"
msgstr "U ontvangt"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "U ontvangt minimaal {0} {1} of de transactie wordt teruggedraaid."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "U stuurt maximaal {0} {1} of de transactie wordt teruggedraaid."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Uw V2-liquiditeit"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: no_NO\n"
"Language-Team: Norwegian\n"
@@ -458,8 +458,8 @@ msgstr "Samle"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Samle som WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Samle som {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Bekreft transaksjonen i lommeboken"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detaljert"
msgid "Details"
msgstr "Detaljer"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Støtt den ukrainske regjeringen direkte ved å donere tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Frakoble"
@@ -708,10 +703,6 @@ msgstr "Avvis"
msgid "Docs"
msgstr "Dokumenter"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Doner til Ukraina"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Ser du ikke en av dine v2-posisjoner? <0>Importer den.</0>"
@@ -732,7 +723,6 @@ msgstr "Effektivitetssammenligning"
msgid "Enter a percent"
msgstr "Oppgi en prosent"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Oppgi en mottaker"
@@ -748,7 +738,6 @@ msgstr "Skriv inn en adresse for å aktivere en UNI-henting. Hvis adressen har n
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Skjul avsluttede posisjoner"
msgid "High Price Impact"
msgstr "Høy pris konsekvens"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Høy prispåvirkning"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Høy utglidning"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Høy glidning øker risikoen for prisbevegelser"
@@ -983,7 +977,6 @@ msgstr "Utilstrekkelig likviditet i bassenget for handelen din"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ugyldig område valgt. Minsteprisen må være lavere enn maks prisen."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ugyldig mottaker"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Ingen forslag funnet."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Ingen resultater."
@@ -1304,10 +1297,6 @@ msgstr "Optimistisk Etherscan"
msgid "Out of range"
msgstr "Utenfor rekkevidde"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Utgang er estimert."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Utdata er estimert. Hvis prisen endrer seg med mer enn {0} % vil transak
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Utgangen er estimert. Du vil motta minst <0>{0} {1}</0> eller transaksjonen vil tilbakestilles."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Utgang er estimert. Du vil motta minst {0} {1} eller transaksjonen går tilbake."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Utgang er estimert. Du sender maksimalt {0} {1} eller transaksjonen går tilbake."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Utgangen vil bli sendt til <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Velg et nettverk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Du vil også samle inn gebyrer tjent fra denne posisjonen."
msgid "You will receive"
msgstr "Du vil motta"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Du vil motta minst {0} {1} eller transaksjonen går tilbake."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Du sender maksimalt {0} {1} eller transaksjonen går tilbake."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Din V2-likviditet"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: pl_PL\n"
"Language-Team: Polish\n"
@@ -458,8 +458,8 @@ msgstr "Zbierz"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Zbierz jako WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Zbierz jako {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Potwierdź transakcję w portfelu"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Szczegółowy"
msgid "Details"
msgstr "Szczegóły"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Bezpośrednio wesprzyj ukraiński rząd przekazując tokeny."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Rozłącz"
@@ -708,10 +703,6 @@ msgstr "Odrzuć"
msgid "Docs"
msgstr "Dokumentacja"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Wpłać na Ukrainę"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Nie widzisz jednej z pozycji v2? <0>Importuj ją.</0>"
@@ -732,7 +723,6 @@ msgstr "Porównanie wydajności"
msgid "Enter a percent"
msgstr "Wpisz procent"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Wprowadź odbiorcę"
@@ -748,7 +738,6 @@ msgstr "Wprowadź adres do uruchomienia UNI. Jeśli adres ma jakiekolwiek roszcz
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ukryj zamknięte pozycje"
msgid "High Price Impact"
msgstr "Wpływ Wysokiej Ceny"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Wysoki wpływ na cenę"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Wysoki poślizg"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Wysoki poślizg zwiększa ryzyko zmiany ceny"
@@ -983,7 +977,6 @@ msgstr "Niewystarczająca płynność w puli dla Twojej transakcji"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Wybrano nieprawidłowy zakres. Minimalna cena musi być niższa niż maksymalna cena."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Nieprawidłowy odbiorca"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nie znaleziono propozycji."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nie znaleziono wyników."
@@ -1304,10 +1297,6 @@ msgstr "Optymistyczny Etherscan"
msgid "Out of range"
msgstr "Poza zasięgiem"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Produkcja jest szacowana."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Wyjście jest szacowane. Jeśli cena zmieni się o ponad {0}%, Twoja tra
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Wartość wyjściowa jest szacowana. Otrzymasz co najmniej <0>{0} {1}</0> lub transakcja zostanie przywrócona."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Produkcja jest szacowana. Otrzymasz co najmniej {0} {1} lub transakcja zostanie cofnięta."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Produkcja jest szacowana. Wyślesz maksymalnie {0} {1} lub transakcja zostanie cofnięta."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Wyjście zostanie wysłane do <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Wybierz sieć"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Będziesz również pobierać opłaty zarobione na tej pozycji."
msgid "You will receive"
msgstr "Otrzymasz"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Otrzymasz co najmniej {0} {1} lub transakcja zostanie cofnięta."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Wyślesz maksymalnie {0} {1} lub transakcja zostanie cofnięta."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Twoja płynność V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: pt_BR\n"
"Language-Team: Portuguese, Brazilian\n"
@@ -458,8 +458,8 @@ msgstr "Coletar"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Coletar como WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Coletar como {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirme a transação na carteira"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detalhado"
msgid "Details"
msgstr "Detalhes"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Apoie diretamente o governo ucraniano doando tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Desconectar"
@@ -708,10 +703,6 @@ msgstr "Dispensar"
msgid "Docs"
msgstr "Docs"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Doe para a Ucrânia"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Não está vendo uma de suas posições V2? <0>Importe-a.</0>"
@@ -732,7 +723,6 @@ msgstr "Comparação de Eficiência"
msgid "Enter a percent"
msgstr "Digite um percentual"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Digite um destinatário"
@@ -748,7 +738,6 @@ msgstr "Digite um endereço para solicitar um resgate de UNI. Se o endereço tiv
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ocultar posições fechadas"
msgid "High Price Impact"
msgstr "Impacto de preços altos"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Impacto de preço alto"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Deslizamento alto"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Alta derrapagem aumenta o risco de movimento de preços"
@@ -983,7 +977,6 @@ msgstr "Liquidez insuficiente no pool para sua negociação"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Faixa selecionada inválida. O preço mín deve ser inferior ao preço máx."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinatário inválido"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nenhuma proposta encontrada."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nenhum resultado encontrado."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan otimista"
msgid "Out of range"
msgstr "Fora da faixa"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "A saída é estimada."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Os resultados são estimativas. Se o preço for alterado em de {0}%, sua
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Os resultados são estimativas. Você receberá pelo menos <0>{0} {1}</0> ou a operação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "A saída é estimada. Você receberá pelo menos {0} {1} ou a transação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "A saída é estimada. Você enviará no máximo {0} {1} ou a transação será revertida."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "O resultado será enviado para <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Selecione uma rede"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Você também receberá as taxas auferidas nessa posição."
msgid "You will receive"
msgstr "Você receberá"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Você receberá pelo menos {0} {1} ou a transação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Você enviará no máximo {0} {1} ou a transação será revertida."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Sua liquidez V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: pt_PT\n"
"Language-Team: Portuguese\n"
@@ -458,8 +458,8 @@ msgstr "Recolher"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Recolher como WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Coletar como {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirme a transação na carteira"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detalhada"
msgid "Details"
msgstr "Detalhes"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Apoie diretamente o governo ucraniano doando tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Desligar"
@@ -708,10 +703,6 @@ msgstr "Descartar"
msgid "Docs"
msgstr "Documentação"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Doe para a Ucrânia"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Não vê uma das suas posições v2? <0>Importar.</0>"
@@ -732,7 +723,6 @@ msgstr "Comparação de Eficiência"
msgid "Enter a percent"
msgstr "Insira uma percentagem"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Insira um destinatário"
@@ -748,7 +738,6 @@ msgstr "Insira um endereço para acionar uma reivindicação UNI. Se o endereço
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ocultar posições fechadas"
msgid "High Price Impact"
msgstr "Impacto de preço elevado"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Impacto de preço alto"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Deslizamento alto"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Alta derrapagem aumenta o risco de movimento de preços"
@@ -983,7 +977,6 @@ msgstr "Liquidez insuficiente no pool para sua negociação"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Intervalo selecionado inválido. O preço mínimo deve ser inferior ao preço máximo."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinatário inválido"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nenhuma proposta encontrada."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nenhum resultado encontrado."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan otimista"
msgid "Out of range"
msgstr "Fora do intervalo"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "A saída é estimada."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "A saída é estimada. Se o preço mudar em mais de {0}% a sua transaçã
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "A saída é estimada. Irá receber pelo menos <0>{0} {1}</0> ou a transação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "A saída é estimada. Você receberá pelo menos {0} {1} ou a transação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "A saída é estimada. Você enviará no máximo {0} {1} ou a transação será revertida."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "A saída será enviada para <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Selecione uma rede"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Também irá cobrar comissões obtidas nesta posição."
msgid "You will receive"
msgstr "Irá receber"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Você receberá pelo menos {0} {1} ou a transação será revertida."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Você enviará no máximo {0} {1} ou a transação será revertida."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "A sua liquidez V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ro_RO\n"
"Language-Team: Romanian\n"
@@ -458,8 +458,8 @@ msgstr "Colectează"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Colectează ca WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Colectați ca {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Confirmați tranzacția în portofel"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detaliat"
msgid "Details"
msgstr "Detalii"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Sprijiniți direct guvernul ucrainean donând jetoane."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Deconectare"
@@ -708,10 +703,6 @@ msgstr "Respinge"
msgid "Docs"
msgstr "Documente"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donează Ucrainei"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Nu vezi una dintre pozițiile tale v2? <0>Import-o.</0>"
@@ -732,7 +723,6 @@ msgstr "Compararea eficienței"
msgid "Enter a percent"
msgstr "Introdu un procent"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Introdu un destinatar"
@@ -748,7 +738,6 @@ msgstr "Introdu o adresă pentru a declanșa o revendicare UNI. Dacă adresa are
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ascunde pozițiile închise"
msgid "High Price Impact"
msgstr "Impact Preț Ridicat"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Impact ridicat asupra prețului"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Alunecare mare"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Alunecarea mare crește riscul de mișcare a prețurilor"
@@ -983,7 +977,6 @@ msgstr "Lichiditate insuficientă în pool pentru tranzacția dvs"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Interval invalid selectat. Prețul minim trebuie să fie mai mic decât prețul maxim."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Destinatar nevalid"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Nicio propunere găsită."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Nici un rezultat găsit."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan optimist"
msgid "Out of range"
msgstr "Prea departe"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Ieșirea este estimată."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Ieșirea este estimată. Dacă prețul se schimbă cu mai mult de {0}% t
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Ieșirea este estimată. Vei primi cel puțin <0>{0} {1}</0> sau tranzacția va reveni."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Ieșirea este estimată. Veți primi cel puțin {0} {1} sau tranzacția va reveni."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Ieșirea este estimată. Veți trimite cel mult {0} {1} sau tranzacția va reveni."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Ieșirea va fi trimisă la <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Selectați o rețea"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "De asemenea, vei colecta taxele câștigate din această poziție."
msgid "You will receive"
msgstr "Vei primi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Veți primi cel puțin {0} {1} sau tranzacția va reveni."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Veți trimite cel mult {0} {1} sau tranzacția va reveni."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Lichiditatea ta V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: ru_RU\n"
"Language-Team: Russian\n"
@@ -194,7 +194,7 @@ msgstr "Против"
#: src/lib/components/Swap/SwapButton.tsx
msgid "Allow"
msgstr "Разрешать"
msgstr "Одобрить"
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "Allow LP token migration"
@@ -210,7 +210,7 @@ msgstr "Разрешить протоколу Uniswap использовать
#: src/lib/components/Swap/SwapButton.tsx
msgid "Allow {0} first"
msgstr "Разрешить сначала {0}"
msgstr "Сначала одобрите {0}"
#: src/pages/MigrateV2/MigrateV2Pair.tsx
msgid "Allowed"
@@ -226,7 +226,7 @@ msgstr "Произошла ошибка при попытке произвест
#: src/lib/components/Swap/SwapButton.tsx
msgid "Approval pending"
msgstr "Ожидается одобрение"
msgstr "Одобрение подтверждается"
#: src/components/earn/StakingModal.tsx
#: src/lib/components/Swap/SwapButton.tsx
@@ -458,8 +458,8 @@ msgstr "Получить"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Получить как WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Получить в виде {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Подтвердите транзакцию в кошельке"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Подробно"
msgid "Details"
msgstr "Подробности"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Поддержите правительство Украины напрямую, пожертвовав токены."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Отключить"
@@ -708,10 +703,6 @@ msgstr "Закрыть"
msgid "Docs"
msgstr "Документация"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Пожертвуйте Украине"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Не видите какую-то из ваших позиций в V2? <0>Импортируйте её.</0>"
@@ -732,7 +723,6 @@ msgstr "Сравнение эффективности"
msgid "Enter a percent"
msgstr "Введите процент"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Введите получателя"
@@ -748,7 +738,6 @@ msgstr "Введите адрес, чтобы востребовать UNI. Ес
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Скрыть закрытые позиции"
msgid "High Price Impact"
msgstr "Высокое влияние на цену"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Высокое влияние на цену"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Высокое проскальзывание"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Высокое проскальзывание увеличивает риск изменения цены"
@@ -983,7 +977,6 @@ msgstr "Недостаточно ликвидности в пуле для ва
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Выбран неверный диапазон. Минимальная цена должна быть меньше, чем максимальная цена."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Неверный получатель"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Предложений не найдено."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Ничего не найдено."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan для Optimism"
msgid "Out of range"
msgstr "Вне диапазона"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Сумма к получению — оценочная."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Сумма к получению — оценочная. Если цен
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Сумма к получению — оценочная. Вы получите как минимум <0>{0} {1}</0>, или транзакция откатится."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Сумма к получению — оценочная. Вы получите как минимум {0} {1}, или транзакция откатится."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Сумма к продаже — оценочная. Вы продадите максимум {0} {1}, или транзакция откатится."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Сумма к получению будет отправлена на <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Выберите сеть"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2087,7 +2083,7 @@ msgstr "Развернуть <0/> в {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "Развернуть подтверждено"
msgstr "Разворачивание подтверждено"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
@@ -2095,11 +2091,11 @@ msgstr "Развернуть нативную валюту."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "Развернуть в ожидании"
msgstr "Разворачивание подтверждается"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "Распаковка нативной валюты."
msgstr "Разворачивание нативной валюты."
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
@@ -2280,19 +2276,19 @@ msgstr "Завернуть <0/> в {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "Обертывание подтверждено"
msgstr "Обёртывание подтверждено"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "Оберните нативную валюту."
msgstr "Обернуть нативную валюту."
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "Ожидание переноса"
msgstr "Обёртывание подтверждается"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "Накрутка нативной валюты."
msgstr "Обёртывание нативной валюты."
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
@@ -2368,14 +2364,6 @@ msgstr "Вы также будете получать комиссию, зара
msgid "You will receive"
msgstr "Вы получите"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Вы получите как минимум {0} {1}, иначе транзакция откатится."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Вы отправите не более {0} {1}, иначе транзакция откатится."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Ваша ликвидность в V2"
@@ -2511,11 +2499,11 @@ msgstr "из списка токенов {0}"
#: src/lib/components/Swap/RoutingDiagram/index.tsx
msgid "{0, plural, =1 {Best route via 1 hop} other {Best route via # hops}}"
msgstr "{0, plural, =1 {Лучший маршрут через 1 прыжок} other {Лучший маршрут через #hops}}"
msgstr "{0, plural, =1 {Лучший маршрут — 1 прыжок} few {Лучший маршрут — # прыжка} many {Лучший маршрут — # прыжков} other {Лучший маршрут — # прыжок}}"
#: src/components/SearchModal/ImportToken.tsx
msgid "{0, plural, =1 {Import token} other {Import tokens}}"
msgstr "{0, plural, =1 {Импортный токен} other {Импортируйте токены}}"
msgstr "{0, plural, =1 {Импортировать токен} other {Импортировать токены}}"
#: src/components/RateToggle/index.tsx
#: src/components/RateToggle/index.tsx
@@ -2630,7 +2618,7 @@ msgstr "Уровень комиссии {0}%"
#: src/components/RoutingDiagram/RoutingDiagram.tsx
msgid "{0}% pool"
msgstr "Пул с {0}%"
msgstr "Пул {0}%"
#: src/components/FeeSelector/FeeTierPercentageBadge.tsx
msgid "{0}% select"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-06 15:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: sl_SI\n"
"Language-Team: Slovenian\n"
@@ -458,8 +458,8 @@ msgstr "Prevzemi"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Prevzemi kot WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Zberi kot {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "V denarnici potrdite transakcijo"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Podrobnosti"
msgid "Details"
msgstr "Podrobnosti"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Neposredno podprite ukrajinsko vlado z donacijo žetonov."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Prekini povezavo"
@@ -708,10 +703,6 @@ msgstr "Opusti"
msgid "Docs"
msgstr "Dokumentacija"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donirajte Ukrajini"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Ne vidite katerega od svojih pologov V2? <0>Uvozite ga.</0>"
@@ -732,7 +723,6 @@ msgstr "Primerjava učinkovitosti"
msgid "Enter a percent"
msgstr "Vnesite odstotek"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Vnesite prejemnika"
@@ -748,7 +738,6 @@ msgstr "Vnesite naslov za prevzem UNI. Če ima naslov pravico do prevzema žeton
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -817,7 +806,7 @@ msgstr "Razširjeni rezultati z onemogočenih seznamov žetonov"
#: src/components/swap/AdvancedSwapDetails.tsx
msgid "Expected Output"
msgstr "Pričakovani rezultat"
msgstr "Pričakovani izhodni znesek"
#: src/components/Settings/index.tsx
msgid "Expert Mode"
@@ -901,10 +890,15 @@ msgstr "Skrij zaprte pozicije"
msgid "High Price Impact"
msgstr "Visok vpliv na ceno"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Visok vpliv na ceno"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Visok zdrs"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Visok zdrs povečuje tveganje spremembe cene"
@@ -983,7 +977,6 @@ msgstr "Sklad ima prenizko likvidnost za ta posel."
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Razpon ni veljaven. Najnižja cena mora biti nižja od najvišje."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Neveljaven prejemnik"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Ni predlogov."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Ni rezultatov."
@@ -1304,10 +1297,6 @@ msgstr "Optimistic Etherscan"
msgid "Out of range"
msgstr "Zunaj razpona"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Končni znesek je ocenjen."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1315,11 +1304,19 @@ msgstr "Izhodni znesek je ocenjen. Če se cena spremeni za več kot {0} %, bo tr
#: src/components/swap/SwapModalHeader.tsx
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Rezultat je ocenjen. Prejeli boste vsaj <0>{0} {1}</0> ali pa bo transakcija stornirana."
msgstr "Izhodni znesek je ocenjen. Prejeli boste vsaj <0>{0} {1}</0> ali pa bo transakcija stornirana."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Izhodni znesek je ocenjen. Prejeli boste vsaj {0} {1} ali pa bo transakcija stornirana."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Izhodni znesek je ocenjen. Poslali boste največ {0} {1} ali pa bo transakcija stornirana."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Izhod bo poslan na <0>{0}</0>"
msgstr "Izhodni znesek bo poslan na <0>{0}</0>"
#: src/pages/Pool/PositionPage.tsx
msgid "Owner"
@@ -1594,7 +1591,6 @@ msgstr "Izberite omrežje"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Ta pozicija vam bo tudi služila provizije."
msgid "You will receive"
msgstr "Prejeli boste"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Prejeli boste vsaj {0} {1} ali pa bo transakcija stornirana."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Poslali boste največ {0} {1} ali pa bo transakcija stornirana."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Vaša likvidnost V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: sr_SP\n"
"Language-Team: Serbian (Cyrillic)\n"
@@ -458,8 +458,8 @@ msgstr "Сакупи"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Сакупи као WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Сакупи као {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Потврдите трансакцију у новчанику"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Детаљно"
msgid "Details"
msgstr "Детаљи"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Директно подржите украјинску владу донирањем токена."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Прекини везу"
@@ -708,10 +703,6 @@ msgstr "Одбаци"
msgid "Docs"
msgstr "Документи"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Донирајте Украјини"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Не видите ниједну од ваших V2 позиција? <0> Увезите их.</0>"
@@ -732,7 +723,6 @@ msgstr "Поређење ефикасности"
msgid "Enter a percent"
msgstr "Унесите проценат"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Унесите примаоца"
@@ -748,7 +738,6 @@ msgstr "Унесите адресу да бисте покренули преу
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Сакриј затворене позиције"
msgid "High Price Impact"
msgstr "Утицај високе цене"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Висок утицај на цену"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Високо клизање"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Високо клизање повећава ризик од кретања цена"
@@ -983,7 +977,6 @@ msgstr "Недовољна ликвидност у фонду за вашу тр
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Изабран је неважећи опсег. Минимална цена мора бити нижа од максималне."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Неважећи прималац"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Није пронађен ниједан предлог."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Нема резултата."
@@ -1304,10 +1297,6 @@ msgstr "Оптимистични Етхерсцан"
msgid "Out of range"
msgstr "Ван опсега"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Излаз је процењен."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Излаз се процењује. Ако се цена промени
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Излаз се процењује. Добићете најмање <0>{0} {1}</0> или ће се трансакција вратити."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Излаз је процењен. Добићете најмање {0} {1} или ће се трансакција вратити."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Излаз је процењен. Послаћете највише {0} {1} или ће се трансакција вратити."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Излаз ће бити послат на <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Изаберите мрежу"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Такође ћете прикупљати накнаде зарађен
msgid "You will receive"
msgstr "Добићете"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Добићете најмање {0} {1} или ће се трансакција вратити."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Послаћете највише {0} {1} или ће се трансакција вратити."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Ваша V2 ликвидност"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: sv_SE\n"
"Language-Team: Swedish\n"
@@ -458,8 +458,8 @@ msgstr "Samla"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Samla som WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Samla som {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Bekräfta transaktionen i plånboken"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detaljerad"
msgid "Details"
msgstr "Information"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Stöd direkt den ukrainska regeringen genom att donera tokens."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Koppla från"
@@ -708,10 +703,6 @@ msgstr "Avfärda"
msgid "Docs"
msgstr "Dokument"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Donera till Ukraina"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Ser du inte en av dina v2-positioner? <0>Importera den.</0>"
@@ -732,7 +723,6 @@ msgstr "Effektivitetsjämförelse"
msgid "Enter a percent"
msgstr "Ange en procentandel"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Ange en mottagare"
@@ -748,7 +738,6 @@ msgstr "Ange en adress för att utlösa ett UNI-krav. Om adressen har några UNI
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Dölj stängda positioner"
msgid "High Price Impact"
msgstr "Hög prispåverkan"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Hög prispåverkan"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Hög glidning"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Hög glidning ökar risken för prisrörelser"
@@ -983,7 +977,6 @@ msgstr "Otillräcklig likviditet i poolen för din handel"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Ogiltigt intervall valt. Minimipriset måste vara lägre än maxpriset."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Ogiltig mottagare"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Inga förslag hittades."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Inga resultat hittades."
@@ -1304,10 +1297,6 @@ msgstr "Optimistisk Etherscan"
msgid "Out of range"
msgstr "Utanför intervallet"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Utgången är uppskattad."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Beräknad utdata. Om priset ändras med mer än {0} procent återställs
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Utmatningen är uppskattad. Du kommer att få minst <0>{0} {1}</0> annars kommer transaktionen att återställas."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Utgången är uppskattad. Du kommer att få minst {0} {1} eller så återgår transaktionen."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Utgången är uppskattad. Du skickar högst {0} {1} annars återgår transaktionen."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Utmatningen kommer att skickas till <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Välj ett nätverk"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Du kommer också att samla in avgifter som tjänats in från den här po
msgid "You will receive"
msgstr "Du kommer att få"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Du kommer att få minst {0} {1} eller så återgår transaktionen."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Du skickar högst {0} {1} annars återgår transaktionen."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Din V2-likviditet"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: sw_TZ\n"
"Language-Team: Swahili, Tanzania\n"
@@ -458,8 +458,8 @@ msgstr "Kusanya"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Kusanya kama WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Kusanya kama {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Thibitisha shughuli kwenye mkoba"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Kina kina"
msgid "Details"
msgstr "Maelezo"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Uunge mkono moja kwa moja serikali ya Kiukreni kwa kutoa tokeni."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Tenganisha"
@@ -708,10 +703,6 @@ msgstr "Ondoa"
msgid "Docs"
msgstr "Hati"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Changia kwa Ukraine"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Je! Huoni moja ya nafasi zako za v2? <0> Ingiza.</0>"
@@ -732,7 +723,6 @@ msgstr "Ufanisi Kulinganisha"
msgid "Enter a percent"
msgstr "Ingiza asilimia"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Ingiza mpokeaji"
@@ -748,7 +738,6 @@ msgstr "Ingiza anwani ili kuchochea dai la UNI. Ikiwa anwani ina UNI yoyote inay
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ficha nafasi zilizofungwa"
msgid "High Price Impact"
msgstr "Athari ya Bei ya Juu"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Athari ya bei ya juu"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Utelezi wa hali ya juu"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Utelezi wa juu huongeza hatari ya harakati za bei"
@@ -983,7 +977,6 @@ msgstr "Ukwasi hautoshi kwenye bwawa kwa biashara yako"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Masafa batili yamechaguliwa. Bei ya min lazima iwe chini kuliko bei ya juu."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Mpokeaji si sahihi"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Hakuna mapendekezo yaliyopatikana."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Hakuna matokeo yaliyopatikana."
@@ -1304,10 +1297,6 @@ msgstr "Matarajio ya Etherscan"
msgid "Out of range"
msgstr "Kati ya masafa"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Pato linakadiriwa."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Pato inakadiriwa. Ikiwa bei itabadilika kwa zaidi ya {0}% shughuli yako
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Pato inakadiriwa. Utapokea angalau <0>{0} {1}</0> au shughuli itarejea."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Pato linakadiriwa. Utapokea angalau {0} {1} au muamala utarejeshwa."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Pato linakadiriwa. Utatuma angalau {0} {1} au muamala utarejeshwa."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Pato litatumwa kwa <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Chagua mtandao"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Pia utakusanya ada inayopatikana kutoka kwa nafasi hii."
msgid "You will receive"
msgstr "Utapokea"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Utapokea angalau {0} {1} au muamala utarejeshwa."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Utatuma angalau {0} {1} au muamala utarejeshwa."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Ukiritimba wako wa V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: th_TH\n"
"Language-Team: Thai\n"
@@ -458,8 +458,8 @@ msgstr "เก็บรวบรวม"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "สะสมเป็น WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "รวบรวมเป็น {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "ยืนยันการทำธุรกรรมในกระเ
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "รายละเอียด"
msgid "Details"
msgstr "รายละเอียด"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "สนับสนุนรัฐบาลยูเครนโดยตรงด้วยการบริจาคโทเค็น"
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "ตัดการเชื่อมต่อ"
@@ -708,10 +703,6 @@ msgstr "อนุญาตให้ออกไป"
msgid "Docs"
msgstr "เอกสาร"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "บริจาคให้กับยูเครน"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "ไม่เห็นหนึ่งในตำแหน่ง v2 ของคุณใช่หรือไม่ <0>นำเข้า.</0>"
@@ -732,7 +723,6 @@ msgstr "การเปรียบเทียบประสิทธิภา
msgid "Enter a percent"
msgstr "ป้อนเปอร์เซ็นต์"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "ใส่ผู้รับ"
@@ -748,7 +738,6 @@ msgstr "ป้อนที่อยู่เพื่อเรียกใช้
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "ซ่อนตำแหน่งที่ปิด"
msgid "High Price Impact"
msgstr "ผลกระทบราคาสูง"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "ผลกระทบด้านราคาสูง"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "การลื่นไถลสูง"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Slippage สูงเพิ่มความเสี่ยงจากการเคลื่อนไหวของราคา"
@@ -983,7 +977,6 @@ msgstr "สภาพคล่องไม่เพียงพอสำหรั
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "เลือกช่วงที่ไม่ถูกต้อง ราคาขั้นต่ำต้องต่ำกว่าราคาสูงสุด"
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "ผู้รับไม่ถูกต้อง"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "ไม่พบข้อเสนอ"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "ไม่พบผลลัพธ์."
@@ -1304,10 +1297,6 @@ msgstr "มองโลกในแง่ดี Etherscan"
msgid "Out of range"
msgstr "ไม่อยู่ในขอบเขต"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "มีการประมาณการเอาท์พุต"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "ประมาณการเอาท์พุต หากราค
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "ประมาณการเอาท์พุต คุณจะได้รับอย่างน้อย <0>{0} {1}</0> หรือธุรกรรมจะเปลี่ยนกลับ"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "มีการประมาณการเอาท์พุต คุณจะได้รับอย่างน้อย {0} {1} มิฉะนั้นธุรกรรมจะเปลี่ยนกลับ"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "มีการประมาณการเอาท์พุต คุณจะส่งไม่เกิน {0} {1} มิฉะนั้นธุรกรรมจะเปลี่ยนกลับ"
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "เอาต์พุตจะถูกส่งไปยัง <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "เลือกเครือข่าย"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "คุณจะเก็บค่าธรรมเนียมที่
msgid "You will receive"
msgstr "คุณจะได้รับ"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "คุณจะได้รับอย่างน้อย {0} {1} ฉะนั้นธุรกรรมจะเปลี่ยนกลับ"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "คุณจะส่งไม่เกิน {0} {1} ฉะนั้นธุรกรรมจะเปลี่ยนกลับ"
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "สภาพคล่อง V2 ของคุณ"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: tr_TR\n"
"Language-Team: Turkish\n"
@@ -458,8 +458,8 @@ msgstr "Topla"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "WETH olarak toplayın"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "{nativeWrappedSymbol}olarak toplayın"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Cüzdandaki işlemi onaylayın"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Detaylı"
msgid "Details"
msgstr "Detaylar"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Jeton bağışlayarak Ukrayna hükümetini doğrudan destekleyin."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Bağlantıyı Kes"
@@ -708,10 +703,6 @@ msgstr "Reddet"
msgid "Docs"
msgstr "Dokümanlar"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Ukrayna'ya bağış yapın"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "V2 konumlarınızdan birini görmüyor musunuz? <0>İçe aktarın.</0>"
@@ -732,7 +723,6 @@ msgstr "Verimlilik Karşılaştırması"
msgid "Enter a percent"
msgstr "Yüzde girin"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Bir alıcı girin"
@@ -748,7 +738,6 @@ msgstr "Bir UNI talebini tetiklemek için bir adres girin. Adreste talep edilebi
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Kapalı pozisyonları gizle"
msgid "High Price Impact"
msgstr "Yüksek Fiyat Etkisi"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Yüksek fiyat etkisi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Yüksek kayma"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Yüksek kayma, fiyat hareketi riskini artırır"
@@ -983,7 +977,6 @@ msgstr "İşleminiz için havuzda yetersiz likidite"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Geçersiz aralık seçildi. Minimum fiyat, maksimum fiyattan düşük olmalıdır."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Geçersiz alıcı"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Teklif bulunamadı."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Sonuç bulunamadı."
@@ -1304,10 +1297,6 @@ msgstr "İyimser Etherscan"
msgid "Out of range"
msgstr "Aralık dışında"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Çıktı tahmin edilir."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Çıktı tahminidir. Fiyat %{0} oranından fazla değişirse işleminiz
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Giriş tahminidir. En az <0>{0} {1}</0> alabilirsiniz. Aksi takdirde işlem geri döner."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Çıktı tahmin edilmektedir. En az {0} {1} alacaksınız veya işlem geri dönecek."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Çıktı tahmin edilmektedir. En fazla {0} {1} gönderirsiniz yoksa işlem geri döner."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Çıktı şuraya gönderilecek: <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Bir ağ seçin"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Ayrıca bu pozisyondan kazanılan ücretleri de toplarsınız."
msgid "You will receive"
msgstr "Alacağınız:"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "En az {0} {1} alacaksınız veya işlem geri dönecek."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "En fazla {0} {1} gönderirsiniz yoksa işlem geri döner."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "V2 likiditeniz"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: uk_UA\n"
"Language-Team: Ukrainian\n"
@@ -458,8 +458,8 @@ msgstr "Зібрати"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Зібрати як WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Зібрати як {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Підтвердіть транзакцію в гаманці"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Докладно"
msgid "Details"
msgstr "Подробиці"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Безпосередньо підтримувати український уряд, даруючи токени."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Відключитись"
@@ -708,10 +703,6 @@ msgstr "Відхилити"
msgid "Docs"
msgstr "Документація"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Пожертвуйте Україні"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Не бачите жодної з ваших позицій v2? <0>Імпортуйте їх.</0>"
@@ -732,7 +723,6 @@ msgstr "Порівняння ефективності"
msgid "Enter a percent"
msgstr "Введіть відсоток"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Введіть одержувача"
@@ -748,7 +738,6 @@ msgstr "Введіть адресу для ініціювання збору UNI
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Приховати закриті позиції"
msgid "High Price Impact"
msgstr "Вплив високої ціни"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Високий вплив на ціну"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Високе ковзання"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Високе ковзання збільшує ризик руху ціни"
@@ -983,7 +977,6 @@ msgstr "Недостатня ліквідність у пулі для вашо
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Вибрано недійсний діапазон. Мінімальна ціна має бути нижчою за максимальну."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Недійсний одержувач"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Пропозиції не знайдено."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Результатів не знайдено."
@@ -1304,10 +1297,6 @@ msgstr "Оптимістичний Etherscan"
msgid "Out of range"
msgstr "Поза діапазоном"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Вихід оцінюється."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Результат оцінюється. Якщо ціна змінит
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Результат оцінюється. Ви отримаєте щонайменше <0>{0} {1}</0>, або операцію буде скасовано."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Вихід оцінюється. Ви отримаєте щонайменше {0} {1} , або транзакція буде повернена."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Вихід оцінюється. Ви надішлете щонайбільше {0} {1} , або транзакція буде повернена."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Результат буде надіслано на <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Виберіть мережу"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Ви також збиратимете комісії, отримані
msgid "You will receive"
msgstr "Ви отримаєте"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Ви отримаєте щонайменше {0} {1} або транзакція буде повернена."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Ви надішлете щонайбільше {0} {1} або транзакція буде повернена."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Ваша ліквідність V2"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: vi_VN\n"
"Language-Team: Vietnamese\n"
@@ -458,8 +458,8 @@ msgstr "Sưu tầm"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "Thu thập dưới dạng WETH"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "Thu thập dưới dạng {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "Xác nhận giao dịch trong ví"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "Chi tiết"
msgid "Details"
msgstr "Chi tiết"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "Trực tiếp hỗ trợ chính phủ Ukraine bằng cách quyên góp mã thông báo."
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "Ngắt kết nối"
@@ -708,10 +703,6 @@ msgstr "Bỏ qua"
msgid "Docs"
msgstr "Docs"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "Quyên góp cho Ukraine"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "Bạn không thấy một trong các vị trí v2 của mình? <0> Nhập nó ngay.</0>"
@@ -732,7 +723,6 @@ msgstr "So sánh hiệu quả"
msgid "Enter a percent"
msgstr "Nhập một phần trăm"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "Nhập người nhận"
@@ -748,7 +738,6 @@ msgstr "Nhập địa chỉ để kích hoạt khiếu nại UNI. Nếu địa c
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "Ẩn các vị trí đã đóng"
msgid "High Price Impact"
msgstr "Tác động giá cao"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "Tác động giá cao"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "Trượt cao"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "Trượt giá cao làm tăng rủi ro biến động giá"
@@ -983,7 +977,6 @@ msgstr "Không đủ thanh khoản trong pool cho giao dịch của bạn"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "Đã chọn dải ô không hợp lệ. Giá tối thiểu phải thấp hơn giá tối đa."
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "Người nhận không hợp lệ"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "Không tìm thấy đề xuất nào."
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "Không có kết quả nào được tìm thấy."
@@ -1304,10 +1297,6 @@ msgstr "Etherscan lạc quan"
msgid "Out of range"
msgstr "Ngoài phạm vi"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "Sản lượng được ước tính."
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "Đầu ra được ước tính. Nếu giá thay đổi nhiều hơn {0}
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "Đầu ra được ước tính. Bạn sẽ nhận được ít nhất <0>{0} {1}</0> hoặc giao dịch sẽ hoàn nguyên."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "Sản lượng được ước tính. Bạn sẽ nhận được ít nhất {0} {1} hoặc giao dịch sẽ hoàn nguyên."
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "Sản lượng được ước tính. Bạn sẽ gửi nhiều nhất là {0} {1} hoặc giao dịch sẽ hoàn nguyên."
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "Đầu ra sẽ được gửi đến <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "Chọn một mạng"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "Bạn cũng sẽ thu phí kiếm được từ vị trí này."
msgid "You will receive"
msgstr "Bạn sẽ nhận"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "Bạn sẽ nhận được ít nhất {0} {1} hoặc giao dịch sẽ hoàn nguyên."
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "Bạn sẽ gửi nhiều nhất là {0} {1} hoặc giao dịch sẽ hoàn nguyên."
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "Thanh khoản V2 của bạn"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: zh_CN\n"
"Language-Team: Chinese Simplified\n"
@@ -458,8 +458,8 @@ msgstr "收取"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "以 WETH 方式收取"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "收集为 {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "在钱包中确认交易"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "详细信息"
msgid "Details"
msgstr "详细信息"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "通过捐赠代币直接支持乌克兰政府。"
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "断开"
@@ -708,10 +703,6 @@ msgstr "关闭"
msgid "Docs"
msgstr "文档"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "捐赠给乌克兰"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "看不到您的一些 v2 流动资金吗?<0>将它手动导入。</0>"
@@ -732,7 +723,6 @@ msgstr "效率对比"
msgid "Enter a percent"
msgstr "输入百分比"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "输入接收者"
@@ -748,7 +738,6 @@ msgstr "输入地址来查看领取 UNI 代币的资质。如果地址有任何
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "隐藏已关闭的仓位"
msgid "High Price Impact"
msgstr "对兑换率有高度影响"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "对兑换率有高度影响"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "高滑点"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "高滑点会增加兑换率波动风险"
@@ -983,7 +977,6 @@ msgstr "你交易的币对流动性不足"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "选择的范围无效。最小兑换率必须低于最大兑换率。"
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "无效的接收方"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "没有提案。"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "未找到结果。"
@@ -1304,10 +1297,6 @@ msgstr "Optimistic Etherscan"
msgid "Out of range"
msgstr "超出范围"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "输出量仅为估值。"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "输出数额仅为估值。如果兑换率变化超过 {0}%,您的交
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "输出数额仅为估值。您将收到至少 <0>{0} {1}</0> 代币,否则将还原交易。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "估计输出。您将收到至少 {0} {1} 或交易将恢复。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "估计输出。您最多发送 {0} {1} 或交易将恢复。"
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "输出代币将发送至 <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "选择网络"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -1726,7 +1722,7 @@ msgstr "仍要兑换"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap confirmed"
msgstr "交确认"
msgstr "交易已确认"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap details"
@@ -1743,7 +1739,7 @@ msgstr "兑换失败: {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Swap pending"
msgstr "交换待处理"
msgstr "交处理"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Swap summary"
@@ -1940,7 +1936,7 @@ msgstr "交易完成于"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Transaction confirmed"
msgstr "交易确认"
msgstr "交易确认"
#: src/components/TransactionSettings/index.tsx
#: src/lib/components/Swap/Settings/TransactionTtlInput.tsx
@@ -2087,7 +2083,7 @@ msgstr "将 <0/> 换回为 {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap confirmed"
msgstr "打开包装确认"
msgstr "交易已确认"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrap native currency."
@@ -2095,11 +2091,11 @@ msgstr "解开本国货币。"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Unwrap pending"
msgstr "打开待处理"
msgstr "交易处理"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Unwrapping native currency."
msgstr "解包本国货币。"
msgstr "解包原生代币。"
#: src/pages/Vote/Landing.tsx
msgid "Update Delegation"
@@ -2280,19 +2276,19 @@ msgstr "将 <0/> 换为 {0}"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap confirmed"
msgstr "包裹确认"
msgstr "交易已确认"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrap native currency."
msgstr "包裹本国货币。"
msgstr "Wrap 原生代币。"
#: src/lib/components/Swap/Status/StatusDialog.tsx
msgid "Wrap pending"
msgstr "包裹待处理"
msgstr "交易处理"
#: src/lib/components/Swap/Toolbar/Caption.tsx
msgid "Wrapping native currency."
msgstr "包装本国货币。"
msgstr "包装原生代币。"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
@@ -2368,14 +2364,6 @@ msgstr "您还将从此仓位中领取已赚取的手续费。"
msgid "You will receive"
msgstr "您将收到"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "您将收到至少 {0} {1} 否则交易将回滚。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "您最多发送 {0} {1} 否则交易将回滚。"
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "您的V2流动资金"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: uniswap-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2022-03-03 22:06\n"
"PO-Revision-Date: 2022-03-18 00:15\n"
"Last-Translator: \n"
"Language: zh_TW\n"
"Language-Team: Chinese Traditional\n"
@@ -458,8 +458,8 @@ msgstr "收取"
#: src/pages/Pool/PositionPage.tsx
#: src/pages/RemoveLiquidity/V3.tsx
msgid "Collect as WETH"
msgstr "以 WETH 方式收取"
msgid "Collect as {nativeWrappedSymbol}"
msgstr "收集為 {nativeWrappedSymbol}"
#: src/pages/Pool/PositionPage.tsx
msgid "Collect fees"
@@ -516,7 +516,6 @@ msgstr "在錢包中確認交易"
#: src/components/Web3Status/index.tsx
#: src/components/earn/ClaimRewardModal.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/AddLiquidity/index.tsx
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
@@ -687,10 +686,6 @@ msgstr "詳細信息"
msgid "Details"
msgstr "詳細信息"
#: src/components/Popups/DonationLink.tsx
msgid "Directly support the Ukrainian government by donating tokens."
msgstr "通過捐贈代幣直接支持烏克蘭政府。"
#: src/components/AccountDetails/index.tsx
msgid "Disconnect"
msgstr "斷開"
@@ -708,10 +703,6 @@ msgstr "關閉"
msgid "Docs"
msgstr "文檔"
#: src/components/Popups/DonationLink.tsx
msgid "Donate to Ukraine"
msgstr "捐贈給烏克蘭"
#: src/pages/MigrateV2/index.tsx
msgid "Dont see one of your v2 positions? <0>Import it.</0>"
msgstr "看不到您的一些 v2 流動資金嗎?<0>將它手動導入。</0>"
@@ -732,7 +723,6 @@ msgstr "效率對比"
msgid "Enter a percent"
msgstr "輸入百分比"
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Enter a recipient"
msgstr "輸入接收者"
@@ -748,7 +738,6 @@ msgstr "輸入地址來查看領取 UNI 代幣的資質。如果地址有任何
#: src/components/earn/ClaimRewardModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/burn/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -901,10 +890,15 @@ msgstr "隱藏已關閉的倉位"
msgid "High Price Impact"
msgstr "高兌換率影響"
#: src/lib/components/Swap/Summary/index.tsx
#: src/lib/components/Swap/Summary/index.tsx
msgid "High price impact"
msgstr "高兌換率影響"
#: src/lib/components/Swap/Summary/index.tsx
msgid "High slippage"
msgstr "高滑點"
#: src/lib/components/Swap/Settings/MaxSlippageSelect.tsx
msgid "High slippage increases the risk of price movement"
msgstr "高滑點增加了價格變動的風險"
@@ -983,7 +977,6 @@ msgstr "您想交易的池中流動性不足"
#: src/lib/components/Swap/Toolbar/Caption.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/components/Swap/WrapErrorText.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/hooks.tsx
#: src/state/mint/v3/hooks.tsx
@@ -1015,7 +1008,6 @@ msgid "Invalid range selected. The min price must be lower than the max price."
msgstr "選擇的範圍無效。最小兌換率必須低於最大兌換率。"
#: src/lib/hooks/swap/useSwapCallback.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/state/swap/hooks.tsx
msgid "Invalid recipient"
msgstr "無效的接收方"
@@ -1247,6 +1239,7 @@ msgid "No proposals found."
msgstr "沒有提案。"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/index.tsx
msgid "No results found."
msgstr "未找到任何結果。"
@@ -1304,10 +1297,6 @@ msgstr "Optimistic Etherscan"
msgid "Out of range"
msgstr "超出範圍"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated."
msgstr "輸出量僅為估值。"
#: src/pages/AddLiquidityV2/index.tsx
#: src/pages/RemoveLiquidity/index.tsx
msgid "Output is estimated. If the price changes by more than {0}% your transaction will revert."
@@ -1317,6 +1306,14 @@ msgstr "輸出數額僅為估值。如果兌換率變化超過 {0}%,您的交
msgid "Output is estimated. You will receive at least <0>{0} {1}</0> or the transaction will revert."
msgstr "輸出數額僅為估值。您將收到至少 <0>{0} {1}</0> 代幣,否則將還原交易。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will receive at least {0} {1} or the transaction will revert."
msgstr "估計輸出。您將收到至少 {0} {1} 或交易將恢復。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "Output is estimated. You will send at most {0} {1} or the transaction will revert."
msgstr "估計輸出。您最多發送 {0} {1} 或交易將恢復。"
#: src/components/swap/SwapModalHeader.tsx
msgid "Output will be sent to <0>{0}</0>"
msgstr "輸出代幣將發送至 <0>{0}</0>"
@@ -1594,7 +1591,6 @@ msgstr "選擇網絡"
#: src/components/SearchModal/CurrencySearch.tsx
#: src/lib/components/TokenSelect/TokenButton.tsx
#: src/lib/components/TokenSelect/index.tsx
#: src/lib/hooks/swap/useSwapInfo.tsx
#: src/pages/PoolFinder/index.tsx
#: src/pages/PoolFinder/index.tsx
#: src/state/swap/hooks.tsx
@@ -2368,14 +2364,6 @@ msgstr "您還將從此倉位中領取已賺取的手續費。"
msgid "You will receive"
msgstr "您將收到"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will receive at least {0} {1} or the transaction will revert."
msgstr "您將收到至少 {0} {1} 否則交易將恢復。"
#: src/lib/components/Swap/Summary/index.tsx
msgid "You will send at most {0} {1} or the transaction will revert."
msgstr "您最多發送 {0} {1} 否則交易將恢復。"
#: src/pages/Pool/v2.tsx
msgid "Your V2 liquidity"
msgstr "您的V2流動資金"

View File

@@ -23,6 +23,7 @@ import useUSDCPrice from 'hooks/useUSDCPrice'
import { useV3PositionFees } from 'hooks/useV3PositionFees'
import { useV3PositionFromTokenId } from 'hooks/useV3Positions'
import { useSingleCallResult } from 'lib/hooks/multicall'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { useCallback, useMemo, useRef, useState } from 'react'
import ReactGA from 'react-ga'
import { Link, RouteComponentProps } from 'react-router-dom'
@@ -345,6 +346,8 @@ export function PositionPage({
// flag for receiving WETH
const [receiveWETH, setReceiveWETH] = useState(false)
const nativeCurrency = useNativeCurrency()
const nativeWrappedSymbol = nativeCurrency.wrapped.symbol
// construct Position from details returned
const [poolState, pool] = usePool(token0 ?? undefined, token1 ?? undefined, feeAmount)
@@ -778,7 +781,7 @@ export function PositionPage({
<AutoColumn gap="md">
<RowBetween>
<ThemedText.Main>
<Trans>Collect as WETH</Trans>
<Trans>Collect as {nativeWrappedSymbol}</Trans>
</ThemedText.Main>
<Toggle
id="receive-as-weth"

View File

@@ -22,6 +22,7 @@ import useDebouncedChangeHandler from 'hooks/useDebouncedChangeHandler'
import useTheme from 'hooks/useTheme'
import useTransactionDeadline from 'hooks/useTransactionDeadline'
import { useV3PositionFromTokenId } from 'hooks/useV3Positions'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { useCallback, useMemo, useState } from 'react'
import ReactGA from 'react-ga'
import { Redirect, RouteComponentProps } from 'react-router-dom'
@@ -69,6 +70,8 @@ function Remove({ tokenId }: { tokenId: BigNumber }) {
// flag for receiving WETH
const [receiveWETH, setReceiveWETH] = useState(false)
const nativeCurrency = useNativeCurrency()
const nativeWrappedSymbol = nativeCurrency.wrapped.symbol
// burn state
const { percent } = useBurnV3State()
@@ -394,7 +397,7 @@ function Remove({ tokenId }: { tokenId: BigNumber }) {
{showCollectAsWeth && (
<RowBetween>
<ThemedText.Main>
<Trans>Collect as WETH</Trans>
<Trans>Collect as {nativeWrappedSymbol}</Trans>
</ThemedText.Main>
<Toggle
id="receive-as-weth"

View File

@@ -148,8 +148,8 @@ export default function Swap({ history }: RouteComponentProps) {
[trade, tradeState]
)
const fiatValueInput = useUSDCValue(parsedAmounts[Field.INPUT])
const fiatValueOutput = useUSDCValue(parsedAmounts[Field.OUTPUT])
const fiatValueInput = useUSDCValue(trade?.inputAmount)
const fiatValueOutput = useUSDCValue(trade?.outputAmount)
const priceImpact = useMemo(
() => (routeIsSyncing ? undefined : computeFiatValuePriceImpact(fiatValueInput, fiatValueOutput)),
[fiatValueInput, fiatValueOutput, routeIsSyncing]

View File

@@ -336,7 +336,12 @@ export default function VotePage({
</WrapSmall>
</AutoColumn>
<ProgressWrapper>
{forPercentage && <Progress status={'for'} percentageString={`${forPercentage.toFixed(0)}%`} />}
<Progress
status={'for'}
percentageString={
proposalData?.forCount.greaterThan(0) ? `${forPercentage?.toFixed(0) ?? 0}%` : '0%'
}
/>
</ProgressWrapper>
</CardSection>
</StyledDataCard>
@@ -355,9 +360,12 @@ export default function VotePage({
</WrapSmall>
</AutoColumn>
<ProgressWrapper>
{againstPercentage && (
<Progress status={'against'} percentageString={`${againstPercentage.toFixed(0)}%`} />
)}
<Progress
status={'against'}
percentageString={
proposalData?.againstCount?.greaterThan(0) ? `${againstPercentage?.toFixed(0) ?? 0}%` : '0%'
}
/>
</ProgressWrapper>
</CardSection>
</StyledDataCard>

View File

@@ -269,7 +269,7 @@ export function useAllProposalData(): { data: ProposalData[]; loading: boolean }
data: proposalsCallData.map((proposal, i) => {
const startBlock = parseInt(proposal?.result?.startBlock?.toString())
let description = formattedLogs[i]?.description
let description = formattedLogs[i]?.description ?? ''
if (startBlock === UNISWAP_GRANTS_START_BLOCK) {
description = UNISWAP_GRANTS_PROPOSAL_DESCRIPTION
}

View File

@@ -2,8 +2,8 @@ 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 { useStablecoinAmountFromFiatValue } from 'hooks/useUSDCPrice'
import { useFilterFreshQuote } from 'lib/hooks/routing/clientSideSmartOrderRouter'
import { useRoutingAPIArguments } from 'lib/hooks/routing/useRoutingAPIArguments'
import useBlockNumber from 'lib/hooks/useBlockNumber'
import ms from 'ms.macro'
import { useMemo } from 'react'
import ReactGA from 'react-ga'
@@ -13,17 +13,6 @@ import { useClientSideRouter } from 'state/user/hooks'
import { GetQuoteResult, InterfaceTrade, TradeState } from './types'
import { computeRoutes, transformRoutesToTrade } from './utils'
function useFreshData<T>(data: T, dataBlockNumber: number, maxBlockAge = 10): T | undefined {
const localBlockNumber = useBlockNumber()
if (!localBlockNumber) return undefined
if (localBlockNumber - dataBlockNumber > maxBlockAge) {
return undefined
}
return data
}
/**
* Returns the best trade by invoking the routing api or the smart order router on the client
* @param tradeType whether the swap is an exact in/out
@@ -56,12 +45,12 @@ export function useRoutingAPITrade<TTradeType extends TradeType>(
useClientSideRouter: clientSideRouter,
})
const { isLoading, isError, data } = useGetQuoteQuery(queryArgs ?? skipToken, {
const { isLoading, isError, data, currentData } = useGetQuoteQuery(queryArgs ?? skipToken, {
pollingInterval: ms`15s`,
refetchOnFocus: true,
})
const quoteResult: GetQuoteResult | undefined = useFreshData(data, Number(data?.blockNumber) || 0)
const quoteResult: GetQuoteResult | undefined = useFilterFreshQuote(data)
const route = useMemo(
() => computeRoutes(currencyIn, currencyOut, tradeType, quoteResult),
@@ -71,6 +60,8 @@ export function useRoutingAPITrade<TTradeType extends TradeType>(
// get USD gas cost of trade in active chains stablecoin amount
const gasUseEstimateUSD = useStablecoinAmountFromFiatValue(quoteResult?.gasUseEstimateUSD) ?? null
const isSyncing = currentData !== data
return useMemo(() => {
if (!currencyIn || !currencyOut) {
return {
@@ -107,14 +98,24 @@ export function useRoutingAPITrade<TTradeType extends TradeType>(
const trade = transformRoutesToTrade(route, tradeType, gasUseEstimateUSD)
return {
// always return VALID regardless of isFetching status
state: TradeState.VALID,
state: isSyncing ? TradeState.SYNCING : TradeState.VALID,
trade,
}
} catch (e) {
console.debug('transformRoutesToTrade failed: ', e)
return { state: TradeState.INVALID, trade: undefined }
}
}, [currencyIn, currencyOut, isLoading, quoteResult, tradeType, isError, route, queryArgs, gasUseEstimateUSD])
}, [
currencyIn,
currencyOut,
quoteResult,
isLoading,
tradeType,
isError,
route,
queryArgs,
gasUseEstimateUSD,
isSyncing,
])
}
// only want to enable this when app hook called

View File

@@ -26,7 +26,6 @@ export function computeRoutes(
if (parsedTokenOut.address !== currencyOut.wrapped.address) return undefined
const parsedCurrencyIn = currencyIn.isNative ? nativeOnChain(currencyIn.chainId) : parsedTokenIn
const parsedCurrencyOut = currencyOut.isNative ? nativeOnChain(currencyOut.chainId) : parsedTokenOut
try {

View File

@@ -27,8 +27,8 @@ describe('hooks', () => {
queryParametersToSwapState(parse('?outputCurrency=invalid', { parseArrays: false, ignoreQueryPrefix: true }))
).toEqual({
[Field.INPUT]: { currencyId: 'ETH' },
[Field.OUTPUT]: { currencyId: 'USDC' },
typedValue: '1',
[Field.OUTPUT]: { currencyId: null },
typedValue: '',
independentField: Field.INPUT,
recipient: null,
})

Some files were not shown because too many files have changed in this diff Show More