Skip to content

Commit 8ce5eff

Browse files
authored
Merge pull request #6229 from cowprotocol/release/2025-09-10
Release/2025 09 10
2 parents 5e1d5e9 + 159b199 commit 8ce5eff

File tree

166 files changed

+962
-6358
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+962
-6358
lines changed

apps/cowswap-frontend-e2e/src/e2e/fee.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GetQuoteResponse } from '@cowprotocol/contracts'
1+
import { GetQuoteResponse } from '@cowprotocol/cow-sdk'
22

33
import { parseUnits } from 'ethers/lib/utils'
44

apps/cowswap-frontend/.env

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,10 @@ INTEGRATION_TESTS_INFURA_KEY=
132132

133133
# Path regex (to detect environment)
134134
# REACT_APP_PATH_REGEX_ENS="/ipfs"
135+
136+
137+
# CMS base URL
138+
# REACT_APP_CMS_BASE_URL=http://localhost:1337/api
139+
140+
# Notifications Telegram bot ID
141+
# REACT_APP_TG_BOT_ID=3713371337

apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ReactElement, useEffect, useMemo, useState } from 'react'
22

3-
import { latest } from '@cowprotocol/app-data'
3+
import { cowAppDataLatestScheme } from '@cowprotocol/cow-sdk'
44
import { CowHookDetails, HookToDappMatch, matchHooksToDappsRegistry } from '@cowprotocol/hook-dapp-lib'
55
import { InfoTooltip } from '@cowprotocol/ui'
66

