Skip to content

Commit 6ae0847

Browse files
authored
feat(wallet): use reown for wallets management (#7639)
1 parent 7b7d528 commit 6ae0847

36 files changed

Lines changed: 704 additions & 709 deletions

apps/cowswap-frontend/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"@react-spring/web": "9.7.3",
7373
"@reown/appkit": "1.8.19",
7474
"@reown/appkit-adapter-wagmi": "1.8.19",
75+
"@reown/appkit-controllers": "1.8.19",
7576
"@reduxjs/toolkit": "1.9.5",
7677
"@safe-global/api-kit": "4.0.1",
7778
"@safe-global/types-kit": "3.0.0",

apps/cowswap-frontend/src/locales/en-US.po

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1588,6 +1588,10 @@ msgstr "Cookie Policy"
15881588
msgid "Partner fee can not be more than {PARTNER_FEE_MAX_BPS} BPS!"
15891589
msgstr "Partner fee can not be more than {PARTNER_FEE_MAX_BPS} BPS!"
15901590

1591+
#: apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx
1592+
msgid "Restoring wallet"
1593+
msgstr "Restoring wallet"
1594+
15911595
#: apps/cowswap-frontend/src/modules/tokensList/pure/TokensContent/index.tsx
15921596
#~ msgid "Manage Token Lists"
15931597
#~ msgstr "Manage Token Lists"

apps/cowswap-frontend/src/modules/application/containers/App/Updaters.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,22 @@ import {
88
TokensListsUpdater,
99
UnsupportedTokensUpdater,
1010
} from '@cowprotocol/tokens'
11-
import { useWalletInfo, WalletUpdater } from '@cowprotocol/wallet'
11+
import { useWalletInfo, WalletUpdater, WidgetStandaloneModeUpdater } from '@cowprotocol/wallet'
1212

1313
import { CowSdkUpdater } from 'cowSdk'
1414
import { useBalancesContext } from 'entities/balancesContext/useBalancesContext'
1515
import { BridgeOrdersCleanUpdater } from 'entities/bridgeOrders'
1616
import { BridgeProvidersUpdater, useBridgeSupportedNetworks } from 'entities/bridgeProvider'
1717
import { CorrelatedTokensUpdater } from 'entities/correlatedTokens'
18+
import { useInjectedWidgetParams } from 'entities/injectedWidget'
1819
import { ThemeConfigUpdater } from 'theme/ThemeConfigUpdater'
1920
import { TradingSdkUpdater } from 'tradingSdk/TradingSdkUpdater'
2021

2122
import { BalancesDevtools, CommonPriorityBalancesAndAllowancesUpdater } from 'modules/balancesAndAllowances'
2223
import { PendingBridgeOrdersUpdater, BridgingEnabledUpdater } from 'modules/bridge'
2324
import { BalancesCombinedUpdater } from 'modules/combinedBalances'
2425
import { InFlightOrderFinalizeUpdater } from 'modules/ethFlow'
25-
import { CowEventsUpdater, InjectedWidgetUpdater, WidgetStandaloneModeUpdater } from 'modules/injectedWidget'
26+
import { CowEventsUpdater, InjectedWidgetUpdater } from 'modules/injectedWidget'
2627
import { FinalizeTxUpdater } from 'modules/onchainTransactions'
2728
import {
2829
OrderProgressEventsUpdater,
@@ -77,6 +78,7 @@ export function Updaters(): ReactNode {
7778
const { chainId: sourceChainId } = useSourceChainId()
7879
const bridgeNetworkInfo = useBridgeSupportedNetworks()
7980
const balancesContext = useBalancesContext()
81+
const { standaloneMode } = useInjectedWidgetParams()
8082
const balancesAccount = balancesContext.account || account
8183

8284
return (
@@ -102,7 +104,7 @@ export function Updaters(): ReactNode {
102104
<InFlightOrderFinalizeUpdater />
103105
<SpotPricesUpdater />
104106
<InjectedWidgetUpdater />
105-
<WidgetStandaloneModeUpdater />
107+
<WidgetStandaloneModeUpdater standaloneMode={standaloneMode} />
106108
<CowEventsUpdater />
107109
<UsdPricesUpdater />
108110
<OrdersNotificationsUpdater />

apps/cowswap-frontend/src/modules/injectedWidget/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export { InjectedWidgetUpdater } from './updaters/InjectedWidgetUpdater'
22
export { CowEventsUpdater } from './updaters/CowEventsUpdater'
3-
export { WidgetStandaloneModeUpdater } from './updaters/WidgetStandaloneMode.updater'
43
export { useIsInfiniteApproveDisabledInWidget } from './hooks/useIsInfiniteApproveDisabledInWidget'
54
export { useInjectedWidgetDeadline } from './hooks/useInjectedWidgetDeadline'
65
export { useInjectedWidgetMetaData } from './hooks/useInjectedWidgetMetaData'

apps/cowswap-frontend/src/modules/injectedWidget/updaters/WidgetStandaloneMode.updater.tsx

Lines changed: 0 additions & 38 deletions
This file was deleted.

apps/cowswap-frontend/src/modules/trade/hooks/setupTradeState/useSetupTradeState.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,9 @@ export function useSetupTradeState(): void {
252252
* 4. Otherwise, navigate to the new chainId with default tokens
253253
*/
254254
useEffect(() => {
255+
// Take urlChainId directly from window.location to avoid race conditions
256+
const urlChainId = getRawCurrentChainIdFromUrl()
257+
255258
// When we came back to the tab and there is a new chainId in provider
256259
const providerChangedNetworkWhenWindowInactive =
257260
isWindowVisible && prevIsWindowVisible !== isWindowVisible && providerChainId !== urlChainId

apps/cowswap-frontend/src/modules/tradeFormValidation/hooks/useTradeFormValidationContext.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import { Nullish } from '@cowprotocol/cow-sdk'
66
import { Currency, Token } from '@cowprotocol/currency'
77
import { useENSAddress } from '@cowprotocol/ens'
88
import { useIsTradeUnsupported, useIsXstockToken, useTryFindToken } from '@cowprotocol/tokens'
9-
import { useGnosisSafeInfo, useIsTxBundlingSupported, useWalletDetails, useWalletInfo } from '@cowprotocol/wallet'
9+
import {
10+
useGnosisSafeInfo,
11+
useIsRestoringConnection,
12+
useIsTxBundlingSupported,
13+
useWalletDetails,
14+
useWalletInfo,
15+
} from '@cowprotocol/wallet'
1016

1117
import { useHasHookBridgeProvidersEnabled } from 'entities/bridgeProvider'
1218
import { useInjectedWidgetParams } from 'entities/injectedWidget'
@@ -44,6 +50,7 @@ export function useTradeFormValidationContext(): TradeFormValidationCommonContex
4450
const isProviderNetworkDeprecated = useIsProviderNetworkDeprecated()
4551
const isOnline = useIsOnline()
4652
const { isLoading: isBalancesLoading, hasFirstLoad, error: balancesError } = useTokensBalancesCombined()
53+
const isRestoringConnection = useIsRestoringConnection()
4754

4855
const { inputCurrency, outputCurrency, recipient, tradeType } = derivedTradeState || {}
4956
const customTokenError = useTokenCustomTradeError(inputCurrency, outputCurrency, tradeQuote.error)
@@ -115,6 +122,7 @@ export function useTradeFormValidationContext(): TradeFormValidationCommonContex
115122
isInputCurrencyXstock,
116123
isOutputCurrencyXstock,
117124
isNonEvmReceiverConfirmed,
125+
isRestoringConnection,
118126
}
119127
}, [
120128
hasFirstLoad,
@@ -146,6 +154,7 @@ export function useTradeFormValidationContext(): TradeFormValidationCommonContex
146154
injectedWidgetParams,
147155
tradePriceImpact,
148156
isNonEvmReceiverConfirmed,
157+
isRestoringConnection,
149158
])
150159
}
151160

apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,4 +416,7 @@ export const tradeButtonsMap: Record<TradeFormValidation, ButtonErrorConfig | Bu
416416
[TradeFormValidation.WidgetConstrainedTokenPair]: {
417417
text: <Trans>The token pair is constrained</Trans>,
418418
},
419+
[TradeFormValidation.RestoringWallet]: {
420+
text: <Trans>Restoring wallet</Trans>,
421+
},
419422
}

apps/cowswap-frontend/src/modules/tradeFormValidation/services/validateTradeForm.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export function validateTradeForm(context: TradeFormValidationContext): TradeFor
3737
injectedWidgetParams,
3838
tradePriceImpact,
3939
isNonEvmReceiverConfirmed,
40+
isRestoringConnection,
4041
} = context
4142

4243
const {
@@ -117,7 +118,9 @@ export function validateTradeForm(context: TradeFormValidationContext): TradeFor
117118
}
118119

119120
if (!isSwapUnsupported && !account) {
120-
validations.push(TradeFormValidation.WalletNotConnected)
121+
validations.push(
122+
isRestoringConnection ? TradeFormValidation.RestoringWallet : TradeFormValidation.WalletNotConnected,
123+
)
121124
}
122125

123126
if (!isSupportedWallet) {

apps/cowswap-frontend/src/modules/tradeFormValidation/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export interface TradeFormValidationCommonContext {
5858
injectedWidgetParams: Partial<CowSwapWidgetAppParams>
5959
tradePriceImpact: PriceImpact
6060
isNonEvmReceiverConfirmed: boolean
61+
isRestoringConnection: boolean
6162
}
6263

6364
export interface TradeFormValidationContext extends TradeFormValidationCommonContext {}
@@ -75,6 +76,7 @@ export enum TradeFormValidation {
7576
WalletNotSupported,
7677
SafeReadonlyUser,
7778
WalletCapabilitiesLoading,
79+
RestoringWallet,
7880

7981
// Quote request params
8082
CurrencyNotSet,

0 commit comments

Comments
 (0)