Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
09054530c8 | ||
|
1990d42ebd | ||
|
d8977fce36 | ||
|
b766385722 | ||
|
ac4ee875f9 | ||
|
f417dbebc0 |
CODEOWNERS
cypress/e2e/wallet-connection
src
components
AccountDrawer/MiniPortfolio/Activity
Web3Provider
swap/PendingModalContent
hooks
locales
af-ZA.poar-SA.poca-ES.pocs-CZ.poda-DK.pode-DE.poel-GR.poes-ES.pofi-FI.pofr-FR.pohe-IL.pohu-HU.poid-ID.poit-IT.poja-JP.poko-KR.ponl-NL.pono-NO.popl-PL.popt-BR.popt-PT.poro-RO.poru-RU.posl-SI.posr-SP.posv-SE.posw-TZ.poth-TH.potr-TR.pouk-UA.povi-VN.pozh-CN.pozh-TW.po
state/routing
1
CODEOWNERS
Normal file
1
CODEOWNERS
Normal file
@ -0,0 +1 @@
|
||||
@uniswap/web-admins
|
@ -22,7 +22,7 @@ describe('disconnect wallet', () => {
|
||||
cy.contains('Connect Wallet')
|
||||
|
||||
// Verify swap input is cleared
|
||||
cy.get('#swap-currency-input .token-amount-input').should('have.value', '1')
|
||||
cy.get('#swap-currency-input .token-amount-input').should('have.value', '')
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -77,6 +77,7 @@ function Loader() {
|
||||
}
|
||||
|
||||
const Success = styled(AnimatedEntranceConfirmationIcon)`
|
||||
position: relative;
|
||||
margin-bottom: 10px;
|
||||
`
|
||||
|
||||
|
@ -19,7 +19,8 @@ function findCancelTx(localActivity: Activity, remoteMap: ActivityMap, account:
|
||||
if (
|
||||
remoteTx.nonce === localActivity.nonce &&
|
||||
remoteTx.from.toLowerCase() === account.toLowerCase() &&
|
||||
remoteTx.hash.toLowerCase() !== localActivity.hash.toLowerCase()
|
||||
remoteTx.hash.toLowerCase() !== localActivity.hash.toLowerCase() &&
|
||||
remoteTx.chainId === localActivity.chainId
|
||||
) {
|
||||
return remoteTx.hash
|
||||
}
|
||||
@ -37,6 +38,11 @@ function combineActivities(localMap: ActivityMap = {}, remoteMap: ActivityMap =
|
||||
const remoteActivity = (remoteMap?.[hash] ?? {}) as Activity
|
||||
|
||||
if (localActivity.cancelled) {
|
||||
// Hides misleading activities caused by cross-chain nonce collisions previously being incorrectly labelled as cancelled txs in redux
|
||||
if (localActivity.chainId !== remoteActivity.chainId) {
|
||||
acc.push(remoteActivity)
|
||||
return acc
|
||||
}
|
||||
// Remote data only contains data of the cancel tx, rather than the original tx, so we prefer local data here
|
||||
acc.push(localActivity)
|
||||
} else {
|
||||
@ -67,6 +73,7 @@ export function useAllActivities(account: string) {
|
||||
if (!localActivity) return
|
||||
|
||||
const cancelHash = findCancelTx(localActivity, remoteMap, account)
|
||||
|
||||
if (cancelHash) updateCancelledTx(localActivity.hash, localActivity.chainId, cancelHash)
|
||||
})
|
||||
}, [account, localMap, remoteMap, updateCancelledTx])
|
||||
|
@ -10,7 +10,7 @@ import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/tra
|
||||
import useEagerlyConnect from 'hooks/useEagerlyConnect'
|
||||
import useOrderedConnections from 'hooks/useOrderedConnections'
|
||||
import usePrevious from 'hooks/usePrevious'
|
||||
import { ReactNode, useEffect } from 'react'
|
||||
import { ReactNode, useEffect, useMemo, useState } from 'react'
|
||||
import { useLocation } from 'react-router-dom'
|
||||
import { useConnectedWallets } from 'state/wallets/hooks'
|
||||
import { getCurrentPageFromLocation } from 'utils/urlRoutes'
|
||||
@ -20,8 +20,16 @@ export default function Web3Provider({ children }: { children: ReactNode }) {
|
||||
const connections = useOrderedConnections()
|
||||
const connectors: [Connector, Web3ReactHooks][] = connections.map(({ hooks, connector }) => [connector, hooks])
|
||||
|
||||
// Force a re-render when our connection state changes.
|
||||
const [index, setIndex] = useState(0)
|
||||
useEffect(() => setIndex((index) => index + 1), [connections])
|
||||
const key = useMemo(
|
||||
() => connections.map((connection) => connection.getName()).join('-') + index,
|
||||
[connections, index]
|
||||
)
|
||||
|
||||
return (
|
||||
<Web3ReactProvider connectors={connectors}>
|
||||
<Web3ReactProvider connectors={connectors} key={key}>
|
||||
<Updater />
|
||||
{children}
|
||||
</Web3ReactProvider>
|
||||
|
@ -265,13 +265,10 @@ export function PendingModalContent({
|
||||
const { chainId } = useWeb3React()
|
||||
|
||||
const swapStatus = useSwapTransactionStatus(swapResult)
|
||||
const order = useOrder(swapResult?.type === TradeFillType.UniswapX ? swapResult.response.orderHash : '')
|
||||
|
||||
const classicSwapConfirmed = swapStatus === TransactionStatus.Confirmed
|
||||
const swapConfirmed = swapStatus === TransactionStatus.Confirmed || order?.status === UniswapXOrderStatus.FILLED
|
||||
const wrapConfirmed = useIsTransactionConfirmed(wrapTxHash)
|
||||
// TODO(UniswapX): Support UniswapX status here too
|
||||
const uniswapXSwapConfirmed = Boolean(swapResult)
|
||||
|
||||
const swapConfirmed = swapResult?.type === TradeFillType.Classic ? classicSwapConfirmed : uniswapXSwapConfirmed
|
||||
|
||||
const swapPending = swapResult !== undefined && !swapConfirmed
|
||||
const wrapPending = wrapTxHash != undefined && !wrapConfirmed
|
||||
@ -288,8 +285,6 @@ export function PendingModalContent({
|
||||
chainId,
|
||||
})
|
||||
|
||||
const order = useOrder(swapResult?.type === TradeFillType.UniswapX ? swapResult.response.orderHash : '')
|
||||
|
||||
const currentStepContainerRef = useRef<HTMLDivElement>(null)
|
||||
useUnmountingAnimation(currentStepContainerRef, () => AnimationType.EXITING)
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { getConnection } from 'connection'
|
||||
import { ConnectionType } from 'connection/types'
|
||||
import { useMemo } from 'react'
|
||||
import { useAppSelector } from 'state/hooks'
|
||||
|
||||
const SELECTABLE_WALLETS = [
|
||||
ConnectionType.UNISWAP_WALLET_V2,
|
||||
@ -10,17 +11,23 @@ const SELECTABLE_WALLETS = [
|
||||
]
|
||||
|
||||
export default function useOrderedConnections() {
|
||||
const selectedWallet = useAppSelector((state) => state.user.selectedWallet)
|
||||
|
||||
return useMemo(() => {
|
||||
const orderedConnectionTypes: ConnectionType[] = []
|
||||
|
||||
// Always attempt to use to Gnosis Safe first, as we can't know if we're in a SafeContext.
|
||||
orderedConnectionTypes.push(ConnectionType.GNOSIS_SAFE)
|
||||
|
||||
orderedConnectionTypes.push(...SELECTABLE_WALLETS)
|
||||
// Add the `selectedWallet` to the top so it's prioritized, then add the other selectable wallets.
|
||||
if (selectedWallet) {
|
||||
orderedConnectionTypes.push(selectedWallet)
|
||||
}
|
||||
orderedConnectionTypes.push(...SELECTABLE_WALLETS.filter((wallet) => wallet !== selectedWallet))
|
||||
|
||||
// Add network connection last as it should be the fallback.
|
||||
orderedConnectionTypes.push(ConnectionType.NETWORK)
|
||||
|
||||
return orderedConnectionTypes.map((connectionType) => getConnection(connectionType))
|
||||
}, [])
|
||||
}, [selectedWallet])
|
||||
}
|
||||
|
3701
src/locales/af-ZA.po
Normal file
3701
src/locales/af-ZA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ar-SA.po
Normal file
3701
src/locales/ar-SA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ca-ES.po
Normal file
3701
src/locales/ca-ES.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/cs-CZ.po
Normal file
3701
src/locales/cs-CZ.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/da-DK.po
Normal file
3701
src/locales/da-DK.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/de-DE.po
Normal file
3701
src/locales/de-DE.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/el-GR.po
Normal file
3701
src/locales/el-GR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/es-ES.po
Normal file
3701
src/locales/es-ES.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/fi-FI.po
Normal file
3701
src/locales/fi-FI.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/fr-FR.po
Normal file
3701
src/locales/fr-FR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/he-IL.po
Normal file
3701
src/locales/he-IL.po
Normal file
File diff suppressed because it is too large
Load Diff
3702
src/locales/hu-HU.po
Normal file
3702
src/locales/hu-HU.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/id-ID.po
Normal file
3701
src/locales/id-ID.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/it-IT.po
Normal file
3701
src/locales/it-IT.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ja-JP.po
Normal file
3701
src/locales/ja-JP.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ko-KR.po
Normal file
3701
src/locales/ko-KR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/nl-NL.po
Normal file
3701
src/locales/nl-NL.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/no-NO.po
Normal file
3701
src/locales/no-NO.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pl-PL.po
Normal file
3701
src/locales/pl-PL.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pt-BR.po
Normal file
3701
src/locales/pt-BR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pt-PT.po
Normal file
3701
src/locales/pt-PT.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ro-RO.po
Normal file
3701
src/locales/ro-RO.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ru-RU.po
Normal file
3701
src/locales/ru-RU.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sl-SI.po
Normal file
3701
src/locales/sl-SI.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sr-SP.po
Normal file
3701
src/locales/sr-SP.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sv-SE.po
Normal file
3701
src/locales/sv-SE.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sw-TZ.po
Normal file
3701
src/locales/sw-TZ.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/th-TH.po
Normal file
3701
src/locales/th-TH.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/tr-TR.po
Normal file
3701
src/locales/tr-TR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/uk-UA.po
Normal file
3701
src/locales/uk-UA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/vi-VN.po
Normal file
3701
src/locales/vi-VN.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/zh-CN.po
Normal file
3701
src/locales/zh-CN.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/zh-TW.po
Normal file
3701
src/locales/zh-TW.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -128,8 +128,9 @@ export const routingApi = createApi({
|
||||
)
|
||||
},
|
||||
async queryFn(args, _api, _extraOptions, fetch) {
|
||||
const fellBack = false
|
||||
let fellBack = false
|
||||
if (shouldUseAPIRouter(args)) {
|
||||
fellBack = true
|
||||
try {
|
||||
const {
|
||||
tokenInAddress,
|
||||
|
Loading…
x
Reference in New Issue
Block a user