1- import { TokenWithLogo } from '@cowprotocol/common-const'
2-
3- import { buildSelectTokenModalPropsInput , buildSelectTokenWidgetViewProps , useSelectTokenModalPropsMemo } from './controllerProps'
1+ import { buildSelectTokenModalPropsInput , SelectTokenWidgetViewProps } from './controllerProps'
42import {
53 useManageWidgetVisibility ,
64 usePoolPageHandlers ,
7- useRecentTokenSection ,
85 useTokenDataSources ,
96 useTokenSelectionHandler ,
107 useWidgetMetadata ,
@@ -17,64 +14,57 @@ import { useSelectTokenWidgetState } from '../../hooks/useSelectTokenWidgetState
1714import type { WidgetViewDependenciesResult } from './controllerDependencies'
1815import type { SelectTokenModalProps } from '../../pure/SelectTokenModal'
1916
20- const EMPTY_FAV_TOKENS : TokenWithLogo [ ] = [ ]
21-
2217interface WidgetModalPropsArgs {
2318 account : string | undefined
2419 chainsToSelect : ReturnType < typeof useChainsToSelect >
2520 displayLpTokenLists ?: boolean
2621 widgetDeps : WidgetViewDependenciesResult
2722 hasChainPanel : boolean
2823 onSelectChain : ReturnType < typeof useOnSelectChain >
29- recentTokens : ReturnType < typeof useRecentTokenSection > [ 'recentTokens' ]
3024 standalone ?: boolean
31- tokenData : ReturnType < typeof useTokenDataSources >
3225 widgetMetadata : ReturnType < typeof useWidgetMetadata >
3326 widgetState : ReturnType < typeof useSelectTokenWidgetState >
34- isInjectedWidgetMode : boolean
27+ isRouteAvailable : boolean | undefined
3528}
3629
30+ /**
31+ * Builds modal props.
32+ * Token data and context are hydrated to atom by controller - no longer passed as props.
33+ */
3734export function useWidgetModalProps ( {
3835 account,
3936 chainsToSelect,
4037 displayLpTokenLists,
4138 widgetDeps,
4239 hasChainPanel,
4340 onSelectChain,
44- recentTokens,
4541 standalone,
46- tokenData,
4742 widgetMetadata,
4843 widgetState,
49- isInjectedWidgetMode ,
44+ isRouteAvailable ,
5045} : WidgetModalPropsArgs ) : SelectTokenModalProps {
51- const favoriteTokens = standalone ? EMPTY_FAV_TOKENS : tokenData . favoriteTokens
52-
53- return useSelectTokenModalPropsMemo (
54- createSelectTokenModalProps ( {
55- account,
56- chainsPanelTitle : widgetMetadata . chainsPanelTitle ,
57- chainsState : chainsToSelect ,
58- disableErc20 : widgetMetadata . disableErc20 ,
59- displayLpTokenLists,
60- favoriteTokens,
61- handleSelectToken : widgetDeps . handleSelectToken ,
62- hasChainPanel,
63- isInjectedWidgetMode,
64- modalTitle : widgetMetadata . modalTitle ,
65- onDismiss : widgetDeps . onDismiss ,
66- onSelectChain,
67- onTokenListItemClick : widgetDeps . handleTokenListItemClick ,
68- onClearRecentTokens : widgetDeps . clearRecentTokens ,
69- onOpenManageWidget : widgetDeps . openManageWidget ,
70- openPoolPage : widgetDeps . openPoolPage ,
71- recentTokens,
72- standalone,
73- tokenData,
74- tokenListCategoryState : widgetMetadata . tokenListCategoryState ,
75- widgetState,
76- } ) ,
77- )
46+ return buildSelectTokenModalPropsInput ( {
47+ // Layout
48+ standalone,
49+ hasChainPanel,
50+ modalTitle : widgetMetadata . modalTitle ,
51+ chainsPanelTitle : widgetMetadata . chainsPanelTitle ,
52+ // Chain panel
53+ chainsState : chainsToSelect ,
54+ onSelectChain,
55+ // Widget config
56+ displayLpTokenLists,
57+ tokenListCategoryState : widgetMetadata . tokenListCategoryState ,
58+ disableErc20 : widgetMetadata . disableErc20 ,
59+ isRouteAvailable,
60+ account,
61+ // Callbacks
62+ handleSelectToken : widgetDeps . handleSelectToken ,
63+ onDismiss : widgetDeps . onDismiss ,
64+ onOpenManageWidget : widgetDeps . openManageWidget ,
65+ openPoolPage : widgetDeps . openPoolPage ,
66+ onInputPressEnter : widgetState . onInputPressEnter ,
67+ } )
7868}
7969
8070interface BuildViewPropsArgs {
@@ -87,7 +77,7 @@ interface BuildViewPropsArgs {
8777 isChainPanelEnabled : boolean
8878 onDismiss : ( ) => void
8979 onSelectChain : ReturnType < typeof useOnSelectChain >
90- selectTokenModalProps : ReturnType < typeof useSelectTokenModalPropsMemo >
80+ selectTokenModalProps : SelectTokenModalProps
9181 selectedPoolAddress : ReturnType < typeof useSelectTokenWidgetState > [ 'selectedPoolAddress' ]
9282 standalone : boolean | undefined
9383 tokenToImport : ReturnType < typeof useSelectTokenWidgetState > [ 'tokenToImport' ]
@@ -97,9 +87,7 @@ interface BuildViewPropsArgs {
9787 handleSelectToken : ReturnType < typeof useTokenSelectionHandler >
9888}
9989
100- type BuildViewPropsInput = Parameters < typeof buildSelectTokenWidgetViewProps > [ 0 ]
101-
102- export function getSelectTokenWidgetViewPropsArgs ( args : BuildViewPropsArgs ) : BuildViewPropsInput {
90+ export function getSelectTokenWidgetViewPropsArgs ( args : BuildViewPropsArgs ) : SelectTokenWidgetViewProps {
10391 const {
10492 standalone,
10593 tokenToImport,
@@ -142,73 +130,3 @@ export function getSelectTokenWidgetViewPropsArgs(args: BuildViewPropsArgs): Bui
142130 onSelectToken : handleSelectToken ,
143131 }
144132}
145-
146- function createSelectTokenModalProps ( {
147- account,
148- chainsPanelTitle,
149- chainsState,
150- disableErc20,
151- displayLpTokenLists,
152- favoriteTokens,
153- handleSelectToken,
154- hasChainPanel,
155- isInjectedWidgetMode,
156- modalTitle,
157- onDismiss,
158- onSelectChain,
159- onTokenListItemClick,
160- onClearRecentTokens,
161- onOpenManageWidget,
162- openPoolPage,
163- recentTokens,
164- standalone,
165- tokenData,
166- tokenListCategoryState,
167- widgetState,
168- } : {
169- account : string | undefined
170- chainsPanelTitle : string
171- chainsState : ReturnType < typeof useChainsToSelect >
172- disableErc20 : boolean
173- displayLpTokenLists : boolean | undefined
174- favoriteTokens : TokenWithLogo [ ]
175- handleSelectToken : ReturnType < typeof useTokenSelectionHandler >
176- hasChainPanel : boolean
177- isInjectedWidgetMode : boolean
178- modalTitle : string
179- onDismiss : ( ) => void
180- onSelectChain : ReturnType < typeof useOnSelectChain >
181- onTokenListItemClick : ReturnType < typeof useRecentTokenSection > [ 'handleTokenListItemClick' ]
182- onClearRecentTokens : ReturnType < typeof useRecentTokenSection > [ 'clearRecentTokens' ]
183- onOpenManageWidget : ReturnType < typeof useManageWidgetVisibility > [ 'openManageWidget' ]
184- openPoolPage : ReturnType < typeof usePoolPageHandlers > [ 'openPoolPage' ]
185- recentTokens : ReturnType < typeof useRecentTokenSection > [ 'recentTokens' ]
186- standalone : boolean | undefined
187- tokenData : ReturnType < typeof useTokenDataSources >
188- tokenListCategoryState : ReturnType < typeof useWidgetMetadata > [ 'tokenListCategoryState' ]
189- widgetState : ReturnType < typeof useSelectTokenWidgetState >
190- } ) : SelectTokenModalProps {
191- return buildSelectTokenModalPropsInput ( {
192- standalone,
193- displayLpTokenLists,
194- tokenData,
195- widgetState,
196- favoriteTokens,
197- recentTokens,
198- handleSelectToken,
199- onTokenListItemClick,
200- onClearRecentTokens,
201- onDismiss,
202- onOpenManageWidget,
203- openPoolPage,
204- tokenListCategoryState,
205- disableErc20,
206- account,
207- hasChainPanel,
208- chainsState,
209- chainsPanelTitle,
210- onSelectChain,
211- isInjectedWidgetMode,
212- modalTitle,
213- } )
214- }
0 commit comments