Compare commits

..

21 Commits

Author SHA1 Message Date
Zach Pomerantz
2b496c62f1 build: deploy without needing check suite 2022-07-05 08:50:28 -07:00
Zach Pomerantz
a3c77708e2 build: deploy without waiting on check suite 2022-07-05 08:49:11 -07:00
Zach Pomerantz
b9e8139699 fix: alter headers on cached response (#4032)
* fix: alter headers on cached response

* test: deflake
2022-07-05 08:31:06 -07:00
Zach Pomerantz
c82dcabd19 build: disable scheduled release (#4022) 2022-07-01 15:26:42 -07:00
Zach Pomerantz
26b37d5274 build: fix await-check-suite with (#4021)
* build: fix await-check-suites

* build: fix await-check-suite with
2022-07-01 15:12:51 -07:00
Zach Pomerantz
d5c464b26b build: fix await-check-suites (#4020) 2022-07-01 15:10:08 -07:00
Zach Pomerantz
c48d4c5425 build: simplify actions (#4014)
* build: simplify actions

* build: add checkout

* build: fix path

* build: fix all paths

* build: missing steps

* build: update build name

* build: rename action

* build: add shell

* build: formalize lint

* build: cleanup

* build: update release

* build: comment workflows
2022-07-01 15:05:37 -07:00
Kaylee George
b28cd9c8b0 fix: token button jump (#4017)
* fix token button jump

* Update index.tsx

* move inline style to CSS
2022-07-01 16:18:46 -04:00
Vignesh Mohankumar
071017879c feat: don't allow disconnect/change on injected mobile wallets (#4015)
* feat: don't allow disconnect/change on injected mobile wallets

* new variable
2022-07-01 13:57:15 -04:00
github-actions[bot]
5535c83db5 chore(i18n): new Crowdin translations (#4013)
chore(i18n): synchronize translations from crowdin [skip ci]

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2022-07-01 09:03:06 -07:00
Andrii Bodnar
8f9eccabaf fix: Crowdin translations download (#3927) 2022-07-01 09:00:20 -07:00
Vignesh Mohankumar
322cdaf888 refactor: rm useActiveWeb3React (#4004)
* rm activeweb3react

* wrap in web3provider?
2022-06-30 16:38:02 -07:00
Vignesh Mohankumar
edcdbfd8f5 feat: disconnect for coinbase wallet (#3993)
* feat: disconnect for coinbase wallet

* change isActive logic

* remove logs

* reset state for coinbase wallet

* active -> isActive

* rm data-cy
2022-06-30 18:04:42 -04:00
Vignesh Mohankumar
d36f13d7e2 fix: resolves network switch race condition (#4005)
* don't need undo logic

* maybe need to return connector

* make sure the urlChainId doesn't equal existing chainId

* fix network switching

* add back revert logic

* undo changes to switchChain

* move revert logic into the hook
2022-06-30 11:51:23 -05:00
Vignesh Mohankumar
8548b33bd9 feat: show injected options in wallet browsers (#3995)
* feat: show injected options in wallet browsers

* initial testing

* more mocking

* mock more

* mobile tests

* updates

* add data test

* finally got the mock to work

* WORKING

* uncomment

* rm console.log

* fix

* check length

* fix tests to use useWeb3React

* rm

* rename tests
2022-06-30 12:26:22 -04:00
Vignesh Mohankumar
0e148bb1b3 style: use data-testid in cypress test (#4001)
* use data-testid

* findByTestId

test -> it

add types

temp

rm exclude

get -> find

* Revert "findByTestId"

This reverts commit 1e1c483ef9.

* rm some test ids

* fix
2022-06-29 16:57:21 -04:00
Vignesh Mohankumar
9ddb37a982 chore: move cypress to devDependencies (#4002) 2022-06-29 13:41:20 -07:00
Zach Pomerantz
63227cd2c5 build: dedup lockfile (#3985)
* build: dedup ethers

* build: dedup token-lists

* build: dedup deps

* build: clean deps
2022-06-29 09:43:01 -07:00
Zach Pomerantz
dc38dc1c10 build: disable release (#3994) 2022-06-28 18:03:40 -07:00
Zach Pomerantz
2c6757ff62 fix: set content-type on cached document (#3990)
* fix: set content-type on cached document

* fix: delete old content-types

* fix: avoid immutable headers

* test: content-type

* fix: do not destructure response

* test: serve from cache with vercel

* fix: inject cache marker into body
2022-06-28 16:31:05 -07:00
Zach Pomerantz
0d03b09ae9 build: sleep for 10m after pinning (#3991) 2022-06-28 15:40:33 -07:00
166 changed files with 2723 additions and 2049 deletions

21
.github/actions/setup/action.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Setup
runs:
using: composite
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: yarn
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
shell: bash

View File

@@ -1,4 +1,4 @@
name: "Check PR Title"
name: Check PR Title
on:
pull_request_target:
@@ -8,8 +8,8 @@ on:
- synchronize
jobs:
check-pr-title:
name: Check PR Title
# Ensures that the PR title adheres to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/).
conventional-commit:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v3.4.0

View File

@@ -2,34 +2,18 @@ name: Crowdin Download
on:
schedule:
- cron: '0 * * * *' # every hour we download translations and update the pr from crowdin
# Download translations every hour.
# This is not done as part of the build so that builds remain reproducible.
- cron: '0 * * * *'
# manual trigger
workflow_dispatch:
jobs:
download-translations:
name: Download translations
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- uses: ./.github/actions/setup
- run: yarn i18n:extract
- name: Download Crowdin translations
@@ -41,8 +25,9 @@ jobs:
token: ${{ secrets.CROWDIN_PERSONAL_TOKEN_SECRET }}
source: 'src/locales/en-US.po'
translation: 'src/locales/%locale%.po'
create_pull_request: false
localization_branch_name: main
create_pull_request: true
pull_request_title: 'chore(i18n): new Crowdin translations'
localization_branch_name: l10n_crowdin
commit_message: "chore(i18n): synchronize translations from crowdin [skip ci]"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -6,28 +6,11 @@ on:
- main
jobs:
synchronize-with-crowdin:
name: Upload sources to Crowdin
upload-sources:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- uses: ./.github/actions/setup
- run: yarn i18n:extract
- name: Upload Crowdin sources

View File

@@ -1,45 +0,0 @@
name: Lint
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- name: Run eslint w/ autofix
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login == github.repository_owner }}
uses: wearerequired/lint-action@36c7e6689e80d785d27a22f71d970f3a3b4fcb70
with:
github_token: ${{ secrets.github_token }}
eslint: true
eslint_args: "-c .eslintrc.json"
auto_fix: true
- name: Run eslint
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.owner.login != github.repository_owner }}
run: yarn eslint .

View File

@@ -1,61 +1,51 @@
name: Release
on:
schedule:
- cron: '0 12 * * 1-4' # every day 12:00 UTC Monday-Thursday
# Scheduled deploys are disabled until they can be tested. This is currently blocked on flaky cypress tests.
# schedule:
# - cron: '0 12 * * 1-4' # every day 12:00 UTC Monday-Thursday
# manual trigger
workflow_dispatch:
jobs:
bump_version:
name: Bump Version
# wait-on-test:
# runs-on: ubuntu-latest
# steps:
# - uses: jitterbit/await-check-suites@v1
# with:
# # Only wait for the first check suite, so that only tests are awaited, and not eg crowdin.
# onlyFirstCheckSuite: true
tag:
# needs: wait-on-test
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.github_tag_action.outputs.new_tag }}
changelog: ${{ steps.github_tag_action.outputs.changelog }}
steps:
- uses: actions/checkout@v3
- name: Bump version and push tag
id: github_tag_action
uses: mathieudutour/github-tag-action@331898d5052eedac9b15fec867b5ba66ebf9b692
- name: Bump and tag
id: github-tag-action
uses: mathieudutour/github-tag-action@v6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
release_branches: .*
default_bump: false
default_bump: patch
create_release:
name: Create Release
release:
needs: tag
if: ${{ needs.tag.outputs.new_tag != null }}
runs-on: ubuntu-latest
needs: bump_version
if: ${{ needs.bump_version.outputs.new_tag != null }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- uses: ./.github/actions/setup
- run: yarn prepare
- run: yarn build
- name: Pin to IPFS
id: upload
id: pinata
uses: anantaramdas/ipfs-pinata-deploy-action@39bbda1ce1fe24c69c6f57861b8038278d53688d
with:
pin-name: Uniswap ${{ needs.bump_version.outputs.new_tag }}
pin-name: Uniswap ${{ needs.tag.outputs.new_tag }}
path: './build'
pinata-api-key: ${{ secrets.PINATA_API_KEY }}
pinata-secret-api-key: ${{ secrets.PINATA_API_SECRET_KEY }}
@@ -69,10 +59,24 @@ jobs:
seeds: ${{ secrets.CRUST_SEEDS }}
- name: Convert CIDv0 to CIDv1
id: convert_cidv0
id: convert-cidv0
uses: uniswap/convert-cidv0-cidv1@v1.0.0
with:
cidv0: ${{ steps.upload.outputs.hash }}
cidv0: ${{ steps.pinata.outputs.hash }}
- uses: actions/cache@v3
id: cypress-cache
with:
path: /home/runner/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('node_modules/cypress') }}
- if: steps.cypress-cache.outputs.cache-hit != 'true'
run: yarn cypress install
- uses: cypress-io/github-action@v4
with:
install: false
browser: chrome
spec: cypress/e2e/landing.test.ts
config: pageLoadTimeout=180000,retries=4,baseUrl=https://cloudflare-ipfs.com/ipfs/${{ steps.pinata.outputs.hash }}
- name: Update DNS with new IPFS hash
env:
@@ -82,20 +86,19 @@ jobs:
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
uses: textileio/cloudflare-update-dnslink@0fe7b7a1ffc865db3a4da9773f0f987447ad5848
with:
cid: ${{ steps.upload.outputs.hash }}
cid: ${{ steps.pinata.outputs.hash }}
- name: Create GitHub Release
id: create_release
- name: Release
uses: actions/create-release@v1.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.bump_version.outputs.new_tag }}
release_name: Release ${{ needs.bump_version.outputs.new_tag }}
tag_name: ${{ needs.tag.outputs.new_tag }}
release_name: Release ${{ needs.tag.outputs.new_tag }}
body: |
IPFS hash of the deployment:
- CIDv0: `${{ steps.upload.outputs.hash }}`
- CIDv1: `${{ steps.convert_cidv0.outputs.cidv1 }}`
- CIDv0: `${{ steps.pinata.outputs.hash }}`
- CIDv1: `${{ steps.convert-cidv0.outputs.cidv1 }}`
The latest release is always accessible via our alias to the Cloudflare IPFS gateway at [app.uniswap.org](https://app.uniswap.org).
@@ -105,8 +108,8 @@ jobs:
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://${{ steps.convert_cidv0.outputs.cidv1 }}.ipfs.dweb.link/
- https://${{ steps.convert_cidv0.outputs.cidv1 }}.ipfs.cf-ipfs.com/
- [ipfs://${{ steps.upload.outputs.hash }}/](ipfs://${{ steps.upload.outputs.hash }}/)
- https://${{ steps.convert-cidv0.outputs.cidv1 }}.ipfs.dweb.link/
- https://${{ steps.convert-cidv0.outputs.cidv1 }}.ipfs.cf-ipfs.com/
- [ipfs://${{ steps.upload.outputs.hash }}/](ipfs://${{ steps.pinata.outputs.hash }}/)
${{ needs.bump_version.outputs.changelog }}
${{ needs.tag.outputs.changelog }}

View File

@@ -1,4 +1,4 @@
name: End-to-End Tests
name: Test
on:
push:
@@ -7,33 +7,33 @@ on:
pull_request:
branches:
- main
# manual trigger
workflow_dispatch:
jobs:
build:
name: Build
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- run: yarn lint
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- run: yarn prepare
- run: yarn test
cypress-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- run: yarn prepare
- run: yarn build
- uses: actions/upload-artifact@v2
with:
name: build
@@ -45,35 +45,19 @@ jobs:
with:
path: /home/runner/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('node_modules/cypress') }}
- if: steps.cypress-cache.outputs.cache-hit != 'true'
run: yarn cypress install
cypress-tests:
name: Run tests
needs: cypress-build
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
containers: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/ # this should always be a cache hit, from install
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- uses: ./.github/actions/setup
- uses: actions/download-artifact@v2
with:
@@ -85,7 +69,6 @@ jobs:
with:
path: /home/runner/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('node_modules/cypress') }}
- if: steps.cypress-cache.outputs.cache-hit != 'true'
run: yarn cypress install
@@ -98,6 +81,5 @@ jobs:
record: true
parallel: true
env:
CI: false # disables lint checks when building
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,35 +0,0 @@
name: Unit Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
unit-tests:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
registry-url: https://registry.npmjs.org
cache: 'yarn'
- uses: actions/cache@v3
id: install-cache
with:
path: node_modules/
key: ${{ runner.os }}-install-${{ hashFiles('**/yarn.lock') }}
- if: steps.install-cache.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile --ignore-scripts
- run: yarn prepare
- run: yarn test

View File

@@ -1,6 +1,6 @@
describe('Swap', () => {
beforeEach(() => {
cy.visit('/swap')
cy.visit('/swap').get('#swap-currency-input .token-amount-input')
})
it('starts with ETH selected by default', () => {

View File

@@ -6,25 +6,25 @@ describe('Wallet', () => {
})
it('displays account details', () => {
cy.get('#web3-status-connected').contains(TEST_ADDRESS_NEVER_USE_SHORTENED).click()
cy.get('[data-testid=web3-status-connected]').contains(TEST_ADDRESS_NEVER_USE_SHORTENED).click()
})
it('displays account view in wallet modal', () => {
cy.get('#web3-account-identifier-row').contains(TEST_ADDRESS_NEVER_USE_SHORTENED)
cy.get('[data-testid=web3-account-identifier-row]').contains(TEST_ADDRESS_NEVER_USE_SHORTENED)
})
it('changes back to the options grid', () => {
cy.get('[data-cy=wallet-change]').click()
cy.get('[data-cy=option-grid]').should('exist')
cy.contains('Change').click()
cy.get('[data-testid=option-grid]').should('exist')
})
it('selects injected wallet option', () => {
cy.contains('Injected').click()
cy.get('#web3-account-identifier-row').contains(TEST_ADDRESS_NEVER_USE_SHORTENED)
cy.get('[data-testid=web3-account-identifier-row]').contains(TEST_ADDRESS_NEVER_USE_SHORTENED)
})
it('shows connect buttons after disconnect', () => {
cy.get('[data-cy=wallet-disconnect]').click()
cy.get('[data-cy=option-grid]').should('exist')
cy.contains('Disconnect').click()
cy.get('[data-testid=option-grid]').should('exist')
})
})

View File

@@ -17,6 +17,7 @@
"start": "react-scripts start",
"build": "react-scripts build",
"serve": "serve build -l 3000",
"lint": "yarn eslint .",
"test": "react-scripts test --coverage",
"cypress:open": "cypress open --browser chrome --e2e",
"cypress:run": "cypress run --browser chrome --e2e"
@@ -53,26 +54,13 @@
"last 1 safari version"
]
},
"dependencies": {
"@coinbase/wallet-sdk": "^3.2.0",
"devDependencies": {
"@ethersproject/experimental": "^5.4.0",
"@fontsource/ibm-plex-mono": "^4.5.1",
"@fontsource/inter": "^4.5.1",
"@gnosis.pm/safe-apps-web3-react": "^0.6.0",
"@graphql-codegen/cli": "1.21.5",
"@graphql-codegen/typescript": "1.22.3",
"@graphql-codegen/typescript-operations": "^1.18.2",
"@graphql-codegen/typescript-rtk-query": "^1.1.1",
"@lingui/cli": "^3.9.0",
"@lingui/core": "^3.9.0",
"@lingui/macro": "^3.9.0",
"@lingui/react": "^3.9.0",
"@metamask/jazzicon": "^2.0.0",
"@popperjs/core": "^2.4.4",
"@reach/dialog": "^0.10.3",
"@reach/portal": "^0.10.3",
"@react-hook/window-scroll": "^1.3.0",
"@reduxjs/toolkit": "^1.6.1",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/react-hooks": "^7.0.2",
@@ -101,7 +89,35 @@
"@types/wcag-contrast": "^3.0.0",
"@typescript-eslint/eslint-plugin": "^4.1.0",
"@typescript-eslint/parser": "^4.1.0",
"@uniswap/default-token-list": "^3.0.0",
"cypress": "^10.1.0",
"env-cmd": "^10.1.0",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-better-styled-components": "^1.1.2",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^4.0.0",
"eslint-plugin-simple-import-sort": "^7.0.0",
"eslint-plugin-unused-imports": "^2.0.0",
"ms.macro": "^2.0.0",
"react-scripts": "^4.0.3",
"serve": "^11.3.2",
"typechain": "^5.0.0",
"typescript": "^4.4.3"
},
"dependencies": {
"@coinbase/wallet-sdk": "^3.3.0",
"@fontsource/ibm-plex-mono": "^4.5.1",
"@fontsource/inter": "^4.5.1",
"@lingui/core": "^3.9.0",
"@lingui/macro": "^3.9.0",
"@lingui/react": "^3.9.0",
"@metamask/jazzicon": "^2.0.0",
"@popperjs/core": "^2.4.4",
"@reach/dialog": "^0.10.3",
"@reach/portal": "^0.10.3",
"@react-hook/window-scroll": "^1.3.0",
"@reduxjs/toolkit": "^1.6.1",
"@uniswap/governance": "^1.0.2",
"@uniswap/liquidity-staker": "^1.0.2",
"@uniswap/merkle-distributor": "1.0.1",
@@ -132,17 +148,7 @@
"array.prototype.flatmap": "^1.2.4",
"cids": "^1.0.0",
"copy-to-clipboard": "^3.2.0",
"cypress": "^10.1.0",
"d3": "^7.0.0",
"env-cmd": "^10.1.0",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-better-styled-components": "^1.1.2",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^4.0.0",
"eslint-plugin-simple-import-sort": "^7.0.0",
"eslint-plugin-unused-imports": "^2.0.0",
"ethers": "^5.1.4",
"firebase": "^9.1.3",
"fortmatic": "^2.4.0",
@@ -154,7 +160,6 @@
"jotai": "^1.3.7",
"jsbi": "^3.1.4",
"make-plural": "^7.0.0",
"ms.macro": "^2.0.0",
"multicodec": "^3.0.1",
"multihashes": "^4.0.2",
"node-vibrant": "^3.2.1-alpha.1",
@@ -173,7 +178,6 @@
"react-popper": "^2.2.3",
"react-redux": "^7.2.2",
"react-router-dom": "^5.0.0",
"react-scripts": "^4.0.3",
"react-spring": "^8.0.27",
"react-use-gesture": "^6.0.14",
"react-virtualized-auto-sizer": "^1.0.2",
@@ -181,13 +185,9 @@
"rebass": "^4.0.7",
"redux": "^4.1.2",
"redux-localstorage-simple": "^2.3.1",
"sass": "^1.45.1",
"serve": "^11.3.2",
"setimmediate": "^1.0.5",
"styled-components": "^5.3.0",
"tiny-invariant": "^1.2.0",
"typechain": "^5.0.0",
"typescript": "^4.4.3",
"ua-parser-js": "^0.7.28",
"use-count-up": "^2.2.5",
"use-resize-observer": "^8.0.0",
@@ -197,8 +197,5 @@
"workbox-navigation-preload": "^6.1.0",
"workbox-precaching": "^6.1.0",
"workbox-routing": "^6.1.0"
},
"resolutions": {
"@walletconnect/ethereum-provider": "1.7.1"
}
}

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { CheckCircle, Triangle } from 'react-feather'
import styled from 'styled-components/macro'
@@ -35,7 +35,7 @@ const IconWrapper = styled.div<{ pending: boolean; success?: boolean }>`
`
export default function Transaction({ hash }: { hash: string }) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const allTransactions = useAllTransactions()
const tx = allTransactions?.[hash]

View File

@@ -1,12 +1,13 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { Connector } from '@web3-react/types'
import CopyHelper from 'components/AccountDetails/Copy'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useCallback, useContext } from 'react'
import { ExternalLink as LinkIcon } from 'react-feather'
import { useAppDispatch } from 'state/hooks'
import { updateSelectedWallet } from 'state/user/reducer'
import styled, { ThemeContext } from 'styled-components/macro'
import { isMobile } from 'utils/userAgent'
import { ReactComponent as Close } from '../../assets/images/x.svg'
import { coinbaseWallet, injected } from '../../connectors'
@@ -226,10 +227,14 @@ export default function AccountDetails({
ENSName,
openOptions,
}: AccountDetailsProps) {
const { chainId, account, connector } = useActiveWeb3React()
const { chainId, account, connector } = useWeb3React()
const theme = useContext(ThemeContext)
const dispatch = useAppDispatch()
const isMetaMask = !!window.ethereum?.isMetaMask
const isCoinbaseWallet = !!window.ethereum?.isCoinbaseWallet
const isInjectedMobileBrowser = (isMetaMask || isCoinbaseWallet) && isMobile
function formatConnectorName() {
const { ethereum } = window
const isMetaMask = !!(ethereum && ethereum.isMetaMask)
@@ -265,32 +270,43 @@ export default function AccountDetails({
<AccountGroupingRow>
{formatConnectorName()}
<div>
{/* Coinbase Wallet reloads the page right now, which breaks the selectedWallet from being set properly on localStorage */}
{connector !== coinbaseWallet && (
<WalletAction
style={{ fontSize: '.825rem', fontWeight: 400, marginRight: '8px' }}
onClick={() => {
connector.deactivate ? connector.deactivate() : connector.resetState()
dispatch(updateSelectedWallet({ wallet: undefined }))
openOptions()
}}
data-cy="wallet-disconnect"
>
<Trans>Disconnect</Trans>
</WalletAction>
{!isInjectedMobileBrowser && (
<>
<WalletAction
style={{ fontSize: '.825rem', fontWeight: 400, marginRight: '8px' }}
onClick={() => {
if (connector.deactivate) {
connector.deactivate()
// Coinbase Wallet SDK does not emit a disconnect event to the provider,
// which is what web3-react uses to reset state. As a workaround we manually
// reset state.
if (connector === coinbaseWallet) {
connector.resetState()
}
} else {
connector.resetState()
}
dispatch(updateSelectedWallet({ wallet: undefined }))
openOptions()
}}
>
<Trans>Disconnect</Trans>
</WalletAction>
<WalletAction
style={{ fontSize: '.825rem', fontWeight: 400 }}
onClick={() => {
openOptions()
}}
>
<Trans>Change</Trans>
</WalletAction>
</>
)}
<WalletAction
style={{ fontSize: '.825rem', fontWeight: 400 }}
onClick={() => {
openOptions()
}}
data-cy="wallet-change"
>
<Trans>Change</Trans>
</WalletAction>
</div>
</AccountGroupingRow>
<AccountGroupingRow id="web3-account-identifier-row">
<AccountGroupingRow data-testid="web3-account-identifier-row">
<AccountControl>
{ENSName ? (
<>

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
// eslint-disable-next-line no-restricted-imports
import { t } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { ReactNode, useCallback, useContext } from 'react'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -86,7 +86,7 @@ export default function AddressInputPanel({
// triggers whenever the typed value changes
onChange: (value: string) => void
}) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const theme = useContext(ThemeContext)
const { address, loading, name } = useENS(value)

View File

@@ -1,5 +1,5 @@
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { ReactNode, useMemo } from 'react'
const BLOCKED_ADDRESSES: string[] = [
@@ -38,7 +38,7 @@ const BLOCKED_ADDRESSES: string[] = [
]
export default function Blocklist({ children }: { children: ReactNode }) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const blocked: boolean = useMemo(() => Boolean(account && BLOCKED_ADDRESSES.indexOf(account) !== -1), [account])
if (blocked) {
return (

View File

@@ -1,9 +1,9 @@
import { Trans } from '@lingui/macro'
import { Currency, CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import { useWeb3React } from '@web3-react/core'
import { AutoColumn } from 'components/Column'
import { LoadingOpacityContainer, loadingOpacityMixin } from 'components/Loader/styled'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { darken } from 'polished'
import { ReactNode, useCallback, useState } from 'react'
import { Lock } from 'react-feather'
@@ -103,6 +103,7 @@ const LabelRow = styled.div`
const FiatRow = styled(LabelRow)`
justify-content: flex-end;
height: 16px;
`
const Aligner = styled.span`
@@ -201,7 +202,7 @@ export default function CurrencyInputPanel({
...rest
}: CurrencyInputPanelProps) {
const [modalOpen, setModalOpen] = useState(false)
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const selectedCurrencyBalance = useCurrencyBalance(account ?? undefined, currency ?? undefined)
const theme = useTheme()
@@ -270,14 +271,15 @@ export default function CurrencyInputPanel({
</Aligner>
</CurrencySelect>
</InputRow>
{!hideInput && !hideBalance && currency && (
<FiatRow>
<FiatRow>
{!hideInput && !hideBalance && currency && (
<RowBetween>
<LoadingOpacityContainer $loading={loading}>
<FiatValue fiatValue={fiatValue} priceImpact={priceImpact} />
</LoadingOpacityContainer>
{account ? (
<RowFixed style={{ height: '17px' }}>
<RowFixed>
<ThemedText.Body
onClick={onMax}
color={theme.text3}
@@ -303,8 +305,8 @@ export default function CurrencyInputPanel({
<span />
)}
</RowBetween>
</FiatRow>
)}
)}
</FiatRow>
</Container>
{onCurrencySelect && (
<CurrencySearchModal

View File

@@ -1,6 +1,6 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { AlertOctagon } from 'react-feather'
import styled from 'styled-components/macro'
import { ExternalLink } from 'theme'
@@ -42,7 +42,7 @@ function Wrapper({ children }: { children: React.ReactNode }) {
* Shows a downtime warning for the network if it's relevant
*/
export default function DowntimeWarning() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
if (!isL2ChainId(chainId)) {
return null
}

View File

@@ -1,12 +1,12 @@
import { Trans } from '@lingui/macro'
import { Currency } from '@uniswap/sdk-core'
import { FeeAmount } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import { sendEvent } from 'components/analytics'
import { ButtonGray } from 'components/Button'
import Card from 'components/Card'
import { AutoColumn } from 'components/Column'
import { RowBetween } from 'components/Row'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useFeeTierDistribution } from 'hooks/useFeeTierDistribution'
import { PoolState, usePools } from 'hooks/usePools'
import usePrevious from 'hooks/usePrevious'
@@ -59,7 +59,7 @@ export default function FeeSelector({
currencyA?: Currency | undefined
currencyB?: Currency | undefined
}) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const { isLoading, isError, largestUsageFeeTier, distributions } = useFeeTierDistribution(currencyA, currencyB)

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { CHAIN_INFO, L2ChainInfo } from 'constants/chainInfo'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { AlertOctagon } from 'react-feather'
import styled from 'styled-components/macro'
import { ExternalLink, MEDIA_WIDTHS } from 'theme'
@@ -45,7 +45,7 @@ const Wrapper = styled.div`
`
export function ChainConnectivityWarning() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const info = CHAIN_INFO[chainId ?? SupportedChainId.MAINNET]
const label = info?.label

View File

@@ -1,8 +1,8 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { getWalletForConnector } from 'connectors'
import { CHAIN_INFO } from 'constants/chainInfo'
import { CHAIN_IDS_TO_NAMES, SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useOnClickOutside } from 'hooks/useOnClickOutside'
import useParsedQueryString from 'hooks/useParsedQueryString'
import usePrevious from 'hooks/usePrevious'
@@ -185,7 +185,7 @@ function Row({
targetChain: SupportedChainId
onSelectChain: (targetChain: number) => void
}) {
const { provider, chainId } = useActiveWeb3React()
const { provider, chainId } = useWeb3React()
if (!provider || !chainId) {
return null
}
@@ -267,10 +267,11 @@ const NETWORK_SELECTOR_CHAINS = [
export default function NetworkSelector() {
const dispatch = useAppDispatch()
const { chainId, provider, connector } = useActiveWeb3React()
const { chainId, provider, connector } = useWeb3React()
const previousChainId = usePrevious(chainId)
const parsedQs = useParsedQueryString()
const { urlChain, urlChainId } = getParsedChainId(parsedQs)
const prevChainId = usePrevious(chainId)
const previousUrlChainId = usePrevious(urlChainId)
const node = useRef<HTMLDivElement>()
const open = useModalOpen(ApplicationModal.NETWORK_SELECTOR)
const toggle = useToggleModal(ApplicationModal.NETWORK_SELECTOR)
@@ -289,43 +290,35 @@ export default function NetworkSelector() {
try {
dispatch(updateWalletError({ wallet, error: undefined }))
await switchChain(connector, targetChain)
if (!skipToggle) {
toggle()
}
history.replace({
search: replaceURLParam(history.location.search, 'chain', getChainNameFromId(targetChain)),
})
} catch (error) {
console.error('Failed to switch networks', error)
// we want app network <-> chainId param to be in sync, so if user changes the network by changing the URL
// but the request fails, revert the URL back to current chainId
if (chainId) {
history.replace({ search: replaceURLParam(history.location.search, 'chain', getChainNameFromId(chainId)) })
}
if (!skipToggle) {
toggle()
}
dispatch(updateWalletError({ wallet, error: error.message }))
dispatch(addPopup({ content: { failedSwitchNetwork: targetChain }, key: `failed-network-switch` }))
}
if (!skipToggle) {
toggle()
}
},
[connector, toggle, dispatch, history, chainId]
[connector, toggle, dispatch]
)
useEffect(() => {
if (!chainId || !prevChainId) return
if (!chainId || !previousChainId) return
// when network change originates from wallet or dropdown selector, just update URL
if (chainId !== prevChainId) {
if (chainId !== previousChainId && chainId !== urlChainId) {
history.replace({ search: replaceURLParam(history.location.search, 'chain', getChainNameFromId(chainId)) })
// otherwise assume network change originates from URL
} else if (urlChainId && urlChainId !== chainId) {
onSelectChain(urlChainId, true)
} else if (urlChainId && urlChainId !== previousUrlChainId && urlChainId !== chainId) {
onSelectChain(urlChainId, true).catch(() => {
// we want app network <-> chainId param to be in sync, so if user changes the network by changing the URL
// but the request fails, revert the URL back to current chainId
history.replace({ search: replaceURLParam(history.location.search, 'chain', getChainNameFromId(chainId)) })
})
}
}, [chainId, urlChainId, prevChainId, onSelectChain, history])
}, [chainId, urlChainId, previousChainId, previousUrlChainId, onSelectChain, history])
// set chain parameter on initial load if not there
useEffect(() => {

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { RowFixed } from 'components/Row'
import { CHAIN_INFO } from 'constants/chainInfo'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useCurrentBlockTimestamp from 'hooks/useCurrentBlockTimestamp'
import useGasPrice from 'hooks/useGasPrice'
import useMachineTimeMs from 'hooks/useMachineTime'
@@ -100,7 +100,7 @@ const DEFAULT_MS_BEFORE_WARNING = ms`10m`
const NETWORK_HEALTH_CHECK_MS = ms`10s`
export default function Polling() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const blockNumber = useBlockNumber()
const [isMounting, setIsMounting] = useState(false)
const [isHover, setIsHover] = useState(false)

View File

@@ -1,8 +1,8 @@
import { Trans } from '@lingui/macro'
import useScrollPosition from '@react-hook/window-scroll'
import { useWeb3React } from '@web3-react/core'
import { CHAIN_INFO } from 'constants/chainInfo'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useTheme from 'hooks/useTheme'
import { darken } from 'polished'
import { NavLink } from 'react-router-dom'
@@ -247,7 +247,7 @@ const StyledExternalLink = styled(ExternalLink).attrs({
`
export default function Header() {
const { account, chainId, connector } = useActiveWeb3React()
const { account, chainId, connector } = useWeb3React()
const chainAllowed = chainId && isChainAllowed(connector, chainId)

View File

@@ -1,5 +1,5 @@
import jazzicon from '@metamask/jazzicon'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import useENSAvatar from 'hooks/useENSAvatar'
import { useLayoutEffect, useMemo, useRef, useState } from 'react'
import styled from 'styled-components/macro'
@@ -19,7 +19,7 @@ const StyledAvatar = styled.img`
`
export default function Identicon() {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const { avatar } = useENSAvatar(account ?? undefined)
const [fetchable, setFetchable] = useState(true)

View File

@@ -1,10 +1,10 @@
// eslint-disable-next-line no-restricted-imports
import { t, Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { PrivacyPolicyModal } from 'components/PrivacyPolicy'
import { L2_CHAIN_IDS } from 'constants/chains'
import { LOCALE_LABEL, SUPPORTED_LOCALES, SupportedLocale } from 'constants/locales'
import { useActiveLocale } from 'hooks/useActiveLocale'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useLocationLinkProps } from 'hooks/useLocationLinkProps'
import React, { useEffect, useRef, useState } from 'react'
import {
@@ -207,7 +207,7 @@ function LanguageMenu({ close }: { close: () => void }) {
}
export default function Menu() {
const { account, chainId } = useActiveWeb3React()
const { account, chainId } = useWeb3React()
const node = useRef<HTMLDivElement>()
const open = useModalOpen(ApplicationModal.MENU)

View File

@@ -1,5 +1,5 @@
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useContext } from 'react'
import { ArrowUpCircle } from 'react-feather'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -50,7 +50,7 @@ export function SubmittedView({
hash: string | undefined
}) {
const theme = useContext(ThemeContext)
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return (
<ConfirmOrLoadingWrapper>

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { CHAIN_INFO } from 'constants/chainInfo'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { ArrowUpRight } from 'react-feather'
import { useDarkModeManager } from 'state/user/hooks'
import styled from 'styled-components/macro'
@@ -140,7 +140,7 @@ function shouldShowAlert(chainId: number | undefined): chainId is NetworkAlertCh
}
export function NetworkAlert() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const [darkMode] = useDarkModeManager()
if (!shouldShowAlert(chainId)) {

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { sendEvent } from 'components/analytics'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useCallback, useEffect } from 'react'
import { Heart, X } from 'react-feather'
import styled, { keyframes } from 'styled-components/macro'
@@ -55,7 +55,7 @@ const UniToken = styled.img`
`
export default function ClaimPopup() {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
// dont store these in persisted state yet
const showClaimPopup: boolean = useShowClaimPopup()

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useContext } from 'react'
import { AlertCircle, CheckCircle } from 'react-feather'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -16,7 +16,7 @@ const RowNoFlex = styled(AutoRow)`
`
export default function TransactionPopup({ hash }: { hash: string }) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const tx = useTransaction(hash)
const theme = useContext(ThemeContext)

View File

@@ -1,5 +1,5 @@
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import styled from 'styled-components/macro'
import { MEDIA_WIDTHS } from 'theme'
@@ -63,7 +63,7 @@ export default function Popups() {
const urlWarningActive = useURLWarningVisible()
// need extra padding if network is not L1 Ethereum
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const isNotOnMainnet = Boolean(chainId && chainId !== SupportedChainId.MAINNET)
return (

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import JSBI from 'jsbi'
import { transparentize } from 'polished'
import { useState } from 'react'
@@ -42,7 +42,7 @@ interface PositionCardProps {
}
export default function V2PositionCard({ pair, border, stakedBalance }: PositionCardProps) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const currency0 = unwrappedToken(pair.token0)
const currency1 = unwrappedToken(pair.token1)

View File

@@ -1,7 +1,7 @@
import { Trans } from '@lingui/macro'
import { CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import JSBI from 'jsbi'
import { transparentize } from 'polished'
import { useState } from 'react'
@@ -46,7 +46,7 @@ interface PositionCardProps {
}
export function MinimalPositionCard({ pair, showUnwrapped = false, border }: PositionCardProps) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const currency0 = showUnwrapped ? pair.token0 : unwrappedToken(pair.token0)
const currency1 = showUnwrapped ? pair.token1 : unwrappedToken(pair.token1)
@@ -158,7 +158,7 @@ export function MinimalPositionCard({ pair, showUnwrapped = false, border }: Pos
}
export default function FullPositionCard({ pair, border, stakedBalance }: PositionCardProps) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const currency0 = unwrappedToken(pair.token0)
const currency1 = unwrappedToken(pair.token1)

View File

@@ -22,20 +22,21 @@ jest.mock(
`CurrencyLogo currency=${currency.symbol}`
)
jest.mock('hooks/useActiveWeb3React', () => {
jest.mock('@web3-react/core', () => {
const web3React = jest.requireActual('@web3-react/core')
return {
__esModule: true,
default: () => ({
useWeb3React: () => ({
account: '123',
active: true,
isActive: true,
}),
...web3React,
}
})
jest.mock('../../../state/wallet/hooks', () => {
return {
useCurrencyBalance: (currency: Currency) => {
return mockCurrencyAmt[(currency as mockToken).address]
return mockCurrencyAmt[(currency as mockToken)?.address]
},
}
})

View File

@@ -1,8 +1,8 @@
import { Trans } from '@lingui/macro'
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { LightGreyCard } from 'components/Card'
import QuestionHelper from 'components/QuestionHelper'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useTheme from 'hooks/useTheme'
import { CSSProperties, MutableRefObject, useCallback, useMemo } from 'react'
import { FixedSizeList } from 'react-window'
@@ -114,7 +114,7 @@ function CurrencyRow({
style: CSSProperties
showCurrencyAmount?: boolean
}) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const key = currencyKey(currency)
const selectedTokenList = useCombinedActiveList()
const isOnSelectedList = isTokenOnList(selectedTokenList, currency.isToken ? currency : undefined)

View File

@@ -1,8 +1,8 @@
// eslint-disable-next-line no-restricted-imports
import { t, Trans } from '@lingui/macro'
import { Currency, Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { sendEvent } from 'components/analytics'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useDebounce from 'hooks/useDebounce'
import { useOnClickOutside } from 'hooks/useOnClickOutside'
import useTheme from 'hooks/useTheme'
@@ -71,7 +71,7 @@ export function CurrencySearch({
showImportView,
setImportToken,
}: CurrencySearchProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const theme = useTheme()
const [tokenLoaderTimerElapsed, setTokenLoaderTimerElapsed] = useState(false)

View File

@@ -1,10 +1,10 @@
// eslint-disable-next-line no-restricted-imports
import { t, Trans } from '@lingui/macro'
import { TokenList } from '@uniswap/token-lists'
import { useWeb3React } from '@web3-react/core'
import { sendEvent } from 'components/analytics'
import Card from 'components/Card'
import { UNSUPPORTED_LIST_URLS } from 'constants/lists'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useListColor } from 'hooks/useColor'
import parseENSAddress from 'lib/utils/parseENSAddress'
import uriToHttp from 'lib/utils/uriToHttp'
@@ -95,7 +95,7 @@ function listUrlRowHTMLId(listUrl: string) {
}
const ListRow = memo(function ListRow({ listUrl }: { listUrl: string }) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const listsByUrl = useAppSelector((state) => state.lists.byUrl)
const dispatch = useAppDispatch()
const { current: list, pendingUpdate: pending } = listsByUrl[listUrl]
@@ -242,7 +242,7 @@ export function ManageLists({
setImportList: (list: TokenList) => void
setListUrl: (url: string) => void
}) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const theme = useTheme()
const [listUrlInput, setListUrlInput] = useState<string>('')

View File

@@ -1,11 +1,11 @@
import { Trans } from '@lingui/macro'
import { Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import Card from 'components/Card'
import Column from 'components/Column'
import CurrencyLogo from 'components/CurrencyLogo'
import Row, { RowBetween, RowFixed } from 'components/Row'
import { useToken } from 'hooks/Tokens'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { RefObject, useCallback, useMemo, useRef, useState } from 'react'
import { useRemoveUserAddedToken, useUserAddedTokens } from 'state/user/hooks'
import styled from 'styled-components/macro'
@@ -44,7 +44,7 @@ export default function ManageTokens({
setModalView: (view: CurrencyModalView) => void
setImportToken: (token: Token) => void
}) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const [searchQuery, setSearchQuery] = useState<string>('')
const theme = useTheme()

View File

@@ -1,12 +1,12 @@
import { Trans } from '@lingui/macro'
import { Token } from '@uniswap/sdk-core'
import { TokenList } from '@uniswap/token-lists'
import { useWeb3React } from '@web3-react/core'
import Card from 'components/Card'
import { AutoColumn } from 'components/Column'
import CurrencyLogo from 'components/CurrencyLogo'
import ListLogo from 'components/ListLogo'
import { RowFixed } from 'components/Row'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { transparentize } from 'polished'
import { AlertCircle } from 'react-feather'
import styled, { useTheme } from 'styled-components/macro'
@@ -33,7 +33,7 @@ interface TokenImportCardProps {
}
const TokenImportCard = ({ list, token }: TokenImportCardProps) => {
const theme = useTheme()
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return (
<Card backgroundColor={theme.bg2} padding="2rem">
<AutoColumn gap="10px" justify="center">

View File

@@ -1,8 +1,8 @@
// eslint-disable-next-line no-restricted-imports
import { t, Trans } from '@lingui/macro'
import { Percent } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { sendEvent } from 'components/analytics'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { AUTO_ROUTER_SUPPORTED_CHAINS } from 'lib/hooks/routing/clientSideSmartOrderRouter'
import { useContext, useRef, useState } from 'react'
import { Settings, X } from 'react-feather'
@@ -119,7 +119,7 @@ const ModalContentWrapper = styled.div`
`
export default function SettingsTab({ placeholderSlippage }: { placeholderSlippage: Percent }) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const node = useRef<HTMLDivElement>()
const open = useModalOpen(ApplicationModal.SETTINGS)

View File

@@ -1,7 +1,7 @@
import { useWeb3React } from '@web3-react/core'
import AddressClaimModal from 'components/claim/AddressClaimModal'
import ConnectedAccountBlocked from 'components/ConnectedAccountBlocked'
import useAccountRiskCheck from 'hooks/useAccountRiskCheck'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useModalOpen, useToggleModal } from 'state/application/hooks'
import { ApplicationModal } from 'state/application/reducer'
@@ -10,7 +10,7 @@ export default function TopLevelModals() {
const addressClaimToggle = useToggleModal(ApplicationModal.ADDRESS_CLAIM)
const blockedAccountModalOpen = useModalOpen(ApplicationModal.BLOCKED_ACCOUNT)
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
useAccountRiskCheck(account)
const open = Boolean(blockedAccountModalOpen && account)

View File

@@ -1,9 +1,9 @@
import { Trans } from '@lingui/macro'
import { Currency } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import Badge from 'components/Badge'
import { CHAIN_INFO } from 'constants/chainInfo'
import { L2_CHAIN_IDS, SupportedL2ChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useCurrencyLogoURIs from 'lib/hooks/useCurrencyLogoURIs'
import { ReactNode, useCallback, useContext, useState } from 'react'
import { AlertCircle, AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather'
@@ -96,7 +96,7 @@ function TransactionSubmittedContent({
}) {
const theme = useContext(ThemeContext)
const { connector } = useActiveWeb3React()
const { connector } = useWeb3React()
const token = currencyToAdd?.wrapped
const logoURL = useCurrencyLogoURIs(token)[0]
@@ -342,7 +342,7 @@ export default function TransactionConfirmationModal({
content,
currencyToAdd,
}: ConfirmationModalProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const isL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId))

View File

@@ -1,8 +1,8 @@
import { Trans } from '@lingui/macro'
import { Percent } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { L2_CHAIN_IDS } from 'constants/chains'
import { DEFAULT_DEADLINE_FROM_NOW } from 'constants/misc'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import ms from 'ms.macro'
import { darken } from 'polished'
import { useContext, useState } from 'react'
@@ -97,7 +97,7 @@ interface TransactionSettingsProps {
const THREE_DAYS_IN_SECONDS = ms`3 days` / 1000
export default function TransactionSettings({ placeholderSlippage }: TransactionSettingsProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const theme = useContext(ThemeContext)
const userSlippageTolerance = useUserSlippageTolerance()

View File

@@ -3,8 +3,8 @@ import styled from 'styled-components/macro'
import { ExternalLink } from '../../theme'
const InfoCard = styled.button<{ active?: boolean }>`
background-color: ${({ theme, active }) => (active ? theme.bg3 : theme.bg2)};
const InfoCard = styled.button<{ isActive?: boolean }>`
background-color: ${({ theme, isActive }) => (isActive ? theme.bg3 : theme.bg2)};
padding: 1rem;
outline: none;
border: 1px solid;
@@ -13,7 +13,7 @@ const InfoCard = styled.button<{ active?: boolean }>`
&:focus {
box-shadow: 0 0 0 1px ${({ theme }) => theme.primary1};
}
border-color: ${({ theme, active }) => (active ? 'transparent' : theme.bg3)};
border-color: ${({ theme, isActive }) => (isActive ? 'transparent' : theme.bg3)};
`
const OptionCard = styled(InfoCard as any)`
@@ -97,7 +97,7 @@ export default function Option({
header,
subheader = null,
icon,
active = false,
isActive = false,
id,
}: {
link?: string | null
@@ -108,14 +108,20 @@ export default function Option({
header: React.ReactNode
subheader: React.ReactNode | null
icon: string
active?: boolean
isActive?: boolean
id: string
}) {
const content = (
<OptionCardClickable id={id} onClick={onClick} clickable={clickable && !active} active={active}>
<OptionCardClickable
id={id}
onClick={onClick}
clickable={clickable && !isActive}
active={isActive}
data-testid="wallet-modal-option"
>
<OptionCardLeft>
<HeaderText color={color}>
{active ? (
{isActive ? (
<CircleWrapper>
<GreenCircle>
<div />

View File

@@ -0,0 +1,87 @@
import { ApplicationModal } from 'state/application/reducer'
import { render, screen } from '../../test-utils'
import WalletModal from './index'
beforeEach(() => {
delete global.window.ethereum
})
afterAll(() => {
delete global.window.ethereum
})
const UserAgentMock = jest.requireMock('utils/userAgent')
jest.mock('utils/userAgent', () => ({
isMobile: false,
}))
jest.mock('.../../state/application/hooks', () => {
return {
useModalOpen: (_modal: ApplicationModal) => true,
useWalletModalToggle: () => {
return
},
}
})
jest.mock('@web3-react/core', () => {
const web3React = jest.requireActual('@web3-react/core')
return {
useWeb3React: () => ({
account: undefined,
isActive: false,
isActivating: false,
connector: undefined,
}),
...web3React,
}
})
it('loads Wallet Modal on desktop', async () => {
render(<WalletModal pendingTransactions={[]} confirmedTransactions={[]} />)
expect(screen.getByText('Install MetaMask')).toBeInTheDocument()
expect(screen.getByText('Coinbase Wallet')).toBeInTheDocument()
expect(screen.getByText('WalletConnect')).toBeInTheDocument()
expect(screen.getByText('Fortmatic')).toBeInTheDocument()
expect(screen.getAllByTestId('wallet-modal-option')).toHaveLength(4)
})
it('loads Wallet Modal on desktop with MetaMask installed', async () => {
global.window.ethereum = { isMetaMask: true }
render(<WalletModal pendingTransactions={[]} confirmedTransactions={[]} />)
expect(screen.getByText('MetaMask')).toBeInTheDocument()
expect(screen.getByText('Coinbase Wallet')).toBeInTheDocument()
expect(screen.getByText('WalletConnect')).toBeInTheDocument()
expect(screen.getByText('Fortmatic')).toBeInTheDocument()
expect(screen.getAllByTestId('wallet-modal-option')).toHaveLength(4)
})
it('loads Wallet Modal on mobile', async () => {
UserAgentMock.isMobile = true
render(<WalletModal pendingTransactions={[]} confirmedTransactions={[]} />)
expect(screen.getByText('Open in Coinbase Wallet')).toBeInTheDocument()
expect(screen.getByText('WalletConnect')).toBeInTheDocument()
expect(screen.getByText('Fortmatic')).toBeInTheDocument()
expect(screen.getAllByTestId('wallet-modal-option')).toHaveLength(3)
})
it('loads Wallet Modal on MetaMask browser', async () => {
UserAgentMock.isMobile = true
global.window.ethereum = { isMetaMask: true }
render(<WalletModal pendingTransactions={[]} confirmedTransactions={[]} />)
expect(screen.getByText('MetaMask')).toBeInTheDocument()
expect(screen.getAllByTestId('wallet-modal-option')).toHaveLength(1)
})
it('loads Wallet Modal on Coinbase Wallet browser', async () => {
UserAgentMock.isMobile = true
global.window.ethereum = { isCoinbaseWallet: true }
render(<WalletModal pendingTransactions={[]} confirmedTransactions={[]} />)
expect(screen.getByText('Coinbase Wallet')).toBeInTheDocument()
expect(screen.getAllByTestId('wallet-modal-option')).toHaveLength(1)
})

View File

@@ -184,14 +184,14 @@ export default function WalletModal({
// get wallets user can switch too, depending on device/browser
function getOptions() {
const isMetamask = !!window.ethereum?.isMetaMask
const isMetaMask = !!window.ethereum?.isMetaMask
const isTally = !!window.ethereum?.isTally
const isCoinbaseWallet = !!window.ethereum?.isCoinbaseWallet
return Object.keys(SUPPORTED_WALLETS).map((key) => {
const option = SUPPORTED_WALLETS[key]
const isActive = option.connector === connector
const optionProps = {
active: isActive,
isActive: option.connector === connector,
id: `connect-${key}`,
link: option.href,
header: option.name,
@@ -202,12 +202,16 @@ export default function WalletModal({
// check for mobile options
if (isMobile) {
if (!window.web3 && !window.ethereum && option.mobile) {
if (
(!window.web3 && !window.ethereum && option.mobile) ||
(isMetaMask && option.name === 'MetaMask') ||
(isCoinbaseWallet && option.name === 'Coinbase Wallet')
) {
return (
<Option
{...optionProps}
onClick={() => {
if (!isActive && !option.href && !!option.connector) {
if (!option.href && !!option.connector) {
tryActivation(option.connector)
}
}}
@@ -228,7 +232,7 @@ export default function WalletModal({
id={`connect-${key}`}
key={key}
color={'#E8831D'}
header={<Trans>Install Metamask</Trans>}
header={<Trans>Install MetaMask</Trans>}
subheader={null}
link={'https://metamask.io/'}
icon={MetamaskIcon}
@@ -239,11 +243,11 @@ export default function WalletModal({
}
}
// don't return metamask if injected provider isn't metamask
else if (option.name === 'MetaMask' && !isMetamask) {
else if (option.name === 'MetaMask' && !isMetaMask) {
return null
}
// likewise for generic
else if (option.name === 'Injected' && isMetamask) {
else if (option.name === 'Injected' && isMetaMask) {
return null
} else if (option.name === 'Injected' && isTally) {
return (
@@ -257,7 +261,7 @@ export default function WalletModal({
}}
color={'#E8831D'}
header={<Trans>Tally</Trans>}
active={option.connector === connector}
isActive={option.connector === connector}
subheader={null}
link={null}
icon={TallyIcon}
@@ -334,7 +338,7 @@ export default function WalletModal({
tryActivation={tryActivation}
/>
)}
{walletView !== WALLET_VIEWS.PENDING && <OptionGrid data-cy="option-grid">{getOptions()}</OptionGrid>}
{walletView !== WALLET_VIEWS.PENDING && <OptionGrid data-testid="option-grid">{getOptions()}</OptionGrid>}
{!pendingError && (
<LightCard>
<AutoRow style={{ flexWrap: 'nowrap' }}>

View File

@@ -181,7 +181,11 @@ function Web3StatusInner() {
)
} else if (account) {
return (
<Web3StatusConnected id="web3-status-connected" onClick={toggleWalletModal} pending={hasPendingTransactions}>
<Web3StatusConnected
data-testid="web3-status-connected"
onClick={toggleWalletModal}
pending={hasPendingTransactions}
>
{hasPendingTransactions ? (
<RowBetween>
<Text>
@@ -200,7 +204,7 @@ function Web3StatusInner() {
)
} else {
return (
<Web3StatusConnect id="connect-wallet" onClick={toggleWalletModal} faded={!account}>
<Web3StatusConnect onClick={toggleWalletModal} faded={!account}>
<Text>
<Trans>Connect Wallet</Trans>
</Text>

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useEffect } from 'react'
import { UaEventOptions } from 'react-ga4/types/ga4'
import { RouteComponentProps } from 'react-router-dom'
@@ -71,7 +71,7 @@ export function useAnalyticsReporter({ pathname, search }: RouteComponentProps['
getCLS(reportWebVitals)
}, [])
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
useEffect(() => {
// cd1 - custom dimension 1 - chainId
googleAnalytics.set({ cd1: chainId ?? 0 })

View File

@@ -1,7 +1,7 @@
import { isAddress } from '@ethersproject/address'
import { Trans } from '@lingui/macro'
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useState } from 'react'
import { Text } from 'rebass'
import styled from 'styled-components/macro'
@@ -46,7 +46,7 @@ const ConfirmedIcon = styled(ColumnCenter)`
`
export default function AddressClaimModal({ isOpen, onDismiss }: { isOpen: boolean; onDismiss: () => void }) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
// state for smart contract input
const [typed, setTyped] = useState('')

View File

@@ -1,7 +1,7 @@
import { isAddress } from '@ethersproject/address'
import { Trans } from '@lingui/macro'
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import JSBI from 'jsbi'
import { useEffect, useState } from 'react'
import { Text } from 'rebass'
@@ -51,7 +51,7 @@ export default function ClaimModal() {
const isOpen = useModalOpen(ApplicationModal.SELF_CLAIM)
const toggleClaimModal = useToggleSelfClaimModal()
const { account, chainId } = useActiveWeb3React()
const { account, chainId } = useWeb3React()
// used for UI loading states
const [attempting, setAttempting] = useState<boolean>(false)

View File

@@ -1,7 +1,7 @@
import { TransactionResponse } from '@ethersproject/providers'
import { Trans } from '@lingui/macro'
import StakingRewardsJson from '@uniswap/liquidity-staker/build/StakingRewards.json'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { ReactNode, useState } from 'react'
import styled from 'styled-components/macro'
@@ -34,7 +34,7 @@ interface StakingModalProps {
}
export default function ClaimRewardModal({ isOpen, onDismiss, stakingInfo }: StakingModalProps) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
// monitor call to help UI loading state
const addTransaction = useTransactionAdder()

View File

@@ -3,7 +3,7 @@ import { Trans } from '@lingui/macro'
import StakingRewardsJson from '@uniswap/liquidity-staker/build/StakingRewards.json'
import { CurrencyAmount, Token } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useV2LiquidityTokenPermit } from 'hooks/useV2LiquidityTokenPermit'
import { useCallback, useState } from 'react'
import styled from 'styled-components/macro'
@@ -53,7 +53,7 @@ interface StakingModalProps {
}
export default function StakingModal({ isOpen, onDismiss, stakingInfo, userLiquidityUnstaked }: StakingModalProps) {
const { provider } = useActiveWeb3React()
const { provider } = useWeb3React()
// track and parse user input
const [typedValue, setTypedValue] = useState('')

View File

@@ -1,7 +1,7 @@
import { TransactionResponse } from '@ethersproject/providers'
import { Trans } from '@lingui/macro'
import StakingRewardsJson from '@uniswap/liquidity-staker/build/StakingRewards.json'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { ReactNode, useState } from 'react'
import styled from 'styled-components/macro'
@@ -35,7 +35,7 @@ interface StakingModalProps {
}
export default function UnstakingModal({ isOpen, onDismiss, stakingInfo }: StakingModalProps) {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
// monitor call to help UI loading state
const addTransaction = useTransactionAdder()

View File

@@ -1,9 +1,9 @@
import { Trans } from '@lingui/macro'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import Card from 'components/Card'
import { LoadingRows } from 'components/Loader/styled'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { useContext, useMemo } from 'react'
import { InterfaceTrade } from 'state/routing/types'
@@ -53,7 +53,7 @@ export function AdvancedSwapDetails({
hideInfoTooltips = false,
}: AdvancedSwapDetailsProps) {
const theme = useContext(ThemeContext)
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const nativeCurrency = useNativeCurrency()
const { expectedOutputAmount, priceImpact } = useMemo(() => {

View File

@@ -1,5 +1,6 @@
import { Trans } from '@lingui/macro'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import AnimatedDropdown from 'components/AnimatedDropdown'
import Card, { OutlineCard } from 'components/Card'
import { AutoColumn } from 'components/Column'
@@ -7,7 +8,6 @@ import { LoadingOpacityContainer } from 'components/Loader/styled'
import Row, { RowBetween, RowFixed } from 'components/Row'
import { MouseoverTooltipContent } from 'components/Tooltip'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { darken } from 'polished'
import { useState } from 'react'
import { ChevronDown, Info } from 'react-feather'
@@ -126,7 +126,7 @@ export default function SwapDetailsDropdown({
allowedSlippage,
}: SwapDetailsInlineProps) {
const theme = useTheme()
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const [showDetails, setShowDetails] = useState(false)
return (

View File

@@ -3,13 +3,13 @@ import { Protocol } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { Pair } from '@uniswap/v2-sdk'
import { FeeAmount } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import AnimatedDropdown from 'components/AnimatedDropdown'
import { AutoColumn } from 'components/Column'
import { LoadingRows } from 'components/Loader/styled'
import RoutingDiagram from 'components/RoutingDiagram/RoutingDiagram'
import { AutoRow, RowBetween } from 'components/Row'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useAutoRouterSupported from 'hooks/useAutoRouterSupported'
import { memo, useState } from 'react'
import { Plus } from 'react-feather'
@@ -50,7 +50,7 @@ export default memo(function SwapRoute({ trade, syncing, fixedOpen = false, ...r
const autoRouterSupported = useAutoRouterSupported()
const routes = getTokenPath(trade)
const [open, setOpen] = useState(false)
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const [darkMode] = useDarkModeManager()

View File

@@ -1,12 +1,12 @@
import { Trans } from '@lingui/macro'
import { Currency } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { ButtonEmpty } from 'components/Button'
import Card, { OutlineCard } from 'components/Card'
import { AutoColumn } from 'components/Column'
import CurrencyLogo from 'components/CurrencyLogo'
import Modal from 'components/Modal'
import { AutoRow, RowBetween } from 'components/Row'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useState } from 'react'
import styled from 'styled-components/macro'
import { CloseIcon, ExternalLink, ThemedText, Z_INDEX } from 'theme'
@@ -52,7 +52,7 @@ export default function UnsupportedCurrencyFooter({
show: boolean
currencies: (Currency | undefined | null)[]
}) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const [showDetails, setShowDetails] = useState(false)
const tokens =

View File

@@ -1,6 +1,6 @@
import { isAddress } from '@ethersproject/address'
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { ReactNode, useState } from 'react'
import { X } from 'react-feather'
import styled from 'styled-components/macro'
@@ -42,7 +42,7 @@ interface VoteModalProps {
}
export default function DelegateModal({ isOpen, onDismiss, title }: VoteModalProps) {
const { account, chainId } = useActiveWeb3React()
const { account, chainId } = useWeb3React()
// state for delegate input
const [usingDelegate, setUsingDelegate] = useState(false)

View File

@@ -1,5 +1,5 @@
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useContext, useState } from 'react'
import { ArrowUpCircle, X } from 'react-feather'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -41,7 +41,7 @@ interface ExecuteModalProps {
}
export default function ExecuteModal({ isOpen, onDismiss, proposalId }: ExecuteModalProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const executeCallback = useExecuteCallback()
// monitor call to help UI loading state

View File

@@ -1,6 +1,6 @@
import { Trans } from '@lingui/macro'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import styled from 'styled-components/macro'
import { ThemedText } from 'theme'
@@ -37,7 +37,7 @@ const EmptyState = ({ HeaderContent, SubHeaderContent }: EmptyStateProps) => (
)
export default function ProposalEmptyState() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
if (chainId && chainId !== SupportedChainId.MAINNET) {
return (
<EmptyState

View File

@@ -1,5 +1,5 @@
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useContext, useState } from 'react'
import { ArrowUpCircle, X } from 'react-feather'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -41,7 +41,7 @@ interface QueueModalProps {
}
export default function QueueModal({ isOpen, onDismiss, proposalId }: QueueModalProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const queueCallback = useQueueCallback()
// monitor call to help UI loading state

View File

@@ -1,5 +1,5 @@
import { Trans } from '@lingui/macro'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useContext, useState } from 'react'
import { ArrowUpCircle, X } from 'react-feather'
import styled, { ThemeContext } from 'styled-components/macro'
@@ -44,7 +44,7 @@ interface VoteModalProps {
}
export default function VoteModal({ isOpen, onDismiss, proposalId, voteOption }: VoteModalProps) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const voteCallback = useVoteCallback()
const { votes: availableVotes } = useUserVotes()

View File

@@ -114,6 +114,7 @@ export const [coinbaseWallet, coinbaseWalletHooks] = initializeConnector<Coinbas
url: INFURA_NETWORK_URLS[SupportedChainId.MAINNET],
appName: 'Uniswap',
appLogoUrl: UNISWAP_LOGO_URL,
reloadOnDisconnect: false,
},
onError,
})

View File

@@ -1,7 +1,7 @@
import { Currency, Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { CHAIN_INFO } from 'constants/chainInfo'
import { L2_CHAIN_IDS, SupportedChainId, SupportedL2ChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useCurrencyFromMap, useTokenFromMapOrNetwork } from 'lib/hooks/useCurrency'
import { getTokenFilter } from 'lib/hooks/useTokenList/filtering'
import { useMemo } from 'react'
@@ -13,7 +13,7 @@ import { TokenAddressMap, useUnsupportedTokenList } from './../state/lists/hooks
// reduce token map into standard address <-> Token mapping, optionally include user added tokens
function useTokensFromMap(tokenMap: TokenAddressMap, includeUserAdded: boolean): { [address: string]: Token } {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const userAddedTokens = useUserAddedTokens()
return useMemo(() => {
@@ -63,7 +63,7 @@ type BridgeInfo = Record<
>
export function useUnsupportedTokens(): { [address: string]: Token } {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const listsByUrl = useAllLists()
const unsupportedTokensMap = useUnsupportedTokenList()
const unsupportedTokens = useTokensFromMap(unsupportedTokensMap, false)
@@ -108,7 +108,7 @@ export function useUnsupportedTokens(): { [address: string]: Token } {
export function useSearchInactiveTokenLists(search: string | undefined, minResults = 10): WrappedTokenInfo[] {
const lists = useAllLists()
const inactiveUrls = useInactiveListUrls()
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const activeTokens = useAllTokens()
return useMemo(() => {
if (!search || search.trim().length === 0) return []

View File

@@ -1,6 +0,0 @@
// TODO(vm): Rm this file once #3759 is merged.
import { useWeb3React } from '@web3-react/core'
export default function useActiveWeb3React() {
return useWeb3React()
}

View File

@@ -1,6 +1,6 @@
import { Currency } from '@uniswap/sdk-core'
import { Pool, Route } from '@uniswap/v3-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useMemo } from 'react'
import { useV3SwapPools } from './useV3SwapPools'
@@ -63,7 +63,7 @@ export function useAllV3Routes(
currencyIn?: Currency,
currencyOut?: Currency
): { loading: boolean; routes: Route<Currency, Currency>[] } {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const { pools, loading: poolsLoading } = useV3SwapPools(currencyIn, currencyOut)
return useMemo(() => {

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import ArgentWalletContractABI from '../abis/argent-wallet-contract.json'
import { ArgentWalletContract } from '../abis/types'
@@ -6,7 +6,7 @@ import { useContract } from './useContract'
import useIsArgentWallet from './useIsArgentWallet'
export function useArgentWalletContract(): ArgentWalletContract | null {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const isArgentWallet = useIsArgentWallet()
return useContract(
isArgentWallet ? account ?? undefined : undefined,

View File

@@ -1,7 +1,7 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { AUTO_ROUTER_SUPPORTED_CHAINS } from 'lib/hooks/routing/clientSideSmartOrderRouter'
export default function useAutoRouterSupported(): boolean {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return Boolean(chainId && AUTO_ROUTER_SUPPORTED_CHAINS.includes(chainId))
}

View File

@@ -1,8 +1,8 @@
import { Trade } from '@uniswap/router-sdk'
import { Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { SUPPORTED_GAS_ESTIMATE_CHAIN_IDS } from 'constants/chains'
import { L2_CHAIN_IDS } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import JSBI from 'jsbi'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { useMemo } from 'react'
@@ -35,7 +35,7 @@ const MAX_AUTO_SLIPPAGE_TOLERANCE = new Percent(25, 100) // 25%
export default function useAutoSlippageTolerance(
trade: InterfaceTrade<Currency, Currency, TradeType> | undefined
): Percent {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const onL2 = chainId && L2_CHAIN_IDS.includes(chainId)
const outputDollarValue = useUSDCValue(trade?.outputAmount)
const nativeGasPrice = useGasPrice()

View File

@@ -1,7 +1,7 @@
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
import { Route, SwapQuoter } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import JSBI from 'jsbi'
import { useSingleContractWithCallData } from 'lib/hooks/multicall'
import { useMemo } from 'react'
@@ -35,7 +35,7 @@ export function useClientSideV3Trade<TTradeType extends TradeType>(
const { routes, loading: routesLoading } = useAllV3Routes(currencyIn, currencyOut)
const quoter = useV3Quoter()
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const callData = useMemo(
() =>
amountSpecified

View File

@@ -6,6 +6,7 @@ import TickLensJson from '@uniswap/v3-periphery/artifacts/contracts/lens/TickLen
import UniswapInterfaceMulticallJson from '@uniswap/v3-periphery/artifacts/contracts/lens/UniswapInterfaceMulticall.sol/UniswapInterfaceMulticall.json'
import NonfungiblePositionManagerJson from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
import V3MigratorJson from '@uniswap/v3-periphery/artifacts/contracts/V3Migrator.sol/V3Migrator.json'
import { useWeb3React } from '@web3-react/core'
import ARGENT_WALLET_DETECTOR_ABI from 'abis/argent-wallet-detector.json'
import EIP_2612 from 'abis/eip_2612.json'
import ENS_PUBLIC_RESOLVER_ABI from 'abis/ens-public-resolver.json'
@@ -27,7 +28,6 @@ import {
V3_MIGRATOR_ADDRESSES,
} from 'constants/addresses'
import { WRAPPED_NATIVE_CURRENCY } from 'constants/tokens'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import { NonfungiblePositionManager, Quoter, TickLens, UniswapInterfaceMulticall } from 'types/v3'
import { V3Migrator } from 'types/v3/V3Migrator'
@@ -48,7 +48,7 @@ export function useContract<T extends Contract = Contract>(
ABI: any,
withSignerIfPossible = true
): T | null {
const { provider, account, chainId } = useActiveWeb3React()
const { provider, account, chainId } = useWeb3React()
return useMemo(() => {
if (!addressOrAddressMap || !ABI || !provider || !chainId) return null
@@ -74,7 +74,7 @@ export function useTokenContract(tokenAddress?: string, withSignerIfPossible?: b
}
export function useWETHContract(withSignerIfPossible?: boolean) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return useContract<Weth>(
chainId ? WRAPPED_NATIVE_CURRENCY[chainId]?.address : undefined,
WETH_ABI,
@@ -135,7 +135,7 @@ export function useV3Quoter() {
}
export function useTickLens(): TickLens | null {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const address = chainId ? TICK_LENS_ADDRESSES[chainId] : undefined
return useContract(address, TickLensABI) as TickLens | null
}

View File

@@ -1,7 +1,7 @@
import { BigNumber } from '@ethersproject/bignumber'
import { hexZeroPad } from '@ethersproject/bytes'
import { namehash } from '@ethersproject/hash'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useSingleCallResult } from 'lib/hooks/multicall'
import uriToHttp from 'lib/utils/uriToHttp'
import { useEffect, useMemo, useState } from 'react'
@@ -112,7 +112,7 @@ function useERC721Uri(
enforceOwnership: boolean
): { uri?: string; loading: boolean } {
const idArgument = useMemo(() => [id], [id])
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const contract = useERC721Contract(contractAddress)
const owner = useSingleCallResult(contract, 'ownerOf', idArgument)
const uri = useSingleCallResult(contract, 'tokenURI', idArgument)
@@ -130,7 +130,7 @@ function useERC1155Uri(
id: string | undefined,
enforceOwnership: boolean
): { uri?: string; loading: boolean } {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const idArgument = useMemo(() => [id], [id])
const accountArgument = useMemo(() => [account || '', id], [account, id])
const contract = useERC1155Contract(contractAddress)

View File

@@ -4,7 +4,7 @@ import { Trade } from '@uniswap/router-sdk'
import { Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'
import { Trade as V2Trade } from '@uniswap/v2-sdk'
import { Trade as V3Trade } from '@uniswap/v3-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import JSBI from 'jsbi'
import { useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo, useState } from 'react'
@@ -126,7 +126,7 @@ export function useERC20Permit(
state: UseERC20PermitState
gatherPermitSignature: null | (() => Promise<void>)
} {
const { account, chainId, provider } = useActiveWeb3React()
const { account, chainId, provider } = useWeb3React()
const tokenAddress = currencyAmount?.currency?.isToken ? currencyAmount.currency.address : undefined
const eip2612Contract = useEIP2612Contract(tokenAddress)
const isArgentWallet = useIsArgentWallet()
@@ -268,7 +268,7 @@ export function useERC20PermitFromTrade(
allowedSlippage: Percent,
transactionDeadline: BigNumber | undefined
) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const swapRouterAddress = chainId
? // v2 router does not support
trade instanceof V2Trade

View File

@@ -1,11 +1,11 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { NEVER_RELOAD, useSingleCallResult } from 'lib/hooks/multicall'
import { useMemo } from 'react'
import { useArgentWalletDetectorContract } from './useContract'
export default function useIsArgentWallet(): boolean {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const argentWalletDetector = useArgentWalletDetectorContract()
const inputs = useMemo(() => [account ?? undefined], [account])
const call = useSingleCallResult(argentWalletDetector, 'isArgentWallet', inputs, NEVER_RELOAD)

View File

@@ -3,7 +3,7 @@ import { BigintIsh, Currency, Token } from '@uniswap/sdk-core'
import { abi as IUniswapV3PoolStateABI } 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 { useWeb3React } from '@web3-react/core'
import JSBI from 'jsbi'
import { useMultipleContractSingleData } from 'lib/hooks/multicall'
import { useMemo } from 'react'
@@ -86,7 +86,7 @@ export enum PoolState {
export function usePools(
poolKeys: [Currency | undefined, Currency | undefined, FeeAmount | undefined][]
): [PoolState, Pool | null][] {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const poolTokens: ([Token, Token, FeeAmount] | undefined)[] = useMemo(() => {
if (!chainId) return new Array(poolKeys.length)

View File

@@ -1,7 +1,7 @@
import { Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { SOCKS_CONTROLLER_ADDRESSES } from 'constants/addresses'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import { useTokenBalance } from 'state/wallet/hooks'
@@ -9,7 +9,7 @@ import { useTokenBalance } from 'state/wallet/hooks'
const SOCKS = new Token(SupportedChainId.MAINNET, SOCKS_CONTROLLER_ADDRESSES[SupportedChainId.MAINNET], 0)
export function useHasSocks(): boolean | undefined {
const { account, chainId } = useActiveWeb3React()
const { account, chainId } = useWeb3React()
const balance = useTokenBalance(account ?? undefined, chainId === SupportedChainId.MAINNET ? SOCKS : undefined)

View File

@@ -3,8 +3,8 @@ import { SwapRouter, Trade } from '@uniswap/router-sdk'
import { Currency, Percent, TradeType } from '@uniswap/sdk-core'
import { Router as V2SwapRouter, Trade as V2Trade } from '@uniswap/v2-sdk'
import { FeeOptions, SwapRouter as V3SwapRouter, Trade as V3Trade } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import { SWAP_ROUTER_ADDRESSES, V3_ROUTER_ADDRESS } from 'constants/addresses'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import approveAmountCalldata from 'utils/approveAmountCalldata'
@@ -39,7 +39,7 @@ export function useSwapCallArguments(
deadline: BigNumber | undefined,
feeOptions: FeeOptions | undefined
): SwapCall[] {
const { account, chainId, provider } = useActiveWeb3React()
const { account, chainId, provider } = useWeb3React()
const { address: recipientAddress } = useENS(recipientAddressOrName)
const recipient = recipientAddressOrName === null ? account : recipientAddress

View File

@@ -1,6 +1,6 @@
// eslint-disable-next-line no-restricted-imports
import { Percent, TradeType } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { SwapCallbackState, useSwapCallback as useLibSwapCallBack } from 'lib/hooks/swap/useSwapCallback'
import { ReactNode, useMemo } from 'react'
@@ -20,7 +20,7 @@ export function useSwapCallback(
recipientAddressOrName: string | null, // the ENS name or address of the recipient of the trade, or null if swap should be returned to sender
signatureData: SignatureData | undefined | null
): { state: SwapCallbackState; callback: null | (() => Promise<string>); error: ReactNode | null } {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const deadline = useTransactionDeadline()

View File

@@ -1,5 +1,5 @@
import { Currency } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useMemo } from 'react'
import { useCombinedActiveList } from 'state/lists/hooks'
@@ -7,7 +7,7 @@ import { useCombinedActiveList } from 'state/lists/hooks'
* Returns a WrappedTokenInfo from the active token lists when possible,
* or the passed token otherwise. */
export function useTokenInfoFromActiveList(currency: Currency) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const activeList = useCombinedActiveList()
return useMemo(() => {

View File

@@ -1,7 +1,7 @@
import { BigNumber } from '@ethersproject/bignumber'
import { useWeb3React } from '@web3-react/core'
import { L2_CHAIN_IDS } from 'constants/chains'
import { L2_DEADLINE_FROM_NOW } from 'constants/misc'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import { useAppSelector } from 'state/hooks'
@@ -9,7 +9,7 @@ import useCurrentBlockTimestamp from './useCurrentBlockTimestamp'
// combines the block timestamp with the user setting to give the deadline that should be used for any submitted transaction
export default function useTransactionDeadline(): BigNumber | undefined {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const ttl = useAppSelector((state) => state.user.userDeadline)
const blockTimestamp = useCurrentBlockTimestamp()
return useMemo(() => {

View File

@@ -1,5 +1,5 @@
import { Currency, CurrencyAmount, Price, Token, TradeType } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
import { useMemo, useRef } from 'react'
@@ -80,7 +80,7 @@ export function useUSDCValue(currencyAmount: CurrencyAmount<Currency> | undefine
* @returns CurrencyAmount where currency is stablecoin on active chain
*/
export function useStablecoinAmountFromFiatValue(fiatValue: string | null | undefined) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const stablecoin = chainId ? STABLECOIN_AMOUNT_OUT[chainId]?.currency : undefined
return useMemo(() => {

View File

@@ -1,7 +1,7 @@
import { Currency, Token } from '@uniswap/sdk-core'
import { FeeAmount, Pool } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import { useAllCurrencyCombinations } from './useAllCurrencyCombinations'
@@ -19,7 +19,7 @@ export function useV3SwapPools(
pools: Pool[]
loading: boolean
} {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut)

View File

@@ -1,6 +1,6 @@
import { Trans } from '@lingui/macro'
import { Currency } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
import { useMemo } from 'react'
@@ -57,7 +57,7 @@ export default function useWrapCallback(
outputCurrency: Currency | undefined | null,
typedValue: string | undefined
): { wrapType: WrapType; execute?: undefined | (() => Promise<void>); inputError?: WrapInputError } {
const { chainId, account } = useActiveWeb3React()
const { chainId, account } = useWeb3React()
const wethContract = useWETHContract()
const balance = useCurrencyBalance(account ?? undefined, inputCurrency ?? undefined)
// we can always parse the amount typed as the input currency, since wrapping is 1:1

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import useBlockNumber from 'lib/hooks/useBlockNumber'
import multicall from 'lib/state/multicall'
import { SkipFirst } from 'types/tuple'
@@ -37,7 +37,7 @@ export function useSingleContractWithCallData(
}
function useCallContext() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const latestBlock = useBlockNumber()
return { chainId, latestBlock }
}

View File

@@ -2,8 +2,8 @@ import { Protocol, Trade } from '@uniswap/router-sdk'
import { Currency, CurrencyAmount, Percent, Token, TradeType } from '@uniswap/sdk-core'
import { Pair, Route as V2Route, Trade as V2Trade } from '@uniswap/v2-sdk'
import { Pool, Route as V3Route, Trade as V3Trade } from '@uniswap/v3-sdk'
import { useWeb3React } from '@web3-react/core'
import { SWAP_ROUTER_ADDRESSES, V2_ROUTER_ADDRESS, V3_ROUTER_ADDRESS } from 'constants/addresses'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
import { getTxOptimizedSwapRouter, SwapRouterVersion } from 'utils/getTxOptimizedSwapRouter'
@@ -16,7 +16,7 @@ function useSwapApprovalStates(
allowedSlippage: Percent,
useIsPendingApproval: (token?: Token, spender?: string) => boolean
): { v2: ApprovalState; v3: ApprovalState; v2V3: ApprovalState } {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const amountToApprove = useMemo(
() => (trade && trade.inputAmount.currency.isToken ? trade.maximumAmountIn(allowedSlippage) : undefined),
@@ -40,7 +40,7 @@ export function useSwapRouterAddress(
| Trade<Currency, Currency, TradeType>
| undefined
) {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return useMemo(
() =>
chainId

View File

@@ -4,7 +4,7 @@ import { TransactionResponse } from '@ethersproject/providers'
import { Trans } from '@lingui/macro'
import { Percent } from '@uniswap/sdk-core'
import { FeeOptions } from '@uniswap/v3-sdk'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import useENS from 'hooks/useENS'
import { SignatureData } from 'hooks/useERC20Permit'
import { AnyTrade, useSwapCallArguments } from 'hooks/useSwapCallArguments'
@@ -42,7 +42,7 @@ export function useSwapCallback({
deadline,
feeOptions,
}: UseSwapCallbackArgs): UseSwapCallbackReturns {
const { account, chainId, provider } = useActiveWeb3React()
const { account, chainId, provider } = useWeb3React()
const swapCalls = useSwapCallArguments(
trade,

View File

@@ -1,6 +1,6 @@
import { TransactionReceipt } from '@ethersproject/abstract-provider'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import useBlockNumber, { useFastForwardBlockNumber } from 'lib/hooks/useBlockNumber'
import ms from 'ms.macro'
import { useCallback, useEffect } from 'react'
@@ -45,7 +45,7 @@ interface UpdaterProps {
}
export default function Updater({ pendingTransactions, onCheck, onReceipt }: UpdaterProps): null {
const { chainId, provider } = useActiveWeb3React()
const { chainId, provider } = useWeb3React()
const lastBlockNumber = useBlockNumber()
const fastForwardBlockNumber = useFastForwardBlockNumber()

View File

@@ -1,7 +1,7 @@
import { MaxUint256 } from '@ethersproject/constants'
import { TransactionResponse } from '@ethersproject/providers'
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useTokenContract } from 'hooks/useContract'
import { useTokenAllowance } from 'hooks/useTokenAllowance'
import { useCallback, useMemo } from 'react'
@@ -19,7 +19,7 @@ export function useApprovalStateForSpender(
spender: string | undefined,
useIsPendingApproval: (token?: Token, spender?: string) => boolean
): ApprovalState {
const { account } = useActiveWeb3React()
const { account } = useWeb3React()
const token = amountToApprove?.currency?.isToken ? amountToApprove.currency : undefined
const currentAllowance = useTokenAllowance(token, account ?? undefined, spender)
@@ -48,7 +48,7 @@ export function useApproval(
ApprovalState,
() => Promise<{ response: TransactionResponse; tokenAddress: string; spenderAddress: string } | undefined>
] {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const token = amountToApprove?.currency?.isToken ? amountToApprove.currency : undefined
// check the current approval status

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import useIsWindowVisible from 'hooks/useIsWindowVisible'
import { createContext, ReactNode, useCallback, useContext, useEffect, useMemo, useState } from 'react'
@@ -29,7 +29,7 @@ export function useFastForwardBlockNumber(): (block: number) => void {
}
export function BlockNumberProvider({ children }: { children: ReactNode }) {
const { chainId: activeChainId, provider } = useActiveWeb3React()
const { chainId: activeChainId, provider } = useWeb3React()
const [{ chainId, block }, setChainBlock] = useState<{ chainId?: number; block?: number }>({ chainId: activeChainId })
const onBlock = useCallback(

View File

@@ -1,7 +1,7 @@
import { arrayify } from '@ethersproject/bytes'
import { parseBytes32String } from '@ethersproject/strings'
import { Currency, Token } from '@uniswap/sdk-core'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useBytes32TokenContract, useTokenContract } from 'hooks/useContract'
import { NEVER_RELOAD, useSingleCallResult } from 'lib/hooks/multicall'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
@@ -30,7 +30,7 @@ function parseStringOrBytes32(str: string | undefined, bytes32: string | undefin
* Returns undefined if tokenAddress is invalid or token does not exist.
*/
export function useTokenFromNetwork(tokenAddress: string | null | undefined): Token | null | undefined {
const { chainId, connector } = useActiveWeb3React()
const { chainId, connector } = useWeb3React()
const chainAllowed = chainId && isChainAllowed(connector, chainId)
const formattedAddress = isAddress(tokenAddress)
@@ -96,7 +96,7 @@ export function useTokenFromMapOrNetwork(tokens: TokenMap, tokenAddress?: string
*/
export function useCurrencyFromMap(tokens: TokenMap, currencyId?: string | null): Currency | null | undefined {
const nativeCurrency = useNativeCurrency()
const { chainId, connector } = useActiveWeb3React()
const { chainId, connector } = useWeb3React()
const isNative = Boolean(nativeCurrency && currencyId?.toUpperCase() === 'ETH')
const shorthandMatchAddress = useMemo(() => {
const chain = supportedChainId(chainId)

View File

@@ -1,8 +1,8 @@
import { Interface } from '@ethersproject/abi'
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import ERC20ABI from 'abis/erc20.json'
import { Erc20Interface } from 'abis/types/Erc20'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import JSBI from 'jsbi'
import { useMultipleContractSingleData, useSingleContractMultipleData } from 'lib/hooks/multicall'
import { useMemo } from 'react'
@@ -17,7 +17,7 @@ import { isAddress } from '../../utils'
export function useNativeCurrencyBalances(uncheckedAddresses?: (string | undefined)[]): {
[address: string]: CurrencyAmount<Currency> | undefined
} {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const multicallContract = useInterfaceMulticall()
const validAddressInputs: [string][] = useMemo(

View File

@@ -1,4 +1,4 @@
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { atomWithImmer } from 'jotai/immer'
import { useAtomValue, useUpdateAtom } from 'jotai/utils'
import { useCallback } from 'react'
@@ -11,7 +11,7 @@ const oldestBlockMapAtom = atomWithImmer<{ [chainId: number]: number }>({})
const DEFAULT_MAX_BLOCK_AGE = 10
export function useSetOldestValidBlock(): (block: number) => void {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const updateValidBlock = useUpdateAtom(oldestBlockMapAtom)
return useCallback(
(block: number) => {
@@ -25,7 +25,7 @@ export function useSetOldestValidBlock(): (block: number) => void {
}
export function useGetIsValidBlock(maxBlockAge = DEFAULT_MAX_BLOCK_AGE): (block: number) => boolean {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const currentBlock = useBlockNumber()
const oldestBlockMap = useAtomValue(oldestBlockMapAtom)
const oldestBlock = chainId ? oldestBlockMap[chainId] : 0

View File

@@ -1,11 +1,11 @@
import { NativeCurrency } from '@uniswap/sdk-core'
import { useWeb3React } from '@web3-react/core'
import { SupportedChainId } from 'constants/chains'
import { nativeOnChain } from 'constants/tokens'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useMemo } from 'react'
export default function useNativeCurrency(): NativeCurrency {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
return useMemo(
() =>
chainId

View File

@@ -1,5 +1,5 @@
import { createMulticall } from '@uniswap/redux-multicall'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
import { useWeb3React } from '@web3-react/core'
import { useInterfaceMulticall } from 'hooks/useContract'
import useBlockNumber from 'lib/hooks/useBlockNumber'
import { combineReducers, createStore } from 'redux'
@@ -11,7 +11,7 @@ export const store = createStore(reducer)
export default multicall
export function MulticallUpdater() {
const { chainId } = useActiveWeb3React()
const { chainId } = useWeb3React()
const latestBlockNumber = useBlockNumber()
const contract = useInterfaceMulticall()
return <multicall.Updater chainId={chainId} latestBlockNumber={latestBlockNumber} contract={contract} />

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: af_ZA\n"
"Language-Team: Afrikaans\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Voeg meer likiditeit by"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Voeg {0} by Metamask <0/>"
msgid "Add {0}"
msgstr "Voeg {0}by"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Voeg {0}/{1} V3 likiditeit by"
msgid "Added {0}"
msgstr "{0}bygevoeg"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Deur hierdie voorstel by die tou te voeg, sal dit na 'n vertraging uitgevoer kan word."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "Adres het geen eis nie"
@@ -481,6 +485,8 @@ msgstr "Bevestig die ruil"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Bevestig hierdie transaksie in u beursie"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Fout"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Kon nie koppel nie"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Kon nie koppel nie. Probeer om die bladsy te verfris."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Kon nie lys invoer nie"
@@ -759,10 +760,35 @@ msgstr "Geskatte netwerkfooi"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Voer uit"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Voer voorstel {proposalId}uit"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Voer voorstel {proposalKey}uit."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Uitgevoer"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Uitvoer"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "Die uitvoering van hierdie voorstel sal die oproepdata in die ketting in werking stel."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Uitvoering ingedien"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Uitgebreide resultate van onaktiewe tekenlyste"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Inset word geskat. U sal hoogstens <0>{0} {1}</0> anders gaan die transaksie terug."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Installeer Metamask"
msgid "Install MetaMask"
msgstr "Installeer MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Leer meer"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Reg en privaatheid"
@@ -1173,10 +1198,6 @@ msgstr "Sodra u tevrede is met die tarief, klik op die aanbod om dit te hersien.
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Slegs stemgeregtigdes van UNI wat self gedelegeer is of na 'n ander adres voor blok {0} gedelegeer is."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Oeps! 'N Onbekende fout het voorgekom. Verfris die bladsy of besoek 'n ander blaaier of toestel."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Optimisme brug"
@@ -1226,10 +1247,6 @@ msgstr "Bevestig dat u hierdie lys wil verwyder deur REMOVE in te tik"
msgid "Please connect to Layer 1 Ethereum"
msgstr "Maak asseblief verbinding met Layer 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Koppel asseblief aan 'n ondersteunde netwerk in die aftreklys of in jou beursie."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Tik die woord \"{confirmWord}\" in om die kundige modus te aktiveer."
@@ -1347,10 +1364,27 @@ msgstr "Voorsteller"
msgid "Protocol Disclaimer"
msgstr "Protokol vrywaring"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Tou"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Touvoorstel {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Touvoorstel {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "In die ry staan"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Toustaan"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Tariewe"
@@ -1702,6 +1736,10 @@ msgstr "Hierdie toepassing gebruik die volgende derdeparty-API's:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Hierdie poel moet geïnisialiseer word voordat u likiditeit kan byvoeg. Kies 'n aanvangsprys vir die swembad om te initialiseer. Voer dan u likiditeitspryse en depositobedrag in. Gasfooie sal hoër wees as gewoonlik as gevolg van die initialiseringstransaksie."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Hierdie voorstel kan na {0}uitgevoer word."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Hierdie roete optimaliseer jou totale uitset deur gesplete roetes, veelvuldige hops en die gaskoste van elke stap in ag te neem."
@@ -1779,6 +1817,7 @@ msgstr "Transaksie-instellings"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transaksie ingedien"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Gebruiker"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 is nie beskikbaar op Laag 2. Skakel oor na Laag 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool is nie beskikbaar op Laag 2 nie. Skakel oor na Laag 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Bekyk op Explorer"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Bekyk transaksie op Explorer"
@@ -2091,7 +2132,6 @@ msgstr "Draai toe"
msgid "Wrap <0/> to {0}"
msgstr "Wikkel <0/> tot {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Verkeerde netwerk"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: ar_SA\n"
"Language-Team: Arabic\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "أضف المزيد من السيولة"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "إضافة {0} إلى Metamask <0/>"
msgid "Add {0}"
msgstr "أضف {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "إضافة سيولة {0}/{1} V3"
msgid "Added {0}"
msgstr "تم إضافة {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "ستسمح إضافة هذا الاقتراح إلى قائمة الانتظار بتنفيذه بعد تأخير."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "العنوان ليس لديه مطالبة متاحة"
@@ -481,6 +485,8 @@ msgstr "تأكيد المبادلة"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "تأكيد هذه المعاملة في محفظتك"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "خطأ"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "خطأ في الاتصال"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "خطأ في الاتصال. حاول تحديث الصفحة."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "خطأ في استيراد قائمة"
@@ -759,10 +760,35 @@ msgstr "رسوم الشبكة المقدرة"
msgid "Etherscan"
msgstr "إثيرسكان"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "نفذ - اعدم"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "تنفيذ الاقتراح {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "تنفيذ الاقتراح {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "أعدم"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "التنفيذ"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "سيؤدي تنفيذ هذا الاقتراح إلى تفعيل Calldata على السلسلة."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "تم تقديم التنفيذ"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "النتائج الموسعة من قوائم الرموز غير النشطة"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "تم تقدير الإدخال. سوف تبيع على الأكثر <0>{0} {1}</0> أو سوف تعود المعاملة."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "تثبيت Metamask"
msgid "Install MetaMask"
msgstr "قم بتثبيت MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "يتعلم أكثر"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "الشؤون القانونية والخصوصية"
@@ -1173,10 +1198,6 @@ msgstr "بعد أن تكون راضيًا عن السعر، انقر على ال
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "أصوات UNI التي تم تفويضها بنفسك أو تفويضها إلى عنوان آخر قبل الكتلة {0} هي فقط المؤهلة للتصويت."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "عفواً! حدث خطأ غير معروف. يُرجى تحديث الصفحة، أو الزيارة من متصفح آخر أو جهاز آخر."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "جسر التفاؤل"
@@ -1226,10 +1247,6 @@ msgstr "يرجى تأكيد رغبتك في إزالة هذه القائمة ب
msgid "Please connect to Layer 1 Ethereum"
msgstr "يرجى الاتصال بـ Layer 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "يرجى الاتصال بشبكة مدعومة في القائمة المنسدلة أو في محفظتك."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "الرجاء كتابة كلمة \"{confirmWord}\" لتمكين وضع الخبير."
@@ -1347,10 +1364,27 @@ msgstr "المقترح"
msgid "Protocol Disclaimer"
msgstr "إخلاء مسؤولية البروتوكول"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "طابور"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "اقتراح قائمة الانتظار {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "اقتراح قائمة الانتظار {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "في قائمة الانتظار"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "قائمة الانتظار"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "الأسعار"
@@ -1702,6 +1736,10 @@ msgstr "يستخدم هذا التطبيق واجهات برمجة التطبي
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "يجب تهيئة هذا المستودع قبل أن تتمكن من إضافة السيولة. للتهيئة ، حدد سعر البداية للمجمع. ثم أدخل نطاق سعر السيولة ومبلغ الإيداع. ستكون رسوم الغاز أعلى من المعتاد بسبب معاملة التهيئة."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "يمكن تنفيذ هذا الاقتراح بعد {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "يعمل هذا المسار على تحسين إنتاجك الإجمالي من خلال مراعاة المسارات المنقسمة والقفزات المتعددة وتكلفة الغاز لكل خطوة."
@@ -1779,6 +1817,7 @@ msgstr "إعدادات المعاملة"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "تم إرسال المعاملة"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "المستخدم"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 غير متوفر في الطبقة 2. قم بالتبديل إلى الطبقة الأولى من Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool غير متاح في الطبقة 2. قم بالتبديل إلى Layer 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "عرض على Explorer"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "عرض المعاملة على Explorer"
@@ -2091,7 +2132,6 @@ msgstr "التفاف"
msgid "Wrap <0/> to {0}"
msgstr "لف من <0/> إلى {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "شبكة خاطئة"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: ca_ES\n"
"Language-Team: Catalan\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Afegiu més liquiditat"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Afegiu {0} a Metamask <0/>"
msgid "Add {0}"
msgstr "Afegeix {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Afegir {0}/{1} liquiditat V3"
msgid "Added {0}"
msgstr "Afegit {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Afegir aquesta proposta a la cua permetrà executar-la, després d'un retard."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "L'adreça no té cap reclamació disponible"
@@ -481,6 +485,8 @@ msgstr "Confirmeu l'intercanvi"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Confirmeu aquesta transacció a la vostra cartera"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Error"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Error de connexió"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Error de connexió. Proveu d'actualitzar la pàgina."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Error en importar la llista"
@@ -759,10 +760,35 @@ msgstr "Tarifa estimada de la xarxa"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Executar"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Executar la proposta {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Executar la proposta {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Executat"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Executant"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "L'execució d'aquesta proposta promulgarà les dades de la convocatòria en cadena."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Execució presentada"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Resultats ampliats de llistes de fitxes inactives"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Sestima lentrada. Vindràs com a màxim <0>{0} {1}</0> o la transacció es revertirà."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Instal·leu Metamask"
msgid "Install MetaMask"
msgstr "Instal·leu MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Aprèn més"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Legal i Privacitat"
@@ -1173,10 +1198,6 @@ msgstr "Quan estigueu satisfet amb la tarifa, feu clic a Subministrament per rev
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Només es poden votar els vots UNI que sautodelegaven o delegaven a una altra direcció abans del bloc {0}."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Vaja! S'ha produït un error desconegut. Actualitzeu la pàgina o visiteu-la des dun altre navegador o dispositiu."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Pont de l'optimisme"
@@ -1226,10 +1247,6 @@ msgstr "Confirmeu que voleu eliminar aquesta llista escrivint ELIMINA"
msgid "Please connect to Layer 1 Ethereum"
msgstr "Connecteu-vos a la capa 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Connecteu-vos a una xarxa compatible al menú desplegable o a la vostra cartera."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Escriviu la paraula \"{confirmWord}\" per habilitar el mode expert."
@@ -1347,10 +1364,27 @@ msgstr "Proponent"
msgid "Protocol Disclaimer"
msgstr "Exempció de responsabilitat del protocol"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Cua"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Proposta de cua {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Proposta de cua {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "En cua"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Fent cua"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Tarifes"
@@ -1702,6 +1736,10 @@ msgstr "Aquesta aplicació utilitza les següents API de tercers:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Aquest grup sha dinicialitzar abans dafegir liquiditat. Per inicialitzar, seleccioneu un preu inicial per a la piscina. A continuació, introduïu l'interval de preus de liquiditat i l'import del dipòsit. Les comissions de gas seran superiors a l'habitual a causa de la transacció d'inicialització."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Aquesta proposta es pot executar després de {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Aquesta ruta optimitza la producció total tenint en compte les rutes dividides, els salts múltiples i el cost del gas de cada pas."
@@ -1779,6 +1817,7 @@ msgstr "Configuració de transaccions"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transacció enviada"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Usuari"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 no està disponible a la capa 2. Canvia a Ethereum de la capa 1."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool no està disponible a la capa 2. Canvia a la capa 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Veure a Explorer"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Veure la transacció a Explorer"
@@ -2091,7 +2132,6 @@ msgstr "Embolicar"
msgid "Wrap <0/> to {0}"
msgstr "Embolcalla de <0/> a {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Xarxa incorrecta"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: cs_CZ\n"
"Language-Team: Czech\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Přidejte více likvidity"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Přidat {0} do metamasky <0/>"
msgid "Add {0}"
msgstr "Přidejte {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Přidat likviditu V3 {0}/{1}"
msgid "Added {0}"
msgstr "Přidáno {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Přidání tohoto návrhu do fronty umožní jeho provedení po určité prodlevě."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "Adresa nemá žádný dostupný nárok"
@@ -481,6 +485,8 @@ msgstr "Potvrdit výměnu"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Potvrďte tuto transakci ve své peněžence"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Chyba"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Chyba připojení"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Chyba připojení. Zkuste obnovit stránku."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Chyba importu seznamu"
@@ -759,10 +760,35 @@ msgstr "Odhadovaný poplatek za síť"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Vykonat"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Provést návrh {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Provést návrh {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Popraven"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Provádění"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "Provedení tohoto návrhu uzákoní data volání v řetězci."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Provedení předloženo"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Rozšířené výsledky z neaktivních seznamů žetonů"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Vstup je odhadnutý. Prodáte nejvýše <0>{0} {1}</0> nebo se transakce vrátí."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Nainstalovat Metamasku"
msgid "Install MetaMask"
msgstr "Nainstalujte MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Zjistěte více"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Právní otázky a soukromí"
@@ -1173,10 +1198,6 @@ msgstr "Až budete spokojeni se sazbou, klikněte na zásobu pro kontrolu."
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Způsobilé k hlasování jsou jen hlasy UNI, které byly delegovány sobě nebo delegovány na jinou adresu před blokem {0}."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Jejda! Došlo k neznámé chybě. Obnovte prosím stránku nebo ji navštivte z jiného prohlížeče nebo zařízení."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Most optimismu"
@@ -1226,10 +1247,6 @@ msgstr "Potvrďte, že chcete tento seznam odstranit, zadáním ODSTRANIT"
msgid "Please connect to Layer 1 Ethereum"
msgstr "Připojte se k Ethereu vrstvy 1"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Připojte se k podporované síti v rozbalovací nabídce nebo ve své peněžence."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Pro povolení expertního režimu zadejte slovo \"{confirmWord}\"."
@@ -1347,10 +1364,27 @@ msgstr "Navrhovatel"
msgid "Protocol Disclaimer"
msgstr "Zřeknutí se odpovědnosti za protokol"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Fronta"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Návrh fronty {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Návrh fronty {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "Ve frontě"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Zařazení do fronty"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Sazby"
@@ -1702,6 +1736,10 @@ msgstr "Tato aplikace používá následující rozhraní API třetích stran:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Tento fond musí být inicializován, než budete moci přidat likviditu. Chcete-li inicializovat, vyberte počáteční cenu fondu. Poté zadejte rozsah cen likvidity a částku vkladu. Poplatky za plyn budou kvůli inicializační transakci vyšší než obvykle."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Tento návrh může být proveden po {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Tato trasa optimalizuje váš celkový výkon zohledněním rozdělených tras, více skoků a nákladů na plyn v každém kroku."
@@ -1779,6 +1817,7 @@ msgstr "Nastavení transakcí"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transakce odeslána"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Uživatel"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 není k dispozici na vrstvě 2. Přepněte na vrstvu 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool není k dispozici na vrstvě 2. Přepněte na vrstvu 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Zobrazit v Průzkumníku"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Zobrazit transakci v Průzkumníku"
@@ -2091,7 +2132,6 @@ msgstr "Zalomit"
msgid "Wrap <0/> to {0}"
msgstr "Zabalit <0/> až {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Nesprávná síť"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: da_DK\n"
"Language-Team: Danish\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Tilføj mere likviditet"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Tilføj {0} til Metamask <0/>"
msgid "Add {0}"
msgstr "Tilføj {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Tilføj {0}/{1} V3 likviditet"
msgid "Added {0}"
msgstr "Tilføjet {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Tilføjelse af dette forslag til køen vil gøre det muligt at udføre det efter en forsinkelse."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "Adresse har ingen tilgængelig krav"
@@ -481,6 +485,8 @@ msgstr "Bekræft skift"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Bekræft denne transaktion i din tegnebog"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Fejl"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Fejl ved tilslutning"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Der opstod en fejl. Prøv at opdatere siden."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Fejl ved import af liste"
@@ -759,10 +760,35 @@ msgstr "Estimeret netværksgebyr"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Udfør"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Udfør forslag {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Udfør forslag {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Henrettet"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Eksekverer"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "Eksekvering af dette forslag vil indføre opkaldsdata på kæden."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Udførelse indsendt"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Ekspanderede resultater fra inaktive token-lister"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Input er estimeret. Du vil sælge ved højst <0>{0} {1}</0> ellers vil transaktionen vende tilbage."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Installer Metamask"
msgid "Install MetaMask"
msgstr "Installer MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Lær mere"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Juridisk og privatliv"
@@ -1173,10 +1198,6 @@ msgstr "Når du er tilfreds med satsen, skal du klikke på forsyning for at genn
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Kun UNI-stemmer, der blev selvdelegeret eller delegeret til en anden adresse før blok {0}, er berettiget til at stemme."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Ups! Der opstod en ukendt fejl. Opdater siden, eller besøg fra en anden browser eller enhed."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Optimisme bro"
@@ -1226,10 +1247,6 @@ msgstr "Bekræft, at du vil fjerne denne liste ved at skrive REMOVE"
msgid "Please connect to Layer 1 Ethereum"
msgstr "Opret forbindelse til Layer 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Opret forbindelse til et understøttet netværk i rullemenuen eller i din tegnebog."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Skriv ordet \"{confirmWord}\" for at aktivere eksperttilstand."
@@ -1347,10 +1364,27 @@ msgstr "Forslagsstiller"
msgid "Protocol Disclaimer"
msgstr "Protokol Ansvarsfraskrivelse"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Kø"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Køforslag {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Køforslag {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "I kø"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Stå i kø"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Satser"
@@ -1702,6 +1736,10 @@ msgstr "Denne app bruger følgende tredjeparts API'er:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Denne pulje skal initialiseres, før du kan tilføje likviditet. For at initialisere skal du vælge en startpris for puljen. Indtast derefter dit likviditetsprisklasse og indbetalingsbeløb. Gasafgifter vil være højere end normalt på grund af initialiseringstransaktionen."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Dette forslag kan udføres efter {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Denne rute optimerer dit samlede output ved at overveje opdelte ruter, flere hop og gasomkostningerne for hvert trin."
@@ -1779,6 +1817,7 @@ msgstr "Transaktionsindstillinger"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transaktion indsendt"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Bruger"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 er ikke tilgængelig på lag 2. Skift til lag 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool er ikke tilgængelig på Layer 2. Skift til Layer 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Vis i Explorer"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Se transaktion i Explorer"
@@ -2091,7 +2132,6 @@ msgstr "Ombryd"
msgid "Wrap <0/> to {0}"
msgstr "Ombryd <0/> til {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Forkert netværk"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: de_DE\n"
"Language-Team: German\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Mehr Liquidität hinzufügen"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "{0} zu Metamask hinzufügen <0/>"
msgid "Add {0}"
msgstr "{0}hinzufügen"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "{0}/{1} V3 Liquidität hinzufügen"
msgid "Added {0}"
msgstr "{0} hinzugefügt"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Wenn Sie diesen Vorschlag der Warteschlange hinzufügen, kann er nach einer Verzögerung ausgeführt werden."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "Adresse hat keinen gültigen Anspruch"
@@ -481,6 +485,8 @@ msgstr "Tausch bestätigen"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Diese Transaktion in Ihrer Wallet bestätigen"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Fehler"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Verbindungsfehler"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Verbindungsfehler. Versuchen Sie die Seite neu zu laden."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Fehler beim Import der Liste"
@@ -759,10 +760,35 @@ msgstr "Geschätzte Netzwerkgebühr"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Ausführen"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Vorschlag {proposalId}ausführen"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Vorschlag ausführen {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Ausgeführt"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Ausführen"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "Durch die Ausführung dieses Vorschlags werden die Anrufdaten in der Kette ausgeführt."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Ausführung eingereicht"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Erweiterte Ergebnisse aus inaktiven Token-Listen"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Eingabe wird geschätzt. Sie werden höchstens <0>{0} {1}</0> verkaufen, andernfalls wird die Transaktion rückgängig gemacht."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Metamask installieren"
msgid "Install MetaMask"
msgstr "Meta Mask installieren"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Mehr erfahren"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Rechtliches & Datenschutz"
@@ -1173,10 +1198,6 @@ msgstr "Sobald Sie mit dem Preis zufrieden sind, klicken Sie auf Bereitstellen z
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Nur UNI-Stimmen, die vor Block {0} an die eigene oder eine fremde Adresse delegiert wurden, sind zur Abstimmung berechtigt."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Hoppla! Ein unbekannter Fehler ist aufgetreten. Bitte aktualisieren Sie die Seite oder besuchen Sie uns von einem anderen Browser oder Gerät."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Optimismus-Brücke"
@@ -1226,10 +1247,6 @@ msgstr "Bitte bestätigen Sie, dass Sie diese Liste entfernen möchten, indem Si
msgid "Please connect to Layer 1 Ethereum"
msgstr "Bitte verbinden Sie sich mit Layer 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Bitte verbinden Sie sich im Dropdown-Menü oder in Ihrem Wallet mit einem unterstützten Netzwerk."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Bitte geben Sie das Wort \"{confirmWord}\" ein, um den Experten-Modus zu aktivieren."
@@ -1347,10 +1364,27 @@ msgstr "Antragsteller"
msgid "Protocol Disclaimer"
msgstr "Protokoll-Haftungsausschluss"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Warteschlange"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Warteschlangenvorschlag {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Warteschlangenvorschlag {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "In Warteschlange"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Warteschlange"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Preise"
@@ -1702,6 +1736,10 @@ msgstr "Diese App verwendet die folgenden Drittanbieter-APIs:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Dieser Pool muss initialisiert werden, bevor Sie Liquidität hinzufügen können. Wählen Sie zum Initialisieren einen Startpreis für den Pool aus. Geben Sie dann Ihre Liquiditätspreisspanne und den Einzahlungsbetrag ein. Die Gasgebühren werden aufgrund der Initialisierungstransaktion höher als üblich sein."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Dieser Vorschlag kann nach {0}ausgeführt werden."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Diese Route optimiert Ihre Gesamtleistung, indem sie Split-Routen, mehrere Hops und die Benzinkosten jedes Schritts berücksichtigt."
@@ -1779,6 +1817,7 @@ msgstr "Transaktionseinstellungen"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transaktion gesendet"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Benutzer"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 ist auf Layer 2 nicht verfügbar. Wechseln Sie zu Layer 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool ist auf Layer 2 nicht verfügbar. Wechseln Sie zu Layer 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Im Explorer anzeigen"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Transaktion im Explorer anzeigen"
@@ -2091,7 +2132,6 @@ msgstr "Wrap"
msgid "Wrap <0/> to {0}"
msgstr "Wrap <0/> bis {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Falsches Netzwerk"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: el_GR\n"
"Language-Team: Greek\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Προσθέστε περισσότερη ρευστότητα"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Προσθήκη {0} στο Metamask <0/>"
msgid "Add {0}"
msgstr "Προσθέστε {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Προσθήκη {0}/{1} V3 ρευστότητας"
msgid "Added {0}"
msgstr "Προστέθηκε {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Η προσθήκη αυτής της πρότασης στην ουρά θα επιτρέψει την εκτέλεσή της μετά από καθυστέρηση."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "Η διεύθυνση δεν έχει διαθέσιμη διεκδίκηση"
@@ -481,6 +485,8 @@ msgstr "Επιβεβαίωση ανταλλαγής"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Επιβεβαιώστε αυτή τη συναλλαγή στο πορτοφόλι σας"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Σφάλμα"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Σφάλμα σύνδεσης"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Σφάλμα σύνδεσης. Προσπαθήστε ξανά ανανεώνοντας τη σελίδα."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Σφάλμα εισαγωγής λίστας"
@@ -759,10 +760,35 @@ msgstr "Εκτιμώμενο τέλος δικτύου"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Εκτέλεση"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Εκτέλεση της πρότασης {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Εκτέλεση της πρότασης {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Εκτελέστηκε"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "Εκτέλεση"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "Η εκτέλεση αυτής της πρότασης θα θεσπίσει τα δεδομένα κλήσης στην αλυσίδα."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Η εκτέλεση υποβλήθηκε"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Εκτεταμένα αποτελέσματα από ανενεργές Λίστες Μάρκας"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "Η τιμή που εισάγετε εκτιμήθηκε. Θα πουλήσετε το πολύ <0>{0} {1}</0> ή η συναλλαγή θα υπαναχωρήσει."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Εγκατάσταση Metamask"
msgid "Install MetaMask"
msgstr "Εγκαταστήστε το MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Μάθε περισσότερα"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Νομική και Απόρρητο"
@@ -1173,10 +1198,6 @@ msgstr "Μόλις είστε ευχαριστημένοι με τη τιμή κ
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Μόνο οι ψήφοι UNI που ανατέθηκαν αυτοπροσώπως ή ανατέθηκαν σε άλλη διεύθυνση πριν από το κλείσιμο {0} έχουν δικαίωμα ψήφου."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "Ωχ! Προέκυψε ένα άγνωστο σφάλμα. Παρακαλώ ανανεώστε τη σελίδα ή επισκεφθείτε από άλλο πρόγραμμα περιήγησης ή συσκευή."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Γέφυρα Αισιοδοξίας"
@@ -1226,10 +1247,6 @@ msgstr "Επιβεβαιώστε ότι θέλετε να καταργήσετε
msgid "Please connect to Layer 1 Ethereum"
msgstr "Συνδεθείτε στο Layer 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Συνδεθείτε σε ένα υποστηριζόμενο δίκτυο στο αναπτυσσόμενο μενού ή στο πορτοφόλι σας."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Παρακαλώ πληκτρολογήστε τη λέξη \"{confirmWord}\" για να ενεργοποιήσετε τη λειτουργία εμπειρογνωμόνων."
@@ -1347,10 +1364,27 @@ msgstr "Άτομο που κάνει προτάσεις"
msgid "Protocol Disclaimer"
msgstr "Αποποίηση ευθυνών πρωτοκόλλου"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Ουρά"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Πρόταση ουράς {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Πρόταση ουράς {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "Σε ουρά"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "Ουρά"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Τιμές"
@@ -1702,6 +1736,10 @@ msgstr "Αυτή η εφαρμογή χρησιμοποιεί τα ακόλου
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Αυτή η ομάδα πρέπει να προετοιμαστεί για να μπορέσετε να προσθέσετε ρευστότητα. Για να ξεκινήσετε, επιλέξτε μια τιμή εκκίνησης για την ομάδα. Στη συνέχεια, εισαγάγετε το εύρος τιμών ρευστότητας και το ποσό κατάθεσης. Τα τέλη φυσικού αερίου θα είναι υψηλότερα από το συνηθισμένο λόγω της αρχικής συναλλαγής."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Αυτή η πρόταση μπορεί να εκτελεστεί μετά το {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Αυτή η διαδρομή βελτιστοποιεί τη συνολική σας απόδοση λαμβάνοντας υπόψη τις διαχωρισμένες διαδρομές, τα πολλαπλά άλματα και το κόστος φυσικού αερίου κάθε βήματος."
@@ -1779,6 +1817,7 @@ msgstr "Ρυθμίσεις Συναλλαγής"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Συναλλαγή Υποβλήθηκε"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Χρήστης"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "Το V2 δεν είναι διαθέσιμο στο Layer 2. Μετάβαση στο Layer 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "Το V2 Pool δεν είναι διαθέσιμο στο Layer 2. Μετάβαση στο Layer 1 Ethereum."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Προβολή στον Explorer"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Προβολή συναλλαγής στον Explorer"
@@ -2091,7 +2132,6 @@ msgstr "Καλύπτω"
msgid "Wrap <0/> to {0}"
msgstr "Τυλίξτε <0/> προς {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Λάθος Δίκτυο"

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-06-06 00:14\n"
"PO-Revision-Date: 2022-06-30 17:10\n"
"Last-Translator: \n"
"Language: es_ES\n"
"Language-Team: Spanish\n"
@@ -164,8 +164,8 @@ msgid "Add more liquidity"
msgstr "Agrega más liquidez"
#: src/components/TransactionConfirmationModal/index.tsx
msgid "Add {0} to Metamask <0/>"
msgstr "Añadir {0} a Metamask <0/>"
msgid "Add {0}"
msgstr "Añadir {0}"
#: src/pages/Earn/Manage.tsx
msgid "Add {0}-{1} liquidity"
@@ -179,6 +179,10 @@ msgstr "Sumar liquidez {0}/{1} V3"
msgid "Added {0}"
msgstr "Añadido {0}"
#: src/components/vote/QueueModal.tsx
msgid "Adding this proposal to the queue will allow it to be executed, after a delay."
msgstr "Agregar esta propuesta a la cola permitirá que se ejecute después de un retraso."
#: src/components/claim/AddressClaimModal.tsx
msgid "Address has no available claim"
msgstr "La dirección no tiene reclamo disponible"
@@ -481,6 +485,8 @@ msgstr "Confirmar intercambio"
#: src/components/TransactionConfirmationModal/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Confirm this transaction in your wallet"
msgstr "Confirmar esta transacción en su cartera"
@@ -735,14 +741,9 @@ msgid "Error"
msgstr "Error"
#: src/components/WalletModal/PendingView.tsx
#: src/components/WalletModal/index.tsx
msgid "Error connecting"
msgstr "Error al conectar"
#: src/components/WalletModal/index.tsx
msgid "Error connecting. Try refreshing the page."
msgstr "Error de conexión. Intente actualizar la página."
#: src/components/SearchModal/ManageLists.tsx
msgid "Error importing list"
msgstr "Error importando lista"
@@ -759,10 +760,35 @@ msgstr "Tarifa de red estimada"
msgid "Etherscan"
msgstr "Etherscan"
#: src/components/vote/ExecuteModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Execute"
msgstr "Ejecutar"
#: src/components/vote/ExecuteModal.tsx
msgid "Execute Proposal {proposalId}"
msgstr "Ejecutar propuesta {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Execute proposal {proposalKey}."
msgstr "Ejecutar propuesta {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Executed"
msgstr "Ejecutado"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing"
msgstr "ejecutando"
#: src/components/vote/ExecuteModal.tsx
msgid "Executing this proposal will enact the calldata on-chain."
msgstr "La ejecución de esta propuesta promulgará los datos de llamada en la cadena."
#: src/components/vote/ExecuteModal.tsx
msgid "Execution Submitted"
msgstr "Ejecución enviada"
#: src/components/SearchModal/CurrencyList/index.tsx
msgid "Expanded results from inactive Token Lists"
msgstr "Resultados ampliados de listas de token inactivas"
@@ -898,8 +924,8 @@ msgid "Input is estimated. You will sell at most <0>{0} {1}</0> or the transacti
msgstr "La entrada es estimada. Venderá como máximo <0>{0} {1}</0> o la transacción se revertirá."
#: src/components/WalletModal/index.tsx
msgid "Install Metamask"
msgstr "Instalar Metamask"
msgid "Install MetaMask"
msgstr "Instalar MetaMask"
#: src/pages/Swap/index.tsx
msgid "Insufficient liquidity for this trade."
@@ -961,7 +987,6 @@ msgstr "Aprende más"
#: src/components/Menu/index.tsx
#: src/components/PrivacyPolicy/index.tsx
#: src/components/WalletModal/index.tsx
msgid "Legal & Privacy"
msgstr "Legal y Privacidad"
@@ -1173,10 +1198,6 @@ msgstr "Una vez que esté satisfecho con la comisión, haga clic en el suministr
msgid "Only UNI votes that were self delegated or delegated to another address before block {0} are eligible for voting."
msgstr "Solo los votos de UNI que fueron autodelegados o delegados a otra dirección antes del bloque {0} son elegibles para votar."
#: src/components/Web3ReactManager/index.tsx
msgid "Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device."
msgstr "¡Ups! Se ha producido un error desconocido. Actualice la página o acceda desde otro navegador o dispositivo."
#: src/components/Header/NetworkSelector.tsx
msgid "Optimism Bridge"
msgstr "Puente de optimismo"
@@ -1226,10 +1247,6 @@ msgstr "Confirme que desea eliminar esta lista escribiendo ELIMINAR"
msgid "Please connect to Layer 1 Ethereum"
msgstr "Conéctese a la capa 1 Ethereum"
#: src/components/WalletModal/index.tsx
msgid "Please connect to a supported network in the dropdown menu or in your wallet."
msgstr "Conéctese a una red compatible en el menú desplegable o en su billetera."
#: src/components/Settings/index.tsx
msgid "Please type the word \"{confirmWord}\" to enable expert mode."
msgstr "Escribe la palabra \"{confirmWord}\" para activar el modo experto."
@@ -1347,10 +1364,27 @@ msgstr "Proponente"
msgid "Protocol Disclaimer"
msgstr "Descargo de responsabilidad del protocolo"
#: src/components/vote/QueueModal.tsx
#: src/pages/Vote/VotePage.tsx
msgid "Queue"
msgstr "Cola"
#: src/components/vote/QueueModal.tsx
msgid "Queue Proposal {proposalId}"
msgstr "Propuesta de cola {proposalId}"
#: src/components/AccountDetails/TransactionSummary.tsx
msgid "Queue proposal {proposalKey}."
msgstr "Propuesta de cola {proposalKey}."
#: src/pages/Vote/styled.tsx
msgid "Queued"
msgstr "Puesto en cola"
#: src/components/vote/QueueModal.tsx
msgid "Queueing"
msgstr "haciendo cola"
#: src/pages/AddLiquidityV2/ConfirmAddModalBottom.tsx
msgid "Rates"
msgstr "Tarifas"
@@ -1702,6 +1736,10 @@ msgstr "Esta aplicación utiliza las siguientes API de terceros:"
msgid "This pool must be initialized before you can add liquidity. To initialize, select a starting price for the pool. Then, enter your liquidity price range and deposit amount. Gas fees will be higher than usual due to the initialization transaction."
msgstr "Este grupo debe inicializarse antes de poder agregar liquidez. Para inicializar, seleccione un precio inicial para el grupo. Luego, ingrese su rango de precio de liquidez y el monto del depósito. Las tarifas del gas serán más altas de lo habitual debido a la transacción de inicialización."
#: src/pages/Vote/VotePage.tsx
msgid "This proposal may be executed after {0}."
msgstr "Esta propuesta puede ejecutarse después de {0}."
#: src/components/swap/SwapRoute.tsx
msgid "This route optimizes your total output by considering split routes, multiple hops, and the gas cost of each step."
msgstr "Esta ruta optimiza su producción total al considerar rutas divididas, múltiples saltos y el costo de gasolina de cada paso."
@@ -1779,6 +1817,7 @@ msgstr "Ajustes de la transacción"
#: src/components/earn/StakingModal.tsx
#: src/components/earn/UnstakingModal.tsx
#: src/components/vote/DelegateModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "Transaction Submitted"
msgstr "Transacción enviada"
@@ -1933,8 +1972,8 @@ msgid "User"
msgstr "Usuario"
#: src/pages/Pool/v2.tsx
msgid "V2 is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 no está disponible en la capa 2. Cambie a la capa 1 Ethereum."
msgid "V2 Pool is not available on Layer 2. Switch to Layer 1 Ethereum."
msgstr "V2 Pool no está disponible en la Capa 2. Cambie a Ethereum de Capa 1."
#: src/pages/Pool/index.tsx
msgid "V2 liquidity"
@@ -1967,6 +2006,8 @@ msgstr "Ver en el explorador"
#: src/components/ModalViews/index.tsx
#: src/components/claim/AddressClaimModal.tsx
#: src/components/claim/ClaimModal.tsx
#: src/components/vote/ExecuteModal.tsx
#: src/components/vote/QueueModal.tsx
#: src/components/vote/VoteModal.tsx
msgid "View transaction on Explorer"
msgstr "Mostrar la transacción en el explorador"
@@ -2091,7 +2132,6 @@ msgstr "Envoltura"
msgid "Wrap <0/> to {0}"
msgstr "Envuelva <0/> a {0}"
#: src/components/WalletModal/index.tsx
#: src/components/Web3Status/index.tsx
msgid "Wrong Network"
msgstr "Red incorrecta"

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