1+ import { ChainId } from '@aave/contract-helpers' ;
12import { providers , utils } from 'ethers' ;
23import { permitByChainAndToken } from 'src/ui-config/permitConfig' ;
34import {
@@ -13,6 +14,26 @@ import { NetworkConfig } from '../ui-config/networksConfig';
1314import { RootStore } from './root' ;
1415import { setQueryParameter } from './utils/queryParams' ;
1516
17+ type V37Overrides = {
18+ WETH_GATEWAY : string ;
19+ UI_POOL_DATA_PROVIDER : string ;
20+ } ;
21+
22+ const applyV37ToMarket = (
23+ market : MarketDataType ,
24+ overrides : V37Overrides | null
25+ ) : MarketDataType => {
26+ if ( ! overrides || market . chainId !== ChainId . mainnet ) return market ;
27+ return {
28+ ...market ,
29+ addresses : {
30+ ...market . addresses ,
31+ WETH_GATEWAY : overrides . WETH_GATEWAY ,
32+ UI_POOL_DATA_PROVIDER : overrides . UI_POOL_DATA_PROVIDER ,
33+ } ,
34+ } ;
35+ } ;
36+
1637type TypePermitParams = {
1738 reserveAddress : string ;
1839 isWrappedBaseAsset : boolean ;
@@ -23,8 +44,10 @@ export interface ProtocolDataSlice {
2344 currentMarketData : MarketDataType ;
2445 currentChainId : number ;
2546 currentNetworkConfig : NetworkConfig ;
47+ v37Overrides : V37Overrides | null ;
2648 jsonRpcProvider : ( chainId ?: number ) => providers . Provider ;
2749 setCurrentMarket : ( market : CustomMarket , omitQueryParameterUpdate ?: boolean ) => void ;
50+ setV37Overrides : ( overrides : V37Overrides | null ) => void ;
2851 tryPermit : ( { reserveAddress, isWrappedBaseAsset } : TypePermitParams ) => boolean ;
2952}
3053
@@ -41,10 +64,11 @@ export const createProtocolDataSlice: StateCreator<
4164 currentMarketData : marketsData [ initialMarket ] ,
4265 currentChainId : initialMarketData . chainId ,
4366 currentNetworkConfig : getNetworkConfig ( initialMarketData . chainId ) ,
67+ v37Overrides : null ,
4468 jsonRpcProvider : ( chainId ) => getProvider ( chainId ?? get ( ) . currentChainId ) ,
4569 setCurrentMarket : ( market , omitQueryParameterUpdate ) => {
4670 if ( ! availableMarkets . includes ( market as CustomMarket ) ) return ;
47- const nextMarketData = marketsData [ market ] ;
71+ const nextMarketData = applyV37ToMarket ( marketsData [ market ] , get ( ) . v37Overrides ) ;
4872 localStorage . setItem ( 'selectedMarket' , market ) ;
4973 if ( ! omitQueryParameterUpdate ) {
5074 setQueryParameter ( 'marketName' , market ) ;
@@ -56,6 +80,13 @@ export const createProtocolDataSlice: StateCreator<
5680 currentNetworkConfig : getNetworkConfig ( nextMarketData . chainId ) ,
5781 } ) ;
5882 } ,
83+ setV37Overrides : ( overrides ) => {
84+ const currentMarket = get ( ) . currentMarket ;
85+ set ( {
86+ v37Overrides : overrides ,
87+ currentMarketData : applyV37ToMarket ( marketsData [ currentMarket ] , overrides ) ,
88+ } ) ;
89+ } ,
5990 tryPermit : ( { reserveAddress, isWrappedBaseAsset } : TypePermitParams ) => {
6091 const currentNetworkConfig = get ( ) . currentNetworkConfig ;
6192 const currentMarketData = get ( ) . currentMarketData ;
0 commit comments