Skip to content
Merged
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 @@ -16,7 +16,7 @@ import useNativeCurrency from 'lib/hooks/useNativeCurrency'

import { CheckEthereumTransactions } from '../types'

export function usePendingTransactionsContext(): CheckEthereumTransactions | null {
export function usePendingTransactionsContext(hasPendingTxs: boolean): CheckEthereumTransactions | null {
const config = useConfig()
const { chainId, account } = useWalletInfo()
const safeInfo = useGnosisSafeInfo()
Expand All @@ -32,7 +32,7 @@ export function usePendingTransactionsContext(): CheckEthereumTransactions | nul

return useAsyncMemo(
async () => {
if (!lastBlockNumber || !account) return null
if (!lastBlockNumber || !account || !hasPendingTxs) return null

const transactionsCount = await getTransactionCount(config, { address: account })

Expand Down Expand Up @@ -66,6 +66,7 @@ export function usePendingTransactionsContext(): CheckEthereumTransactions | nul
cancelOrdersBatch,
getTwapOrderById,
safeInfo,
hasPendingTxs,
],
null,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function FinalizeTxUpdater() {

const transactions = useAllTransactionsDetails(shouldCheckFilter)

const params = usePendingTransactionsContext()
const params = usePendingTransactionsContext(transactions.length > 0)

useEffect(() => {
if (!params) return
Expand Down
22 changes: 20 additions & 2 deletions libs/wallet/src/wagmi/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,17 +166,35 @@ let wagmiAdapter: WagmiAdapter | null = null
let reownAppKit: ReturnType<typeof createAppKit> | null = null
let config: Config

// `batch.multicall` collapses concurrent single `useReadContract` calls into one
// multicall3 aggregate3 — the dominant savings for our `eth_call` budget (otherwise
// each singular contract read is its own RPC call).
// `pollingInterval` overrides viem's 4s default so block-driven hooks (BlockNumberProvider,
// useReadContracts refetches) poll once per ~mainnet block time. Cowswap's UX tolerates
// the L2 staleness this introduces because trades settle on the protocol's batch cadence.
const VIEM_CLIENT_TUNING = {
batch: {
multicall: {
wait: 130, // coalescing window in ms
batchSize: 30_000, // calldata size ceiling (30kb)
},
},
// Frequency (in ms) for polling enabled actions & events.
pollingInterval: 12_000,
} as const

if (isSafeIframe) {
// Safe App iframe: no AppKit — use a plain wagmi config with only the Safe connector.
config = createConfig({
...VIEM_CLIENT_TUNING,
connectors,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
chains: SUPPORTED_REOWN_NETWORKS as any,
chains: SUPPORTED_REOWN_NETWORKS,
storage,
transports: wagmiTransports,
})
} else {
wagmiAdapter = new WagmiAdapter({
...VIEM_CLIENT_TUNING,
connectors: connectors as ConstructorParameters<typeof WagmiAdapter>[0]['connectors'],
customRpcUrls,
networks: SUPPORTED_REOWN_NETWORKS,
Expand Down
Loading