@@ -44,7 +44,7 @@ export function OrderHooksDetails({ appData, children, margin, isTradeConfirmati
4444

4545
if (!appDataDoc) return null
4646

47-
const metadata = appDataDoc.metadata as latest.Metadata
47+
const metadata = appDataDoc.metadata as cowAppDataLatestScheme.Metadata
4848

4949
const hasSomeFailedSimulation = isTradeConfirmation && Object.values(data || {}).some((hook) => !hook.status)
5050

apps/cowswap-frontend/src/common/hooks/useBridgeOrderOutputToken.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { useMemo } from 'react'
22

3-
import { TokenWithLogo } from '@cowprotocol/common-const'
4-
import { CrossChainOrder } from '@cowprotocol/cow-sdk'
5-
import { Nullish } from '@cowprotocol/types'
3+
import type { TokenWithLogo } from '@cowprotocol/common-const'
4+
import type { CrossChainOrder } from '@cowprotocol/sdk-bridging'
5+
import type { Nullish } from '@cowprotocol/types'
66

77
import { useBridgeSupportedTokens } from 'entities/bridgeProvider'
88

apps/cowswap-frontend/src/common/hooks/useSwapAndBridgeContext.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { useMemo } from 'react'
22

33
import { getChainInfo, TokenWithLogo } from '@cowprotocol/common-const'
4-
import { BridgeStatus, SupportedChainId } from '@cowprotocol/cow-sdk'
4+
import { SupportedChainId } from '@cowprotocol/cow-sdk'
5+
import { BridgeStatus } from '@cowprotocol/sdk-bridging'
56
import { useTokensByAddressMap } from '@cowprotocol/tokens'
67
import { useWalletInfo } from '@cowprotocol/wallet'
78
import { CurrencyAmount } from '@uniswap/sdk-core'
@@ -60,13 +61,13 @@ export function useSwapAndBridgeContext(
6061
// If not available (common in fresh sessions), create a fallback token from order data
6162
const intermediateToken = useMemo(() => {
6263
if (!order) return undefined
63-
64+
6465
// Primary: Try to get from tokensByAddress map (enriched with logos, etc.)
6566
const enrichedToken = tokensByAddress[order.buyToken.toLowerCase()]
6667
if (enrichedToken) {
6768
return enrichedToken
6869
}
69-
70+
7071
// Fallback: Create basic TokenWithLogo from order data when tokensByAddress isn't populated yet
7172
// This allows bridge functionality to work in fresh sessions while token lists are loading
7273
return TokenWithLogo.fromToken({

apps/cowswap-frontend/src/common/updaters/BridgingEnabledUpdater.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,17 @@ export function BridgingEnabledUpdater(): null {
1515

1616
const isSwapRoute = tradeTypeInfo?.route === Routes.SWAP
1717

18+
function shouldEnableBridging(
19+
featureFlagEnabled: boolean,
20+
scWallet: boolean | undefined,
21+
swapRoute: boolean,
22+
): boolean {
23+
// Only enable bridging once we definitively know it's an EOA (strict false)
24+
return featureFlagEnabled && scWallet === false && swapRoute
25+
}
26+
1827
useEffect(() => {
19-
setIsBridgingEnabled(isBridgingEnabled && !isSmartContractWallet && isSwapRoute)
28+
setIsBridgingEnabled(shouldEnableBridging(isBridgingEnabled, isSmartContractWallet, isSwapRoute))
2029
}, [setIsBridgingEnabled, isBridgingEnabled, isSmartContractWallet, isSwapRoute])
2130

2231
return null
Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,39 @@
1-
import { MetadataApi } from '@cowprotocol/app-data'
2-
import { isBarnBackendEnv } from '@cowprotocol/common-utils'
3-
import { DEFAULT_BACKOFF_OPTIONS, OrderBookApi } from '@cowprotocol/cow-sdk'
1+
import { useEffect } from 'react'
42

3+
import { getRpcProvider } from '@cowprotocol/common-const'
4+
import { getCurrentChainIdFromUrl, isBarnBackendEnv } from '@cowprotocol/common-utils'
5+
import { DEFAULT_BACKOFF_OPTIONS, MetadataApi, OrderBookApi, setGlobalAdapter } from '@cowprotocol/cow-sdk'
6+
import { EthersV5Adapter } from '@cowprotocol/sdk-ethers-v5-adapter'
7+
import { useWeb3React } from '@web3-react/core'
8+
9+
const chainId = getCurrentChainIdFromUrl()
510
const prodBaseUrls = process.env.REACT_APP_ORDER_BOOK_URLS
611
? JSON.parse(process.env.REACT_APP_ORDER_BOOK_URLS)
712
: undefined
813

9-
export const metadataApiSDK = new MetadataApi()
14+
export const adapter = new EthersV5Adapter({
15+
provider: getRpcProvider(chainId)!,
16+
})
17+
18+
setGlobalAdapter(adapter)
19+
1020
export const orderBookApi = new OrderBookApi({
1121
env: isBarnBackendEnv ? 'staging' : 'prod',
1222
...(prodBaseUrls ? { baseUrls: prodBaseUrls } : undefined),
1323
backoffOpts: DEFAULT_BACKOFF_OPTIONS,
1424
})
25+
26+
export const metadataApiSDK = new MetadataApi()
27+
28+
export function CowSdkUpdater(): null {
29+
const { chainId, provider, account } = useWeb3React()
30+
31+
useEffect(() => {
32+
if (!provider) return
33+
34+
adapter.setProvider(provider)
35+
adapter.setSigner(provider.getSigner())
36+
}, [chainId, account, provider])
37+
38+
return null
39+
}

apps/cowswap-frontend/src/entities/bridgeOrders/hooks/useCrossChainOrder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { SupportedChainId, CrossChainOrder, BridgeStatus } from '@cowprotocol/cow-sdk'
1+
import { SupportedChainId } from '@cowprotocol/cow-sdk'
2+
import { CrossChainOrder, BridgeStatus } from '@cowprotocol/sdk-bridging'
23

34
import ms from 'ms.macro'
45
import useSWR, { SWRConfiguration, SWRResponse } from 'swr'

apps/cowswap-frontend/src/entities/bridgeOrders/hooks/useUpdateBridgeOrderQuote.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useSetAtom } from 'jotai/index'
22
import { useCallback } from 'react'
33

4-
import { BridgeStatusResult } from '@cowprotocol/cow-sdk'
4+
import { BridgeStatusResult } from '@cowprotocol/sdk-bridging'
55
import { useWalletInfo } from '@cowprotocol/wallet'
66

77
import { bridgeOrdersAtom } from '../state/bridgeOrdersAtom'

apps/cowswap-frontend/src/entities/bridgeProvider/useBridgeSupportedTokens.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { SWR_NO_REFRESH_OPTIONS, TokenWithLogo } from '@cowprotocol/common-const'
22
import { useIsBridgingEnabled } from '@cowprotocol/common-hooks'
3-
import { BuyTokensParams, GetProviderBuyTokens } from '@cowprotocol/cow-sdk'
3+
import { BuyTokensParams, GetProviderBuyTokens } from '@cowprotocol/sdk-bridging'
44

55
import useSWR, { SWRResponse } from 'swr'
66

0 commit comments

Comments
 (0)