Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import { Connector, useConnectors } from 'wagmi'
import { CONNECTION, CONNECTION_ORDER, HardCodedConnectors, getConnectorWithId } from 'components/Web3Provider'
import { isInSafeApp } from 'utils'

const normalizeConnectorName = (name: string) => name.trim().toLowerCase()

function getInjectedConnectors(connectors: readonly Connector[]) {
let isCoinbaseWalletBrowser = false
const injectedConnectors = connectors.filter(c => {
Expand Down Expand Up @@ -47,20 +45,6 @@ function getInjectedConnectors(connectors: readonly Connector[]) {
return { injectedConnectors, isCoinbaseWalletBrowser }
}

function dedupeConnectorsByName(connectors: InjectableConnector[]) {
const seen = new Set<string>()
return connectors.filter(connector => {
const name = normalizeConnectorName(connector.name)
if (seen.has(name)) return false
seen.add(name)
return true
})
}

function getConnectorOrderId(connector: Connector) {
return HardCodedConnectors.find(c => c.id === connector.id)?.realId ?? connector.id
}

type InjectableConnector = Connector & { isInjected?: boolean }
export function useOrderedConnections(): InjectableConnector[] {
const connectors = useConnectors()
Expand All @@ -79,7 +63,7 @@ export function useOrderedConnections(): InjectableConnector[] {

let hardcodeInjectedConnectors = connectors.filter(c => hardcodedInjectedIds.includes(c.id))

let injectedConnectorsWithoutHardcoded = injectedConnectors.filter(c => {
const injectedConnectorsWithoutHardcoded = injectedConnectors.filter(c => {
return !hardcodedInjectedIds.includes(c.id)
})

Expand All @@ -101,7 +85,7 @@ export function useOrderedConnections(): InjectableConnector[] {
injectedConnectorsWithoutHardcoded.length === 2 &&
injectedConnectorsWithoutHardcoded.some(c => c.id === CONNECTION.PORTO)
) {
injectedConnectorsWithoutHardcoded = injectedConnectorsWithoutHardcoded.filter(c => c.id !== CONNECTION.PORTO)
return injectedConnectorsWithoutHardcoded.filter(c => c.id !== CONNECTION.PORTO)
}

// Special-case: Only display the Coinbase connector in the Coinbase Wallet.
Expand All @@ -118,20 +102,21 @@ export function useOrderedConnections(): InjectableConnector[] {
// Other EIP-6963 injected connectors (Rabby, Phantom, Trust, etc.) the user has installed.
orderedConnectors.push(...injectedConnectorsWithoutHardcoded)

// Add always-available connectors before applying CONNECTION_ORDER.
// WalletConnect and Coinbase are added last in the list.
orderedConnectors.push(walletConnectConnector)
orderedConnectors.push(coinbaseSdkConnector)
orderedConnectors.push(...hardcodeInjectedConnectors)

// Sort the connectors by the CONNECTION_ORDER, if not found, put at the end
orderedConnectors.sort((a, b) => {
const aIndex = CONNECTION_ORDER.indexOf(getConnectorOrderId(a) as any)
const bIndex = CONNECTION_ORDER.indexOf(getConnectorOrderId(b) as any)
const aIndex = CONNECTION_ORDER.indexOf(a.id as any)
const bIndex = CONNECTION_ORDER.indexOf(b.id as any)
if (aIndex === -1) return 1
if (bIndex === -1) return -1
return aIndex - bIndex
})

return dedupeConnectorsByName(orderedConnectors)
orderedConnectors.push(...hardcodeInjectedConnectors)

return orderedConnectors
}, [connectors])
}
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ export const CONNECTION = {
COINBASE_RDNS: 'com.coinbase.wallet',
METAMASK_SDK_CONNECTOR_ID: 'metaMaskSDK',
METAMASK_RDNS: 'io.metamask',
PHANTOM: 'app.phantom',
RABBY: 'io.rabby',
//UNISWAP_EXTENSION_RDNS: 'org.uniswap.app',
SAFE_CONNECTOR_ID: 'safe',
PORTO: 'xyz.ithaca.porto',
BINANCE: 'com.binance.wallet',
Expand All @@ -165,15 +165,14 @@ export const CONNECTION = {
export const CONNECTION_ORDER = [
CONNECTION.METAMASK_SDK_CONNECTOR_ID,
CONNECTION.METAMASK_RDNS,
CONNECTION.WALLET_CONNECT_CONNECTOR_ID,
CONNECTION.PHANTOM,
CONNECTION.RABBY,
CONNECTION.COINBASE_SDK_CONNECTOR_ID,
CONNECTION.COINBASE_RDNS,
CONNECTION.BINANCE,
CONNECTION.BITGET,
CONNECTION.SAFEPAL,
CONNECTION.PORTO,
CONNECTION.WALLET_CONNECT_CONNECTOR_ID,
]

export const CONNECTOR_ICON_OVERRIDE_MAP: { [id in string]?: string } = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ const SwapTradeRoute = ({

const titleData = useMemo(
() => ({
amountIn: inputAmount?.toSignificant(8),
amountOut: outputAmount?.toSignificant(8),
amountIn: inputAmount?.toSignificant(4),
amountOut: outputAmount?.toSignificant(4),
inputSymbol: currencyIn?.symbol,
outputSymbol: currencyOut?.symbol,
}),
Expand Down
Loading